aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
Diffstat (limited to 'library')
-rw-r--r--library/HTMLPurifier.autoload.php8
-rw-r--r--library/HTMLPurifier.composer.php4
-rw-r--r--library/HTMLPurifier.func.php8
-rw-r--r--library/HTMLPurifier.includes.php21
-rw-r--r--library/HTMLPurifier.kses.php4
-rw-r--r--library/HTMLPurifier.php137
-rw-r--r--library/HTMLPurifier.safe-includes.php19
-rw-r--r--library/HTMLPurifier/Arborize.php71
-rw-r--r--library/HTMLPurifier/AttrCollections.php53
-rw-r--r--library/HTMLPurifier/AttrDef.php53
-rw-r--r--library/HTMLPurifier/AttrDef/CSS.php39
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/AlphaValue.php27
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Background.php60
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php54
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Border.php21
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Color.php67
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Composite.php22
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php28
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Filter.php49
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Font.php89
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/FontFamily.php185
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Ident.php32
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php28
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Length.php60
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/ListStyle.php78
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Multiple.php31
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Number.php45
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Percentage.php36
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/TextDecoration.php20
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/URI.php38
-rw-r--r--library/HTMLPurifier/AttrDef/Clone.php44
-rw-r--r--library/HTMLPurifier/AttrDef/Enum.php28
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Bool.php35
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Class.php22
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Color.php45
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/FrameTarget.php25
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/ID.php71
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Length.php41
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/LinkTypes.php43
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/MultiLength.php51
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Nmtokens.php40
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Pixels.php60
-rw-r--r--library/HTMLPurifier/AttrDef/Integer.php56
-rw-r--r--library/HTMLPurifier/AttrDef/Lang.php39
-rw-r--r--library/HTMLPurifier/AttrDef/Switch.php27
-rw-r--r--library/HTMLPurifier/AttrDef/Text.php10
-rw-r--r--library/HTMLPurifier/AttrDef/URI.php72
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Email.php5
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php14
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Host.php104
-rw-r--r--library/HTMLPurifier/AttrDef/URI/IPv4.php28
-rw-r--r--library/HTMLPurifier/AttrDef/URI/IPv6.php106
-rw-r--r--library/HTMLPurifier/AttrTransform.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Background.php21
-rw-r--r--library/HTMLPurifier/AttrTransform/BdoDir.php14
-rw-r--r--library/HTMLPurifier/AttrTransform/BgColor.php21
-rw-r--r--library/HTMLPurifier/AttrTransform/BoolToCSS.php33
-rw-r--r--library/HTMLPurifier/AttrTransform/Border.php18
-rw-r--r--library/HTMLPurifier/AttrTransform/EnumToCSS.php46
-rw-r--r--library/HTMLPurifier/AttrTransform/ImgRequired.php19
-rw-r--r--library/HTMLPurifier/AttrTransform/ImgSpace.php39
-rw-r--r--library/HTMLPurifier/AttrTransform/Input.php34
-rw-r--r--library/HTMLPurifier/AttrTransform/Lang.php15
-rw-r--r--library/HTMLPurifier/AttrTransform/Length.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Name.php22
-rw-r--r--library/HTMLPurifier/AttrTransform/NameSync.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Nofollow.php52
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeEmbed.php12
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeObject.php16
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeParam.php29
-rw-r--r--library/HTMLPurifier/AttrTransform/ScriptRequired.php9
-rw-r--r--library/HTMLPurifier/AttrTransform/TargetBlank.php45
-rw-r--r--library/HTMLPurifier/AttrTransform/Textarea.php19
-rw-r--r--library/HTMLPurifier/AttrTypes.php45
-rw-r--r--library/HTMLPurifier/AttrValidator.php66
-rw-r--r--library/HTMLPurifier/Bootstrap.php90
-rw-r--r--library/HTMLPurifier/CSSDefinition.php452
-rw-r--r--library/HTMLPurifier/ChildDef.php26
-rw-r--r--library/HTMLPurifier/ChildDef/Chameleon.php33
-rw-r--r--library/HTMLPurifier/ChildDef/Custom.php56
-rw-r--r--library/HTMLPurifier/ChildDef/Empty.php22
-rw-r--r--library/HTMLPurifier/ChildDef/List.php86
-rw-r--r--library/HTMLPurifier/ChildDef/Optional.php31
-rw-r--r--library/HTMLPurifier/ChildDef/Required.php103
-rw-r--r--library/HTMLPurifier/ChildDef/StrictBlockquote.php96
-rw-r--r--library/HTMLPurifier/ChildDef/Table.php302
-rw-r--r--library/HTMLPurifier/Config.php681
-rw-r--r--library/HTMLPurifier/ConfigSchema.php78
-rw-r--r--library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php8
-rw-r--r--library/HTMLPurifier/ConfigSchema/Builder/Xml.php94
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange.php11
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange/Directive.php28
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange/Id.php33
-rw-r--r--library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php90
-rw-r--r--library/HTMLPurifier/ConfigSchema/Validator.php90
-rw-r--r--library/HTMLPurifier/ConfigSchema/ValidatorAtom.php108
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema.serbin13244 -> 15000 bytes
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt12
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt13
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt9
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt16
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt3
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt14
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt9
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt6
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt5
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt10
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt15
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt17
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt7
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt13
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt10
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt8
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt1
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt15
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt4
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt7
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt2
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt22
-rw-r--r--library/HTMLPurifier/ContentSets.php55
-rw-r--r--library/HTMLPurifier/Context.php61
-rw-r--r--library/HTMLPurifier/Definition.php26
-rw-r--r--library/HTMLPurifier/DefinitionCache.php57
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator.php76
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php61
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Memory.php65
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in59
-rw-r--r--library/HTMLPurifier/DefinitionCache/Null.php53
-rw-r--r--library/HTMLPurifier/DefinitionCache/Serializer.php235
-rwxr-xr-x[-rw-r--r--]library/HTMLPurifier/DefinitionCache/Serializer/README0
-rw-r--r--library/HTMLPurifier/DefinitionCacheFactory.php47
-rw-r--r--library/HTMLPurifier/Doctype.php17
-rw-r--r--library/HTMLPurifier/DoctypeRegistry.php87
-rw-r--r--library/HTMLPurifier/ElementDef.php85
-rw-r--r--library/HTMLPurifier/Encoder.php301
-rw-r--r--library/HTMLPurifier/EntityLookup.php16
-rw-r--r--library/HTMLPurifier/EntityLookup/entities.ser2
-rw-r--r--library/HTMLPurifier/EntityParser.php53
-rw-r--r--library/HTMLPurifier/ErrorCollector.php87
-rw-r--r--library/HTMLPurifier/ErrorStruct.php20
-rw-r--r--library/HTMLPurifier/Filter.php18
-rw-r--r--library/HTMLPurifier/Filter/ExtractStyleBlocks.php257
-rw-r--r--library/HTMLPurifier/Filter/YouTube.php56
-rw-r--r--library/HTMLPurifier/Generator.php164
-rw-r--r--library/HTMLPurifier/HTMLDefinition.php211
-rw-r--r--library/HTMLPurifier/HTMLModule.php122
-rw-r--r--library/HTMLPurifier/HTMLModule/Bdo.php21
-rw-r--r--library/HTMLPurifier/HTMLModule/CommonAttributes.php7
-rw-r--r--library/HTMLPurifier/HTMLModule/Edit.php25
-rw-r--r--library/HTMLPurifier/HTMLModule/Forms.php216
-rw-r--r--library/HTMLPurifier/HTMLModule/Hypertext.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Iframe.php51
-rw-r--r--library/HTMLPurifier/HTMLModule/Image.php17
-rw-r--r--library/HTMLPurifier/HTMLModule/Legacy.php89
-rw-r--r--library/HTMLPurifier/HTMLModule/List.php28
-rw-r--r--library/HTMLPurifier/HTMLModule/Name.php13
-rw-r--r--library/HTMLPurifier/HTMLModule/Nofollow.php25
-rw-r--r--library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php6
-rw-r--r--library/HTMLPurifier/HTMLModule/Object.php31
-rw-r--r--library/HTMLPurifier/HTMLModule/Presentation.php26
-rw-r--r--library/HTMLPurifier/HTMLModule/Proprietary.php19
-rw-r--r--library/HTMLPurifier/HTMLModule/Ruby.php17
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeEmbed.php20
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeObject.php33
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeScripting.php40
-rw-r--r--library/HTMLPurifier/HTMLModule/Scripting.php31
-rw-r--r--library/HTMLPurifier/HTMLModule/StyleAttribute.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tables.php29
-rw-r--r--library/HTMLPurifier/HTMLModule/Target.php11
-rw-r--r--library/HTMLPurifier/HTMLModule/TargetBlank.php24
-rw-r--r--library/HTMLPurifier/HTMLModule/Text.php56
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy.php85
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Name.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php14
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Strict.php28
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Transitional.php7
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/XHTML.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php146
-rw-r--r--library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php6
-rw-r--r--library/HTMLPurifier/HTMLModuleManager.php166
-rw-r--r--library/HTMLPurifier/IDAccumulator.php24
-rw-r--r--library/HTMLPurifier/Injector.php198
-rw-r--r--library/HTMLPurifier/Injector/AutoParagraph.php99
-rw-r--r--library/HTMLPurifier/Injector/DisplayLinkURI.php22
-rw-r--r--library/HTMLPurifier/Injector/Linkify.php27
-rw-r--r--library/HTMLPurifier/Injector/PurifierLinkify.php46
-rw-r--r--library/HTMLPurifier/Injector/RemoveEmpty.php82
-rw-r--r--library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php36
-rw-r--r--library/HTMLPurifier/Injector/SafeObject.php53
-rw-r--r--library/HTMLPurifier/Language.php97
-rw-r--r--library/HTMLPurifier/Language/classes/en-x-test.php3
-rw-r--r--library/HTMLPurifier/Language/messages/en.php90
-rw-r--r--library/HTMLPurifier/LanguageFactory.php81
-rw-r--r--library/HTMLPurifier/Length.php91
-rw-r--r--library/HTMLPurifier/Lexer.php191
-rw-r--r--library/HTMLPurifier/Lexer/DOMLex.php161
-rw-r--r--library/HTMLPurifier/Lexer/DirectLex.php217
-rw-r--r--library/HTMLPurifier/Lexer/PEARSax3.php139
-rw-r--r--library/HTMLPurifier/Lexer/PH5P.php4324
-rw-r--r--library/HTMLPurifier/Node.php49
-rw-r--r--library/HTMLPurifier/Node/Comment.php36
-rw-r--r--library/HTMLPurifier/Node/Element.php59
-rw-r--r--library/HTMLPurifier/Node/Text.php54
-rw-r--r--library/HTMLPurifier/PercentEncoder.php37
-rw-r--r--library/HTMLPurifier/Printer.php134
-rw-r--r--library/HTMLPurifier/Printer/CSSDefinition.php12
-rw-r--r--library/HTMLPurifier/Printer/ConfigForm.php257
-rw-r--r--library/HTMLPurifier/Printer/HTMLDefinition.php214
-rw-r--r--library/HTMLPurifier/PropertyList.php68
-rw-r--r--library/HTMLPurifier/PropertyListIterator.php22
-rw-r--r--library/HTMLPurifier/Queue.php56
-rw-r--r--library/HTMLPurifier/Strategy.php8
-rw-r--r--library/HTMLPurifier/Strategy/Composite.php13
-rw-r--r--library/HTMLPurifier/Strategy/Core.php5
-rw-r--r--library/HTMLPurifier/Strategy/FixNesting.php349
-rw-r--r--library/HTMLPurifier/Strategy/MakeWellFormed.php379
-rw-r--r--library/HTMLPurifier/Strategy/RemoveForeignElements.php94
-rw-r--r--library/HTMLPurifier/Strategy/ValidateAttributes.php22
-rw-r--r--library/HTMLPurifier/StringHash.php16
-rw-r--r--library/HTMLPurifier/StringHashParser.php52
-rw-r--r--library/HTMLPurifier/TagTransform.php15
-rw-r--r--library/HTMLPurifier/TagTransform/Font.php42
-rw-r--r--library/HTMLPurifier/TagTransform/Simple.php21
-rw-r--r--library/HTMLPurifier/Token.php81
-rw-r--r--library/HTMLPurifier/Token/Comment.php24
-rw-r--r--library/HTMLPurifier/Token/Empty.php6
-rw-r--r--library/HTMLPurifier/Token/End.php9
-rw-r--r--library/HTMLPurifier/Token/Start.php1
-rw-r--r--library/HTMLPurifier/Token/Tag.php22
-rw-r--r--library/HTMLPurifier/Token/Text.php34
-rw-r--r--library/HTMLPurifier/TokenFactory.php80
-rw-r--r--library/HTMLPurifier/URI.php257
-rw-r--r--library/HTMLPurifier/URIDefinition.php39
-rw-r--r--library/HTMLPurifier/URIFilter.php45
-rw-r--r--library/HTMLPurifier/URIFilter/DisableExternal.php45
-rw-r--r--library/HTMLPurifier/URIFilter/DisableExternalResources.php17
-rw-r--r--library/HTMLPurifier/URIFilter/DisableResources.php22
-rw-r--r--library/HTMLPurifier/URIFilter/HostBlacklist.php31
-rw-r--r--library/HTMLPurifier/URIFilter/MakeAbsolute.php74
-rw-r--r--library/HTMLPurifier/URIFilter/Munge.php91
-rw-r--r--library/HTMLPurifier/URIFilter/SafeIframe.php68
-rw-r--r--library/HTMLPurifier/URIParser.php9
-rw-r--r--library/HTMLPurifier/URIScheme.php88
-rw-r--r--library/HTMLPurifier/URIScheme/data.php58
-rw-r--r--library/HTMLPurifier/URIScheme/file.php44
-rw-r--r--library/HTMLPurifier/URIScheme/ftp.php29
-rw-r--r--library/HTMLPurifier/URIScheme/http.php26
-rw-r--r--library/HTMLPurifier/URIScheme/https.php12
-rw-r--r--library/HTMLPurifier/URIScheme/mailto.php23
-rw-r--r--library/HTMLPurifier/URIScheme/news.php29
-rw-r--r--library/HTMLPurifier/URIScheme/nntp.php24
-rw-r--r--library/HTMLPurifier/URISchemeRegistry.php41
-rw-r--r--library/HTMLPurifier/UnitConverter.php117
-rw-r--r--library/HTMLPurifier/VarParser.php152
-rw-r--r--library/HTMLPurifier/VarParser/Flexible.php88
-rw-r--r--library/HTMLPurifier/VarParser/Native.php18
-rw-r--r--library/HTMLPurifier/Zipper.php157
-rw-r--r--library/colorbox/README.md330
-rw-r--r--library/colorbox/bower.json42
-rw-r--r--library/colorbox/colorbox.css52
-rw-r--r--library/colorbox/colorbox.jquery.json30
-rw-r--r--library/colorbox/component.json8
-rw-r--r--library/colorbox/content/daisy.jpgbin0 -> 101126 bytes
-rw-r--r--library/colorbox/content/daisy@2x.jpgbin0 -> 335898 bytes
-rw-r--r--library/colorbox/content/homer.jpgbin8917 -> 8584 bytes
-rw-r--r--library/colorbox/content/marylou.jpgbin55125 -> 52286 bytes
-rw-r--r--library/colorbox/content/ohoopee1.jpgbin74827 -> 71685 bytes
-rw-r--r--library/colorbox/content/ohoopee2.jpgbin117411 -> 111141 bytes
-rw-r--r--library/colorbox/content/ohoopee3.jpgbin71514 -> 69240 bytes
-rw-r--r--library/colorbox/example1/colorbox.css52
-rw-r--r--library/colorbox/example1/images/border.pngbin112 -> 76 bytes
-rw-r--r--library/colorbox/example1/images/controls.pngbin2893 -> 1261 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomCenter.pngbin111 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomLeft.pngbin215 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomRight.pngbin217 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderMiddleLeft.pngbin108 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderMiddleRight.pngbin108 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopCenter.pngbin111 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopLeft.pngbin216 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopRight.pngbin214 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/loading.gifbin9427 -> 8685 bytes
-rw-r--r--library/colorbox/example1/images/loading_background.pngbin157 -> 131 bytes
-rw-r--r--library/colorbox/example1/images/overlay.pngbin182 -> 115 bytes
-rw-r--r--library/colorbox/example1/index.html22
-rw-r--r--library/colorbox/example2/colorbox.css25
-rw-r--r--library/colorbox/example2/images/controls.pngbin570 -> 503 bytes
-rw-r--r--library/colorbox/example2/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example2/index.html22
-rw-r--r--library/colorbox/example3/colorbox.css29
-rw-r--r--library/colorbox/example3/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example3/index.html22
-rw-r--r--library/colorbox/example4/colorbox.css50
-rw-r--r--library/colorbox/example4/images/border1.pngbin1057 -> 629 bytes
-rw-r--r--library/colorbox/example4/images/border2.pngbin170 -> 112 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomCenter.pngbin153 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomLeft.pngbin473 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomRight.pngbin470 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderMiddleLeft.pngbin148 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderMiddleRight.pngbin139 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopCenter.pngbin153 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopLeft.pngbin359 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopRight.pngbin465 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example4/index.html22
-rw-r--r--library/colorbox/example5/colorbox.css22
-rw-r--r--library/colorbox/example5/images/border.pngbin163 -> 139 bytes
-rw-r--r--library/colorbox/example5/images/controls.pngbin2033 -> 2027 bytes
-rw-r--r--library/colorbox/example5/images/loading.gifbin9427 -> 8685 bytes
-rw-r--r--library/colorbox/example5/images/loading_background.pngbin166 -> 131 bytes
-rw-r--r--library/colorbox/example5/index.html22
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ar.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-bg.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-bn.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ca.js13
-rw-r--r--library/colorbox/i18n/jquery.colorbox-cs.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-da.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-de.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-es.js2
-rw-r--r--library/colorbox/i18n/jquery.colorbox-et.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fa.js18
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fi.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fr.js17
-rw-r--r--library/colorbox/i18n/jquery.colorbox-gl.js13
-rw-r--r--library/colorbox/i18n/jquery.colorbox-gr.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-he.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-hr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-hu.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-id.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-it.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ja.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-kr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-lt.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-lv.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-my.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-nl.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-no.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-pl.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-pt-BR.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ro.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ru.js12
-rw-r--r--library/colorbox/i18n/jquery.colorbox-si.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sk.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sv.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-tr.js19
-rw-r--r--library/colorbox/i18n/jquery.colorbox-uk.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-zh-CN.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-zh-TW.js15
-rw-r--r--library/colorbox/images/border.pngbin163 -> 0 bytes
-rw-r--r--library/colorbox/images/controls.pngbin2033 -> 0 bytes
-rw-r--r--library/colorbox/images/loading.gifbin9427 -> 0 bytes
-rw-r--r--library/colorbox/images/loading_background.pngbin166 -> 0 bytes
-rw-r--r--library/colorbox/jquery.colorbox-min.js7
-rw-r--r--library/colorbox/jquery.colorbox.js931
-rw-r--r--library/colorpicker/css/colorpicker.css161
-rw-r--r--library/colorpicker/css/layout.css218
-rw-r--r--library/colorpicker/images/blank.gifbin49 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_background.pngbin1897 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hex.pngbin532 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_b.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_h.pngbin1012 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_s.pngbin1171 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_indic.gifbin86 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_overlay.pngbin10355 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_b.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_g.pngbin1069 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_r.pngbin1066 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_select.gifbin78 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_submit.pngbin984 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_background.pngbin1916 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hex.pngbin562 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_b.pngbin1097 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_h.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_s.pngbin1168 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_indic.gifbin86 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_b.pngbin1008 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_g.pngbin1069 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_r.pngbin1018 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_submit.pngbin997 -> 0 bytes
-rw-r--r--library/colorpicker/images/select.pngbin506 -> 0 bytes
-rw-r--r--library/colorpicker/images/select2.pngbin518 -> 0 bytes
-rw-r--r--library/colorpicker/images/slider.pngbin315 -> 0 bytes
-rw-r--r--library/colorpicker/index.html184
-rw-r--r--library/colorpicker/js/colorpicker.js484
-rw-r--r--library/colorpicker/js/eye.js34
-rw-r--r--library/colorpicker/js/layout.js67
-rw-r--r--library/colorpicker/js/utils.js252
-rw-r--r--library/fancybox/blank.gifbin43 -> 0 bytes
-rw-r--r--library/fancybox/fancy_close.pngbin1517 -> 0 bytes
-rw-r--r--library/fancybox/fancy_loading.pngbin10195 -> 0 bytes
-rw-r--r--library/fancybox/fancy_nav_left.pngbin1446 -> 0 bytes
-rw-r--r--library/fancybox/fancy_nav_right.pngbin1454 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_e.pngbin107 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_n.pngbin106 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_ne.pngbin347 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_nw.pngbin324 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_s.pngbin111 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_se.pngbin352 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_sw.pngbin340 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_w.pngbin103 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_left.pngbin503 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_main.pngbin96 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_over.pngbin70 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_right.pngbin506 -> 0 bytes
-rw-r--r--library/fancybox/fancybox-x.pngbin203 -> 0 bytes
-rw-r--r--library/fancybox/fancybox-y.pngbin176 -> 0 bytes
-rw-r--r--library/fancybox/fancybox.pngbin15287 -> 0 bytes
-rw-r--r--library/fancybox/jquery.easing-1.3.pack.js72
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.css359
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.js1157
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.pack.js46
-rw-r--r--library/fancybox/jquery.mousewheel-3.0.4.pack.js14
-rw-r--r--library/intl/.gitignore1
-rw-r--r--library/intl/.travis.yml14
-rw-r--r--library/intl/LICENSE21
-rw-r--r--library/intl/README.md163
-rw-r--r--library/intl/phpunit.xml23
-rw-r--r--library/intl/resources/country/af.json761
-rw-r--r--library/intl/resources/country/agq.json761
-rw-r--r--library/intl/resources/country/ak.json761
-rw-r--r--library/intl/resources/country/am.json761
-rw-r--r--library/intl/resources/country/ar.json761
-rw-r--r--library/intl/resources/country/asa.json761
-rw-r--r--library/intl/resources/country/ast.json761
-rw-r--r--library/intl/resources/country/az.json761
-rw-r--r--library/intl/resources/country/bas.json761
-rw-r--r--library/intl/resources/country/base.json1511
-rw-r--r--library/intl/resources/country/be.json761
-rw-r--r--library/intl/resources/country/bez.json761
-rw-r--r--library/intl/resources/country/bg.json761
-rw-r--r--library/intl/resources/country/bm.json761
-rw-r--r--library/intl/resources/country/bn-IN.json761
-rw-r--r--library/intl/resources/country/bn.json761
-rw-r--r--library/intl/resources/country/bo.json761
-rw-r--r--library/intl/resources/country/br.json761
-rw-r--r--library/intl/resources/country/brx.json761
-rw-r--r--library/intl/resources/country/bs-Cyrl.json761
-rw-r--r--library/intl/resources/country/bs.json761
-rw-r--r--library/intl/resources/country/ca.json761
-rw-r--r--library/intl/resources/country/cgg.json761
-rw-r--r--library/intl/resources/country/chr.json761
-rw-r--r--library/intl/resources/country/cs.json761
-rw-r--r--library/intl/resources/country/cy.json761
-rw-r--r--library/intl/resources/country/da.json761
-rw-r--r--library/intl/resources/country/dav.json761
-rw-r--r--library/intl/resources/country/de-CH.json761
-rw-r--r--library/intl/resources/country/de.json761
-rw-r--r--library/intl/resources/country/dje.json761
-rw-r--r--library/intl/resources/country/dsb.json761
-rw-r--r--library/intl/resources/country/dyo.json761
-rw-r--r--library/intl/resources/country/dz.json761
-rw-r--r--library/intl/resources/country/ebu.json761
-rw-r--r--library/intl/resources/country/ee.json761
-rw-r--r--library/intl/resources/country/el.json761
-rw-r--r--library/intl/resources/country/en-AU.json761
-rw-r--r--library/intl/resources/country/en-BE.json761
-rw-r--r--library/intl/resources/country/en-DG.json761
-rw-r--r--library/intl/resources/country/en-FK.json761
-rw-r--r--library/intl/resources/country/en-GB.json761
-rw-r--r--library/intl/resources/country/en-GG.json761
-rw-r--r--library/intl/resources/country/en-GI.json761
-rw-r--r--library/intl/resources/country/en-HK.json761
-rw-r--r--library/intl/resources/country/en-IE.json761
-rw-r--r--library/intl/resources/country/en-IM.json761
-rw-r--r--library/intl/resources/country/en-IN.json761
-rw-r--r--library/intl/resources/country/en-IO.json761
-rw-r--r--library/intl/resources/country/en-JE.json761
-rw-r--r--library/intl/resources/country/en-MO.json761
-rw-r--r--library/intl/resources/country/en-MT.json761
-rw-r--r--library/intl/resources/country/en-NZ.json761
-rw-r--r--library/intl/resources/country/en-PK.json761
-rw-r--r--library/intl/resources/country/en-SG.json761
-rw-r--r--library/intl/resources/country/en-SH.json761
-rw-r--r--library/intl/resources/country/en-VG.json761
-rw-r--r--library/intl/resources/country/en.json761
-rw-r--r--library/intl/resources/country/eo.json761
-rw-r--r--library/intl/resources/country/es-AR.json761
-rw-r--r--library/intl/resources/country/es-BO.json761
-rw-r--r--library/intl/resources/country/es-CL.json761
-rw-r--r--library/intl/resources/country/es-CO.json761
-rw-r--r--library/intl/resources/country/es-CR.json761
-rw-r--r--library/intl/resources/country/es-CU.json761
-rw-r--r--library/intl/resources/country/es-DO.json761
-rw-r--r--library/intl/resources/country/es-EC.json761
-rw-r--r--library/intl/resources/country/es-GT.json761
-rw-r--r--library/intl/resources/country/es-HN.json761
-rw-r--r--library/intl/resources/country/es-MX.json761
-rw-r--r--library/intl/resources/country/es-NI.json761
-rw-r--r--library/intl/resources/country/es-PA.json761
-rw-r--r--library/intl/resources/country/es-PE.json761
-rw-r--r--library/intl/resources/country/es-PR.json761
-rw-r--r--library/intl/resources/country/es-PY.json761
-rw-r--r--library/intl/resources/country/es-SV.json761
-rw-r--r--library/intl/resources/country/es-US.json761
-rw-r--r--library/intl/resources/country/es-UY.json761
-rw-r--r--library/intl/resources/country/es-VE.json761
-rw-r--r--library/intl/resources/country/es.json761
-rw-r--r--library/intl/resources/country/et.json761
-rw-r--r--library/intl/resources/country/eu.json761
-rw-r--r--library/intl/resources/country/ewo.json761
-rw-r--r--library/intl/resources/country/fa-AF.json761
-rw-r--r--library/intl/resources/country/fa.json761
-rw-r--r--library/intl/resources/country/ff.json761
-rw-r--r--library/intl/resources/country/fi.json761
-rw-r--r--library/intl/resources/country/fil.json761
-rw-r--r--library/intl/resources/country/fo.json761
-rw-r--r--library/intl/resources/country/fr-CA.json761
-rw-r--r--library/intl/resources/country/fr-CH.json761
-rw-r--r--library/intl/resources/country/fr.json761
-rw-r--r--library/intl/resources/country/fur.json761
-rw-r--r--library/intl/resources/country/fy.json761
-rw-r--r--library/intl/resources/country/ga.json761
-rw-r--r--library/intl/resources/country/gd.json761
-rw-r--r--library/intl/resources/country/gl.json761
-rw-r--r--library/intl/resources/country/gsw.json761
-rw-r--r--library/intl/resources/country/gu.json761
-rw-r--r--library/intl/resources/country/guz.json761
-rw-r--r--library/intl/resources/country/ha.json761
-rw-r--r--library/intl/resources/country/he.json761
-rw-r--r--library/intl/resources/country/hi.json761
-rw-r--r--library/intl/resources/country/hr.json761
-rw-r--r--library/intl/resources/country/hsb.json761
-rw-r--r--library/intl/resources/country/hu.json761
-rw-r--r--library/intl/resources/country/hy.json761
-rw-r--r--library/intl/resources/country/id.json761
-rw-r--r--library/intl/resources/country/is.json761
-rw-r--r--library/intl/resources/country/it.json761
-rw-r--r--library/intl/resources/country/ja.json761
-rw-r--r--library/intl/resources/country/jgo.json761
-rw-r--r--library/intl/resources/country/jmc.json761
-rw-r--r--library/intl/resources/country/ka.json761
-rw-r--r--library/intl/resources/country/kab.json761
-rw-r--r--library/intl/resources/country/kam.json761
-rw-r--r--library/intl/resources/country/kde.json761
-rw-r--r--library/intl/resources/country/kea.json761
-rw-r--r--library/intl/resources/country/khq.json761
-rw-r--r--library/intl/resources/country/ki.json761
-rw-r--r--library/intl/resources/country/kk.json761
-rw-r--r--library/intl/resources/country/kl.json761
-rw-r--r--library/intl/resources/country/kln.json761
-rw-r--r--library/intl/resources/country/km.json761
-rw-r--r--library/intl/resources/country/kn.json761
-rw-r--r--library/intl/resources/country/ko.json761
-rw-r--r--library/intl/resources/country/ks.json761
-rw-r--r--library/intl/resources/country/ksb.json761
-rw-r--r--library/intl/resources/country/ksf.json761
-rw-r--r--library/intl/resources/country/ksh.json761
-rw-r--r--library/intl/resources/country/ky.json761
-rw-r--r--library/intl/resources/country/lag.json761
-rw-r--r--library/intl/resources/country/lb.json761
-rw-r--r--library/intl/resources/country/lg.json761
-rw-r--r--library/intl/resources/country/ln.json761
-rw-r--r--library/intl/resources/country/lo.json761
-rw-r--r--library/intl/resources/country/lt.json761
-rw-r--r--library/intl/resources/country/lu.json761
-rw-r--r--library/intl/resources/country/luo.json761
-rw-r--r--library/intl/resources/country/luy.json761
-rw-r--r--library/intl/resources/country/lv.json761
-rw-r--r--library/intl/resources/country/mas.json761
-rw-r--r--library/intl/resources/country/mer.json761
-rw-r--r--library/intl/resources/country/mfe.json761
-rw-r--r--library/intl/resources/country/mg.json761
-rw-r--r--library/intl/resources/country/mgh.json761
-rw-r--r--library/intl/resources/country/mk.json761
-rw-r--r--library/intl/resources/country/ml.json761
-rw-r--r--library/intl/resources/country/mn.json761
-rw-r--r--library/intl/resources/country/mr.json761
-rw-r--r--library/intl/resources/country/ms.json761
-rw-r--r--library/intl/resources/country/mt.json761
-rw-r--r--library/intl/resources/country/mua.json761
-rw-r--r--library/intl/resources/country/my.json761
-rw-r--r--library/intl/resources/country/naq.json761
-rw-r--r--library/intl/resources/country/nb.json761
-rw-r--r--library/intl/resources/country/nd.json761
-rw-r--r--library/intl/resources/country/ne.json761
-rw-r--r--library/intl/resources/country/nl-BE.json761
-rw-r--r--library/intl/resources/country/nl.json761
-rw-r--r--library/intl/resources/country/nmg.json761
-rw-r--r--library/intl/resources/country/nn.json761
-rw-r--r--library/intl/resources/country/nus.json761
-rw-r--r--library/intl/resources/country/nyn.json761
-rw-r--r--library/intl/resources/country/or.json761
-rw-r--r--library/intl/resources/country/pa.json761
-rw-r--r--library/intl/resources/country/pl.json761
-rw-r--r--library/intl/resources/country/ps.json761
-rw-r--r--library/intl/resources/country/pt-AO.json761
-rw-r--r--library/intl/resources/country/pt-CV.json761
-rw-r--r--library/intl/resources/country/pt-GW.json761
-rw-r--r--library/intl/resources/country/pt-MO.json761
-rw-r--r--library/intl/resources/country/pt-MZ.json761
-rw-r--r--library/intl/resources/country/pt-PT.json761
-rw-r--r--library/intl/resources/country/pt-ST.json761
-rw-r--r--library/intl/resources/country/pt-TL.json761
-rw-r--r--library/intl/resources/country/pt.json761
-rw-r--r--library/intl/resources/country/rm.json761
-rw-r--r--library/intl/resources/country/rn.json761
-rw-r--r--library/intl/resources/country/ro.json761
-rw-r--r--library/intl/resources/country/rof.json761
-rw-r--r--library/intl/resources/country/ru.json761
-rw-r--r--library/intl/resources/country/rwk.json761
-rw-r--r--library/intl/resources/country/saq.json761
-rw-r--r--library/intl/resources/country/sbp.json761
-rw-r--r--library/intl/resources/country/se-FI.json761
-rw-r--r--library/intl/resources/country/se.json761
-rw-r--r--library/intl/resources/country/seh.json761
-rw-r--r--library/intl/resources/country/ses.json761
-rw-r--r--library/intl/resources/country/sg.json761
-rw-r--r--library/intl/resources/country/shi-Latn.json761
-rw-r--r--library/intl/resources/country/shi.json761
-rw-r--r--library/intl/resources/country/si.json761
-rw-r--r--library/intl/resources/country/sk.json761
-rw-r--r--library/intl/resources/country/sl.json761
-rw-r--r--library/intl/resources/country/sn.json761
-rw-r--r--library/intl/resources/country/so.json761
-rw-r--r--library/intl/resources/country/sq.json761
-rw-r--r--library/intl/resources/country/sr-Latn.json761
-rw-r--r--library/intl/resources/country/sr.json761
-rw-r--r--library/intl/resources/country/sv-FI.json761
-rw-r--r--library/intl/resources/country/sv.json761
-rw-r--r--library/intl/resources/country/sw.json761
-rw-r--r--library/intl/resources/country/swc.json761
-rw-r--r--library/intl/resources/country/ta.json761
-rw-r--r--library/intl/resources/country/te.json761
-rw-r--r--library/intl/resources/country/teo.json761
-rw-r--r--library/intl/resources/country/th.json761
-rw-r--r--library/intl/resources/country/ti.json761
-rw-r--r--library/intl/resources/country/to.json761
-rw-r--r--library/intl/resources/country/tr.json761
-rw-r--r--library/intl/resources/country/twq.json761
-rw-r--r--library/intl/resources/country/tzm.json761
-rw-r--r--library/intl/resources/country/ug.json761
-rw-r--r--library/intl/resources/country/uk.json761
-rw-r--r--library/intl/resources/country/ur-IN.json761
-rw-r--r--library/intl/resources/country/ur.json761
-rw-r--r--library/intl/resources/country/uz-Cyrl.json761
-rw-r--r--library/intl/resources/country/uz.json761
-rw-r--r--library/intl/resources/country/vai-Latn.json761
-rw-r--r--library/intl/resources/country/vai.json761
-rw-r--r--library/intl/resources/country/vi.json761
-rw-r--r--library/intl/resources/country/vun.json761
-rw-r--r--library/intl/resources/country/wae.json761
-rw-r--r--library/intl/resources/country/xog.json761
-rw-r--r--library/intl/resources/country/yav.json761
-rw-r--r--library/intl/resources/country/yo-BJ.json761
-rw-r--r--library/intl/resources/country/yo.json761
-rw-r--r--library/intl/resources/country/zgh.json761
-rw-r--r--library/intl/resources/country/zh-Hans-HK.json761
-rw-r--r--library/intl/resources/country/zh-Hans-MO.json761
-rw-r--r--library/intl/resources/country/zh-Hans-SG.json761
-rw-r--r--library/intl/resources/country/zh-Hant-HK.json761
-rw-r--r--library/intl/resources/country/zh-Hant-MO.json761
-rw-r--r--library/intl/resources/country/zh-Hant.json761
-rw-r--r--library/intl/resources/country/zh.json761
-rw-r--r--library/intl/resources/country/zu.json761
-rw-r--r--library/intl/resources/currency/af.json634
-rw-r--r--library/intl/resources/currency/agq.json634
-rw-r--r--library/intl/resources/currency/ak.json634
-rw-r--r--library/intl/resources/currency/am.json634
-rw-r--r--library/intl/resources/currency/ar.json634
-rw-r--r--library/intl/resources/currency/asa.json634
-rw-r--r--library/intl/resources/currency/ast.json634
-rw-r--r--library/intl/resources/currency/az.json634
-rw-r--r--library/intl/resources/currency/bas.json634
-rw-r--r--library/intl/resources/currency/base.json683
-rw-r--r--library/intl/resources/currency/be.json634
-rw-r--r--library/intl/resources/currency/bez.json634
-rw-r--r--library/intl/resources/currency/bg.json634
-rw-r--r--library/intl/resources/currency/bm.json634
-rw-r--r--library/intl/resources/currency/bn.json634
-rw-r--r--library/intl/resources/currency/bo.json634
-rw-r--r--library/intl/resources/currency/br.json634
-rw-r--r--library/intl/resources/currency/brx.json634
-rw-r--r--library/intl/resources/currency/bs-Cyrl.json634
-rw-r--r--library/intl/resources/currency/bs.json634
-rw-r--r--library/intl/resources/currency/ca.json634
-rw-r--r--library/intl/resources/currency/cgg.json634
-rw-r--r--library/intl/resources/currency/chr.json634
-rw-r--r--library/intl/resources/currency/cs.json634
-rw-r--r--library/intl/resources/currency/cy.json634
-rw-r--r--library/intl/resources/currency/da.json634
-rw-r--r--library/intl/resources/currency/dav.json634
-rw-r--r--library/intl/resources/currency/de-CH.json634
-rw-r--r--library/intl/resources/currency/de.json634
-rw-r--r--library/intl/resources/currency/dje.json634
-rw-r--r--library/intl/resources/currency/dsb.json634
-rw-r--r--library/intl/resources/currency/dyo.json634
-rw-r--r--library/intl/resources/currency/dz.json634
-rw-r--r--library/intl/resources/currency/ebu.json634
-rw-r--r--library/intl/resources/currency/ee.json634
-rw-r--r--library/intl/resources/currency/el.json634
-rw-r--r--library/intl/resources/currency/en-AU.json634
-rw-r--r--library/intl/resources/currency/en-BE.json634
-rw-r--r--library/intl/resources/currency/en-DG.json634
-rw-r--r--library/intl/resources/currency/en-FK.json634
-rw-r--r--library/intl/resources/currency/en-GB.json634
-rw-r--r--library/intl/resources/currency/en-GG.json634
-rw-r--r--library/intl/resources/currency/en-GI.json634
-rw-r--r--library/intl/resources/currency/en-HK.json634
-rw-r--r--library/intl/resources/currency/en-IE.json634
-rw-r--r--library/intl/resources/currency/en-IM.json634
-rw-r--r--library/intl/resources/currency/en-IN.json634
-rw-r--r--library/intl/resources/currency/en-IO.json634
-rw-r--r--library/intl/resources/currency/en-JE.json634
-rw-r--r--library/intl/resources/currency/en-MO.json634
-rw-r--r--library/intl/resources/currency/en-MT.json634
-rw-r--r--library/intl/resources/currency/en-NZ.json634
-rw-r--r--library/intl/resources/currency/en-PK.json634
-rw-r--r--library/intl/resources/currency/en-SG.json634
-rw-r--r--library/intl/resources/currency/en-SH.json634
-rw-r--r--library/intl/resources/currency/en-VG.json634
-rw-r--r--library/intl/resources/currency/en.json634
-rw-r--r--library/intl/resources/currency/eo.json634
-rw-r--r--library/intl/resources/currency/es-AR.json634
-rw-r--r--library/intl/resources/currency/es-BO.json634
-rw-r--r--library/intl/resources/currency/es-CL.json634
-rw-r--r--library/intl/resources/currency/es-CO.json634
-rw-r--r--library/intl/resources/currency/es-CR.json634
-rw-r--r--library/intl/resources/currency/es-CU.json634
-rw-r--r--library/intl/resources/currency/es-DO.json634
-rw-r--r--library/intl/resources/currency/es-EC.json634
-rw-r--r--library/intl/resources/currency/es-GT.json634
-rw-r--r--library/intl/resources/currency/es-HN.json634
-rw-r--r--library/intl/resources/currency/es-MX.json634
-rw-r--r--library/intl/resources/currency/es-NI.json634
-rw-r--r--library/intl/resources/currency/es-PA.json634
-rw-r--r--library/intl/resources/currency/es-PE.json634
-rw-r--r--library/intl/resources/currency/es-PR.json634
-rw-r--r--library/intl/resources/currency/es-PY.json634
-rw-r--r--library/intl/resources/currency/es-SV.json634
-rw-r--r--library/intl/resources/currency/es-US.json634
-rw-r--r--library/intl/resources/currency/es-UY.json634
-rw-r--r--library/intl/resources/currency/es-VE.json634
-rw-r--r--library/intl/resources/currency/es.json634
-rw-r--r--library/intl/resources/currency/et.json634
-rw-r--r--library/intl/resources/currency/eu.json634
-rw-r--r--library/intl/resources/currency/ewo.json634
-rw-r--r--library/intl/resources/currency/fa-AF.json634
-rw-r--r--library/intl/resources/currency/fa.json634
-rw-r--r--library/intl/resources/currency/ff.json634
-rw-r--r--library/intl/resources/currency/fi.json634
-rw-r--r--library/intl/resources/currency/fil.json634
-rw-r--r--library/intl/resources/currency/fo.json634
-rw-r--r--library/intl/resources/currency/fr-CA.json634
-rw-r--r--library/intl/resources/currency/fr.json634
-rw-r--r--library/intl/resources/currency/fur.json634
-rw-r--r--library/intl/resources/currency/fy.json634
-rw-r--r--library/intl/resources/currency/ga.json634
-rw-r--r--library/intl/resources/currency/gd.json634
-rw-r--r--library/intl/resources/currency/gl.json634
-rw-r--r--library/intl/resources/currency/gsw.json634
-rw-r--r--library/intl/resources/currency/gu.json634
-rw-r--r--library/intl/resources/currency/guz.json634
-rw-r--r--library/intl/resources/currency/ha.json634
-rw-r--r--library/intl/resources/currency/he.json634
-rw-r--r--library/intl/resources/currency/hi.json634
-rw-r--r--library/intl/resources/currency/hr.json634
-rw-r--r--library/intl/resources/currency/hsb.json634
-rw-r--r--library/intl/resources/currency/hu.json634
-rw-r--r--library/intl/resources/currency/hy.json634
-rw-r--r--library/intl/resources/currency/id.json634
-rw-r--r--library/intl/resources/currency/is.json634
-rw-r--r--library/intl/resources/currency/it.json634
-rw-r--r--library/intl/resources/currency/ja.json634
-rw-r--r--library/intl/resources/currency/jgo.json634
-rw-r--r--library/intl/resources/currency/jmc.json634
-rw-r--r--library/intl/resources/currency/ka.json634
-rw-r--r--library/intl/resources/currency/kab.json634
-rw-r--r--library/intl/resources/currency/kam.json634
-rw-r--r--library/intl/resources/currency/kde.json634
-rw-r--r--library/intl/resources/currency/kea.json634
-rw-r--r--library/intl/resources/currency/khq.json634
-rw-r--r--library/intl/resources/currency/ki.json634
-rw-r--r--library/intl/resources/currency/kk.json634
-rw-r--r--library/intl/resources/currency/kl.json634
-rw-r--r--library/intl/resources/currency/kln.json634
-rw-r--r--library/intl/resources/currency/km.json634
-rw-r--r--library/intl/resources/currency/kn.json634
-rw-r--r--library/intl/resources/currency/ko.json634
-rw-r--r--library/intl/resources/currency/ks.json634
-rw-r--r--library/intl/resources/currency/ksb.json634
-rw-r--r--library/intl/resources/currency/ksf.json634
-rw-r--r--library/intl/resources/currency/ksh.json634
-rw-r--r--library/intl/resources/currency/ky.json634
-rw-r--r--library/intl/resources/currency/lag.json634
-rw-r--r--library/intl/resources/currency/lb.json634
-rw-r--r--library/intl/resources/currency/lg.json634
-rw-r--r--library/intl/resources/currency/ln.json634
-rw-r--r--library/intl/resources/currency/lo.json634
-rw-r--r--library/intl/resources/currency/lt.json634
-rw-r--r--library/intl/resources/currency/lu.json634
-rw-r--r--library/intl/resources/currency/luo.json634
-rw-r--r--library/intl/resources/currency/luy.json634
-rw-r--r--library/intl/resources/currency/lv.json634
-rw-r--r--library/intl/resources/currency/mas.json634
-rw-r--r--library/intl/resources/currency/mer.json634
-rw-r--r--library/intl/resources/currency/mfe.json634
-rw-r--r--library/intl/resources/currency/mg.json634
-rw-r--r--library/intl/resources/currency/mgh.json634
-rw-r--r--library/intl/resources/currency/mk.json634
-rw-r--r--library/intl/resources/currency/ml.json634
-rw-r--r--library/intl/resources/currency/mn.json634
-rw-r--r--library/intl/resources/currency/mr.json634
-rw-r--r--library/intl/resources/currency/ms.json634
-rw-r--r--library/intl/resources/currency/mt.json634
-rw-r--r--library/intl/resources/currency/mua.json634
-rw-r--r--library/intl/resources/currency/my.json634
-rw-r--r--library/intl/resources/currency/naq.json634
-rw-r--r--library/intl/resources/currency/nb.json634
-rw-r--r--library/intl/resources/currency/nd.json634
-rw-r--r--library/intl/resources/currency/ne-IN.json634
-rw-r--r--library/intl/resources/currency/ne.json634
-rw-r--r--library/intl/resources/currency/nl.json634
-rw-r--r--library/intl/resources/currency/nmg.json634
-rw-r--r--library/intl/resources/currency/nn.json634
-rw-r--r--library/intl/resources/currency/nus.json634
-rw-r--r--library/intl/resources/currency/nyn.json634
-rw-r--r--library/intl/resources/currency/or.json634
-rw-r--r--library/intl/resources/currency/pa.json634
-rw-r--r--library/intl/resources/currency/pl.json634
-rw-r--r--library/intl/resources/currency/ps.json634
-rw-r--r--library/intl/resources/currency/pt-AO.json634
-rw-r--r--library/intl/resources/currency/pt-CV.json634
-rw-r--r--library/intl/resources/currency/pt-GW.json634
-rw-r--r--library/intl/resources/currency/pt-MO.json634
-rw-r--r--library/intl/resources/currency/pt-MZ.json634
-rw-r--r--library/intl/resources/currency/pt-PT.json634
-rw-r--r--library/intl/resources/currency/pt-ST.json634
-rw-r--r--library/intl/resources/currency/pt-TL.json634
-rw-r--r--library/intl/resources/currency/pt.json634
-rw-r--r--library/intl/resources/currency/rm.json634
-rw-r--r--library/intl/resources/currency/rn.json634
-rw-r--r--library/intl/resources/currency/ro.json634
-rw-r--r--library/intl/resources/currency/rof.json634
-rw-r--r--library/intl/resources/currency/ru.json634
-rw-r--r--library/intl/resources/currency/rwk.json634
-rw-r--r--library/intl/resources/currency/saq.json634
-rw-r--r--library/intl/resources/currency/sbp.json634
-rw-r--r--library/intl/resources/currency/se.json634
-rw-r--r--library/intl/resources/currency/seh.json634
-rw-r--r--library/intl/resources/currency/ses.json634
-rw-r--r--library/intl/resources/currency/sg.json634
-rw-r--r--library/intl/resources/currency/shi-Latn.json634
-rw-r--r--library/intl/resources/currency/shi.json634
-rw-r--r--library/intl/resources/currency/si.json634
-rw-r--r--library/intl/resources/currency/sk.json634
-rw-r--r--library/intl/resources/currency/sl.json634
-rw-r--r--library/intl/resources/currency/sn.json634
-rw-r--r--library/intl/resources/currency/so.json634
-rw-r--r--library/intl/resources/currency/sq.json634
-rw-r--r--library/intl/resources/currency/sr-Cyrl-BA.json634
-rw-r--r--library/intl/resources/currency/sr-Latn-BA.json634
-rw-r--r--library/intl/resources/currency/sr-Latn.json634
-rw-r--r--library/intl/resources/currency/sr.json634
-rw-r--r--library/intl/resources/currency/sv.json634
-rw-r--r--library/intl/resources/currency/sw.json634
-rw-r--r--library/intl/resources/currency/swc.json634
-rw-r--r--library/intl/resources/currency/ta-MY.json634
-rw-r--r--library/intl/resources/currency/ta-SG.json634
-rw-r--r--library/intl/resources/currency/ta.json634
-rw-r--r--library/intl/resources/currency/te.json634
-rw-r--r--library/intl/resources/currency/teo.json634
-rw-r--r--library/intl/resources/currency/th.json634
-rw-r--r--library/intl/resources/currency/ti.json634
-rw-r--r--library/intl/resources/currency/to.json634
-rw-r--r--library/intl/resources/currency/tr.json634
-rw-r--r--library/intl/resources/currency/twq.json634
-rw-r--r--library/intl/resources/currency/tzm.json634
-rw-r--r--library/intl/resources/currency/ug.json634
-rw-r--r--library/intl/resources/currency/uk.json634
-rw-r--r--library/intl/resources/currency/ur-IN.json634
-rw-r--r--library/intl/resources/currency/ur.json634
-rw-r--r--library/intl/resources/currency/uz-Cyrl.json634
-rw-r--r--library/intl/resources/currency/uz.json634
-rw-r--r--library/intl/resources/currency/vai-Latn.json634
-rw-r--r--library/intl/resources/currency/vai.json634
-rw-r--r--library/intl/resources/currency/vi.json634
-rw-r--r--library/intl/resources/currency/vun.json634
-rw-r--r--library/intl/resources/currency/wae.json634
-rw-r--r--library/intl/resources/currency/xog.json634
-rw-r--r--library/intl/resources/currency/yav.json634
-rw-r--r--library/intl/resources/currency/yo-BJ.json634
-rw-r--r--library/intl/resources/currency/yo.json634
-rw-r--r--library/intl/resources/currency/zgh.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-HK.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-MO.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-SG.json634
-rw-r--r--library/intl/resources/currency/zh-Hant-HK.json634
-rw-r--r--library/intl/resources/currency/zh-Hant-MO.json634
-rw-r--r--library/intl/resources/currency/zh-Hant.json634
-rw-r--r--library/intl/resources/currency/zh.json634
-rw-r--r--library/intl/resources/currency/zu.json634
-rw-r--r--library/intl/resources/language/af.json738
-rw-r--r--library/intl/resources/language/agq.json738
-rw-r--r--library/intl/resources/language/ak.json738
-rw-r--r--library/intl/resources/language/am.json738
-rw-r--r--library/intl/resources/language/ar-AE.json738
-rw-r--r--library/intl/resources/language/ar-EG.json738
-rw-r--r--library/intl/resources/language/ar.json738
-rw-r--r--library/intl/resources/language/asa.json738
-rw-r--r--library/intl/resources/language/ast.json738
-rw-r--r--library/intl/resources/language/az.json738
-rw-r--r--library/intl/resources/language/bas.json738
-rw-r--r--library/intl/resources/language/be.json738
-rw-r--r--library/intl/resources/language/bez.json738
-rw-r--r--library/intl/resources/language/bg.json738
-rw-r--r--library/intl/resources/language/bm.json738
-rw-r--r--library/intl/resources/language/bn-IN.json738
-rw-r--r--library/intl/resources/language/bn.json738
-rw-r--r--library/intl/resources/language/bo.json738
-rw-r--r--library/intl/resources/language/br.json738
-rw-r--r--library/intl/resources/language/brx.json738
-rw-r--r--library/intl/resources/language/bs-Cyrl.json738
-rw-r--r--library/intl/resources/language/bs.json738
-rw-r--r--library/intl/resources/language/ca.json738
-rw-r--r--library/intl/resources/language/cgg.json738
-rw-r--r--library/intl/resources/language/chr.json738
-rw-r--r--library/intl/resources/language/cs.json738
-rw-r--r--library/intl/resources/language/cy.json738
-rw-r--r--library/intl/resources/language/da.json738
-rw-r--r--library/intl/resources/language/dav.json738
-rw-r--r--library/intl/resources/language/de-CH.json738
-rw-r--r--library/intl/resources/language/de.json738
-rw-r--r--library/intl/resources/language/dje.json738
-rw-r--r--library/intl/resources/language/dsb.json738
-rw-r--r--library/intl/resources/language/dyo.json738
-rw-r--r--library/intl/resources/language/dz.json738
-rw-r--r--library/intl/resources/language/ebu.json738
-rw-r--r--library/intl/resources/language/ee.json738
-rw-r--r--library/intl/resources/language/el.json738
-rw-r--r--library/intl/resources/language/en-AU.json738
-rw-r--r--library/intl/resources/language/en.json738
-rw-r--r--library/intl/resources/language/eo.json738
-rw-r--r--library/intl/resources/language/es-AR.json738
-rw-r--r--library/intl/resources/language/es-BO.json738
-rw-r--r--library/intl/resources/language/es-CL.json738
-rw-r--r--library/intl/resources/language/es-CO.json738
-rw-r--r--library/intl/resources/language/es-CR.json738
-rw-r--r--library/intl/resources/language/es-CU.json738
-rw-r--r--library/intl/resources/language/es-DO.json738
-rw-r--r--library/intl/resources/language/es-EC.json738
-rw-r--r--library/intl/resources/language/es-GT.json738
-rw-r--r--library/intl/resources/language/es-HN.json738
-rw-r--r--library/intl/resources/language/es-MX.json738
-rw-r--r--library/intl/resources/language/es-NI.json738
-rw-r--r--library/intl/resources/language/es-PA.json738
-rw-r--r--library/intl/resources/language/es-PE.json738
-rw-r--r--library/intl/resources/language/es-PR.json738
-rw-r--r--library/intl/resources/language/es-PY.json738
-rw-r--r--library/intl/resources/language/es-SV.json738
-rw-r--r--library/intl/resources/language/es-US.json738
-rw-r--r--library/intl/resources/language/es-UY.json738
-rw-r--r--library/intl/resources/language/es-VE.json738
-rw-r--r--library/intl/resources/language/es.json738
-rw-r--r--library/intl/resources/language/et.json738
-rw-r--r--library/intl/resources/language/eu.json738
-rw-r--r--library/intl/resources/language/ewo.json738
-rw-r--r--library/intl/resources/language/fa-AF.json738
-rw-r--r--library/intl/resources/language/fa.json738
-rw-r--r--library/intl/resources/language/ff.json738
-rw-r--r--library/intl/resources/language/fi.json738
-rw-r--r--library/intl/resources/language/fil.json738
-rw-r--r--library/intl/resources/language/fo.json738
-rw-r--r--library/intl/resources/language/fr-CA.json738
-rw-r--r--library/intl/resources/language/fr.json738
-rw-r--r--library/intl/resources/language/fur.json738
-rw-r--r--library/intl/resources/language/fy.json738
-rw-r--r--library/intl/resources/language/ga.json738
-rw-r--r--library/intl/resources/language/gd.json738
-rw-r--r--library/intl/resources/language/gl.json738
-rw-r--r--library/intl/resources/language/gsw.json738
-rw-r--r--library/intl/resources/language/gu.json738
-rw-r--r--library/intl/resources/language/guz.json738
-rw-r--r--library/intl/resources/language/ha.json738
-rw-r--r--library/intl/resources/language/he.json738
-rw-r--r--library/intl/resources/language/hi.json738
-rw-r--r--library/intl/resources/language/hr.json738
-rw-r--r--library/intl/resources/language/hsb.json738
-rw-r--r--library/intl/resources/language/hu.json738
-rw-r--r--library/intl/resources/language/hy.json738
-rw-r--r--library/intl/resources/language/id.json738
-rw-r--r--library/intl/resources/language/is.json738
-rw-r--r--library/intl/resources/language/it.json738
-rw-r--r--library/intl/resources/language/ja.json738
-rw-r--r--library/intl/resources/language/jgo.json738
-rw-r--r--library/intl/resources/language/jmc.json738
-rw-r--r--library/intl/resources/language/ka.json738
-rw-r--r--library/intl/resources/language/kab.json738
-rw-r--r--library/intl/resources/language/kam.json738
-rw-r--r--library/intl/resources/language/kde.json738
-rw-r--r--library/intl/resources/language/kea.json738
-rw-r--r--library/intl/resources/language/khq.json738
-rw-r--r--library/intl/resources/language/ki.json738
-rw-r--r--library/intl/resources/language/kk.json738
-rw-r--r--library/intl/resources/language/kl.json738
-rw-r--r--library/intl/resources/language/kln.json738
-rw-r--r--library/intl/resources/language/km.json738
-rw-r--r--library/intl/resources/language/kn.json738
-rw-r--r--library/intl/resources/language/ko.json738
-rw-r--r--library/intl/resources/language/ks.json738
-rw-r--r--library/intl/resources/language/ksb.json738
-rw-r--r--library/intl/resources/language/ksf.json738
-rw-r--r--library/intl/resources/language/ksh.json738
-rw-r--r--library/intl/resources/language/ky.json738
-rw-r--r--library/intl/resources/language/lag.json738
-rw-r--r--library/intl/resources/language/lb.json738
-rw-r--r--library/intl/resources/language/lg.json738
-rw-r--r--library/intl/resources/language/ln.json738
-rw-r--r--library/intl/resources/language/lo.json738
-rw-r--r--library/intl/resources/language/lt.json738
-rw-r--r--library/intl/resources/language/lu.json738
-rw-r--r--library/intl/resources/language/luo.json738
-rw-r--r--library/intl/resources/language/luy.json738
-rw-r--r--library/intl/resources/language/lv.json738
-rw-r--r--library/intl/resources/language/mas.json738
-rw-r--r--library/intl/resources/language/mer.json738
-rw-r--r--library/intl/resources/language/mfe.json738
-rw-r--r--library/intl/resources/language/mg.json738
-rw-r--r--library/intl/resources/language/mgh.json738
-rw-r--r--library/intl/resources/language/mk.json738
-rw-r--r--library/intl/resources/language/ml.json738
-rw-r--r--library/intl/resources/language/mn.json738
-rw-r--r--library/intl/resources/language/mr.json738
-rw-r--r--library/intl/resources/language/ms.json738
-rw-r--r--library/intl/resources/language/mt.json738
-rw-r--r--library/intl/resources/language/mua.json738
-rw-r--r--library/intl/resources/language/my.json738
-rw-r--r--library/intl/resources/language/naq.json738
-rw-r--r--library/intl/resources/language/nb.json738
-rw-r--r--library/intl/resources/language/nd.json738
-rw-r--r--library/intl/resources/language/ne-IN.json738
-rw-r--r--library/intl/resources/language/ne.json738
-rw-r--r--library/intl/resources/language/nl.json738
-rw-r--r--library/intl/resources/language/nmg.json738
-rw-r--r--library/intl/resources/language/nn.json738
-rw-r--r--library/intl/resources/language/nus.json738
-rw-r--r--library/intl/resources/language/nyn.json738
-rw-r--r--library/intl/resources/language/or.json738
-rw-r--r--library/intl/resources/language/pa.json738
-rw-r--r--library/intl/resources/language/pl.json738
-rw-r--r--library/intl/resources/language/ps.json738
-rw-r--r--library/intl/resources/language/pt-AO.json738
-rw-r--r--library/intl/resources/language/pt-CV.json738
-rw-r--r--library/intl/resources/language/pt-GW.json738
-rw-r--r--library/intl/resources/language/pt-MO.json738
-rw-r--r--library/intl/resources/language/pt-MZ.json738
-rw-r--r--library/intl/resources/language/pt-PT.json738
-rw-r--r--library/intl/resources/language/pt-ST.json738
-rw-r--r--library/intl/resources/language/pt-TL.json738
-rw-r--r--library/intl/resources/language/pt.json738
-rw-r--r--library/intl/resources/language/rm.json738
-rw-r--r--library/intl/resources/language/rn.json738
-rw-r--r--library/intl/resources/language/ro.json738
-rw-r--r--library/intl/resources/language/rof.json738
-rw-r--r--library/intl/resources/language/ru.json738
-rw-r--r--library/intl/resources/language/rwk.json738
-rw-r--r--library/intl/resources/language/saq.json738
-rw-r--r--library/intl/resources/language/sbp.json738
-rw-r--r--library/intl/resources/language/se-FI.json738
-rw-r--r--library/intl/resources/language/se.json738
-rw-r--r--library/intl/resources/language/seh.json738
-rw-r--r--library/intl/resources/language/ses.json738
-rw-r--r--library/intl/resources/language/sg.json738
-rw-r--r--library/intl/resources/language/shi-Latn.json738
-rw-r--r--library/intl/resources/language/shi.json738
-rw-r--r--library/intl/resources/language/si.json738
-rw-r--r--library/intl/resources/language/sk.json738
-rw-r--r--library/intl/resources/language/sl.json738
-rw-r--r--library/intl/resources/language/sn.json738
-rw-r--r--library/intl/resources/language/so.json738
-rw-r--r--library/intl/resources/language/sq.json738
-rw-r--r--library/intl/resources/language/sr-Latn.json738
-rw-r--r--library/intl/resources/language/sr.json738
-rw-r--r--library/intl/resources/language/sv-FI.json738
-rw-r--r--library/intl/resources/language/sv.json738
-rw-r--r--library/intl/resources/language/sw.json738
-rw-r--r--library/intl/resources/language/swc.json738
-rw-r--r--library/intl/resources/language/ta.json738
-rw-r--r--library/intl/resources/language/te.json738
-rw-r--r--library/intl/resources/language/teo.json738
-rw-r--r--library/intl/resources/language/th.json738
-rw-r--r--library/intl/resources/language/ti.json738
-rw-r--r--library/intl/resources/language/to.json738
-rw-r--r--library/intl/resources/language/tr.json738
-rw-r--r--library/intl/resources/language/twq.json738
-rw-r--r--library/intl/resources/language/tzm.json738
-rw-r--r--library/intl/resources/language/ug.json738
-rw-r--r--library/intl/resources/language/uk.json738
-rw-r--r--library/intl/resources/language/ur-IN.json738
-rw-r--r--library/intl/resources/language/ur.json738
-rw-r--r--library/intl/resources/language/uz-Cyrl.json738
-rw-r--r--library/intl/resources/language/uz.json738
-rw-r--r--library/intl/resources/language/vai-Latn.json738
-rw-r--r--library/intl/resources/language/vai.json738
-rw-r--r--library/intl/resources/language/vi.json738
-rw-r--r--library/intl/resources/language/vun.json738
-rw-r--r--library/intl/resources/language/wae.json738
-rw-r--r--library/intl/resources/language/xog.json738
-rw-r--r--library/intl/resources/language/yav.json738
-rw-r--r--library/intl/resources/language/yo-BJ.json738
-rw-r--r--library/intl/resources/language/yo.json738
-rw-r--r--library/intl/resources/language/zgh.json738
-rw-r--r--library/intl/resources/language/zh-Hans-HK.json738
-rw-r--r--library/intl/resources/language/zh-Hans-MO.json738
-rw-r--r--library/intl/resources/language/zh-Hans-SG.json738
-rw-r--r--library/intl/resources/language/zh-Hant-HK.json738
-rw-r--r--library/intl/resources/language/zh-Hant-MO.json738
-rw-r--r--library/intl/resources/language/zh-Hant.json738
-rw-r--r--library/intl/resources/language/zh.json738
-rw-r--r--library/intl/resources/language/zu.json738
-rw-r--r--library/intl/resources/number_format/aa.json7
-rw-r--r--library/intl/resources/number_format/af-NA.json9
-rw-r--r--library/intl/resources/number_format/af.json9
-rw-r--r--library/intl/resources/number_format/agq.json9
-rw-r--r--library/intl/resources/number_format/ak.json7
-rw-r--r--library/intl/resources/number_format/am.json7
-rw-r--r--library/intl/resources/number_format/ar-DZ.json11
-rw-r--r--library/intl/resources/number_format/ar-EH.json9
-rw-r--r--library/intl/resources/number_format/ar-LY.json11
-rw-r--r--library/intl/resources/number_format/ar-MA.json11
-rw-r--r--library/intl/resources/number_format/ar-TN.json11
-rw-r--r--library/intl/resources/number_format/ar.json12
-rw-r--r--library/intl/resources/number_format/as.json7
-rw-r--r--library/intl/resources/number_format/asa.json7
-rw-r--r--library/intl/resources/number_format/ast.json9
-rw-r--r--library/intl/resources/number_format/az.json9
-rw-r--r--library/intl/resources/number_format/bas.json9
-rw-r--r--library/intl/resources/number_format/be.json9
-rw-r--r--library/intl/resources/number_format/bem.json7
-rw-r--r--library/intl/resources/number_format/bez.json7
-rw-r--r--library/intl/resources/number_format/bg.json9
-rw-r--r--library/intl/resources/number_format/bm.json7
-rw-r--r--library/intl/resources/number_format/bn.json7
-rw-r--r--library/intl/resources/number_format/bo.json7
-rw-r--r--library/intl/resources/number_format/br.json9
-rw-r--r--library/intl/resources/number_format/brx.json7
-rw-r--r--library/intl/resources/number_format/bs.json9
-rw-r--r--library/intl/resources/number_format/ca.json9
-rw-r--r--library/intl/resources/number_format/cgg.json7
-rw-r--r--library/intl/resources/number_format/chr.json7
-rw-r--r--library/intl/resources/number_format/cs.json9
-rw-r--r--library/intl/resources/number_format/cy.json7
-rw-r--r--library/intl/resources/number_format/da.json9
-rw-r--r--library/intl/resources/number_format/dav.json7
-rw-r--r--library/intl/resources/number_format/de-AT.json9
-rw-r--r--library/intl/resources/number_format/de-CH.json8
-rw-r--r--library/intl/resources/number_format/de-LI.json8
-rw-r--r--library/intl/resources/number_format/de.json9
-rw-r--r--library/intl/resources/number_format/dje.json8
-rw-r--r--library/intl/resources/number_format/dsb.json9
-rw-r--r--library/intl/resources/number_format/dua.json9
-rw-r--r--library/intl/resources/number_format/dyo.json9
-rw-r--r--library/intl/resources/number_format/dz.json7
-rw-r--r--library/intl/resources/number_format/ebu.json7
-rw-r--r--library/intl/resources/number_format/ee.json7
-rw-r--r--library/intl/resources/number_format/el-CY.json9
-rw-r--r--library/intl/resources/number_format/el.json9
-rw-r--r--library/intl/resources/number_format/en-BE.json9
-rw-r--r--library/intl/resources/number_format/en-IN.json7
-rw-r--r--library/intl/resources/number_format/en-PK.json7
-rw-r--r--library/intl/resources/number_format/en-ZA.json9
-rw-r--r--library/intl/resources/number_format/en.json7
-rw-r--r--library/intl/resources/number_format/eo.json10
-rw-r--r--library/intl/resources/number_format/es-AR.json9
-rw-r--r--library/intl/resources/number_format/es-BO.json9
-rw-r--r--library/intl/resources/number_format/es-CL.json9
-rw-r--r--library/intl/resources/number_format/es-CO.json9
-rw-r--r--library/intl/resources/number_format/es-CR.json9
-rw-r--r--library/intl/resources/number_format/es-CU.json7
-rw-r--r--library/intl/resources/number_format/es-DO.json7
-rw-r--r--library/intl/resources/number_format/es-EC.json9
-rw-r--r--library/intl/resources/number_format/es-GQ.json9
-rw-r--r--library/intl/resources/number_format/es-GT.json7
-rw-r--r--library/intl/resources/number_format/es-HN.json7
-rw-r--r--library/intl/resources/number_format/es-MX.json7
-rw-r--r--library/intl/resources/number_format/es-NI.json7
-rw-r--r--library/intl/resources/number_format/es-PA.json7
-rw-r--r--library/intl/resources/number_format/es-PE.json7
-rw-r--r--library/intl/resources/number_format/es-PR.json7
-rw-r--r--library/intl/resources/number_format/es-PY.json9
-rw-r--r--library/intl/resources/number_format/es-SV.json7
-rw-r--r--library/intl/resources/number_format/es-US.json7
-rw-r--r--library/intl/resources/number_format/es-UY.json9
-rw-r--r--library/intl/resources/number_format/es-VE.json9
-rw-r--r--library/intl/resources/number_format/es.json9
-rw-r--r--library/intl/resources/number_format/et.json9
-rw-r--r--library/intl/resources/number_format/eu.json9
-rw-r--r--library/intl/resources/number_format/ewo.json9
-rw-r--r--library/intl/resources/number_format/fa.json12
-rw-r--r--library/intl/resources/number_format/ff.json9
-rw-r--r--library/intl/resources/number_format/fi.json10
-rw-r--r--library/intl/resources/number_format/fil.json7
-rw-r--r--library/intl/resources/number_format/fo.json10
-rw-r--r--library/intl/resources/number_format/fr-BE.json9
-rw-r--r--library/intl/resources/number_format/fr-CH.json8
-rw-r--r--library/intl/resources/number_format/fr-LU.json9
-rw-r--r--library/intl/resources/number_format/fr.json9
-rw-r--r--library/intl/resources/number_format/fur.json9
-rw-r--r--library/intl/resources/number_format/fy.json9
-rw-r--r--library/intl/resources/number_format/ga.json7
-rw-r--r--library/intl/resources/number_format/gd.json7
-rw-r--r--library/intl/resources/number_format/gl.json9
-rw-r--r--library/intl/resources/number_format/gsw.json9
-rw-r--r--library/intl/resources/number_format/gu.json7
-rw-r--r--library/intl/resources/number_format/guz.json7
-rw-r--r--library/intl/resources/number_format/gv.json7
-rw-r--r--library/intl/resources/number_format/ha.json7
-rw-r--r--library/intl/resources/number_format/haw.json7
-rw-r--r--library/intl/resources/number_format/he.json9
-rw-r--r--library/intl/resources/number_format/hi.json7
-rw-r--r--library/intl/resources/number_format/hr.json9
-rw-r--r--library/intl/resources/number_format/hsb.json9
-rw-r--r--library/intl/resources/number_format/hu.json9
-rw-r--r--library/intl/resources/number_format/hy.json9
-rw-r--r--library/intl/resources/number_format/id.json9
-rw-r--r--library/intl/resources/number_format/ig.json7
-rw-r--r--library/intl/resources/number_format/ii.json7
-rw-r--r--library/intl/resources/number_format/is.json9
-rw-r--r--library/intl/resources/number_format/it-CH.json8
-rw-r--r--library/intl/resources/number_format/it.json9
-rw-r--r--library/intl/resources/number_format/ja.json7
-rw-r--r--library/intl/resources/number_format/jgo.json9
-rw-r--r--library/intl/resources/number_format/jmc.json7
-rw-r--r--library/intl/resources/number_format/ka.json9
-rw-r--r--library/intl/resources/number_format/kab.json9
-rw-r--r--library/intl/resources/number_format/kam.json7
-rw-r--r--library/intl/resources/number_format/kde.json7
-rw-r--r--library/intl/resources/number_format/kea.json9
-rw-r--r--library/intl/resources/number_format/khq.json8
-rw-r--r--library/intl/resources/number_format/ki.json7
-rw-r--r--library/intl/resources/number_format/kk.json9
-rw-r--r--library/intl/resources/number_format/kkj.json9
-rw-r--r--library/intl/resources/number_format/kl.json10
-rw-r--r--library/intl/resources/number_format/kln.json7
-rw-r--r--library/intl/resources/number_format/km.json9
-rw-r--r--library/intl/resources/number_format/kn.json7
-rw-r--r--library/intl/resources/number_format/ko.json7
-rw-r--r--library/intl/resources/number_format/kok.json7
-rw-r--r--library/intl/resources/number_format/ks.json12
-rw-r--r--library/intl/resources/number_format/ksb.json7
-rw-r--r--library/intl/resources/number_format/ksf.json9
-rw-r--r--library/intl/resources/number_format/ksh.json10
-rw-r--r--library/intl/resources/number_format/kw.json7
-rw-r--r--library/intl/resources/number_format/ky.json9
-rw-r--r--library/intl/resources/number_format/lag.json7
-rw-r--r--library/intl/resources/number_format/lb.json9
-rw-r--r--library/intl/resources/number_format/lg.json7
-rw-r--r--library/intl/resources/number_format/lkt.json7
-rw-r--r--library/intl/resources/number_format/ln.json9
-rw-r--r--library/intl/resources/number_format/lo.json9
-rw-r--r--library/intl/resources/number_format/lt.json10
-rw-r--r--library/intl/resources/number_format/lu.json9
-rw-r--r--library/intl/resources/number_format/luo.json7
-rw-r--r--library/intl/resources/number_format/luy.json7
-rw-r--r--library/intl/resources/number_format/lv.json9
-rw-r--r--library/intl/resources/number_format/mas.json7
-rw-r--r--library/intl/resources/number_format/mer.json7
-rw-r--r--library/intl/resources/number_format/mfe.json8
-rw-r--r--library/intl/resources/number_format/mg.json7
-rw-r--r--library/intl/resources/number_format/mgh.json9
-rw-r--r--library/intl/resources/number_format/mgo.json7
-rw-r--r--library/intl/resources/number_format/mk.json9
-rw-r--r--library/intl/resources/number_format/ml.json7
-rw-r--r--library/intl/resources/number_format/mn.json7
-rw-r--r--library/intl/resources/number_format/mr.json7
-rw-r--r--library/intl/resources/number_format/ms-Latn-BN.json9
-rw-r--r--library/intl/resources/number_format/ms.json7
-rw-r--r--library/intl/resources/number_format/mt.json7
-rw-r--r--library/intl/resources/number_format/mua.json9
-rw-r--r--library/intl/resources/number_format/my.json7
-rw-r--r--library/intl/resources/number_format/naq.json7
-rw-r--r--library/intl/resources/number_format/nb.json10
-rw-r--r--library/intl/resources/number_format/nd.json7
-rw-r--r--library/intl/resources/number_format/ne.json7
-rw-r--r--library/intl/resources/number_format/nl-BE.json9
-rw-r--r--library/intl/resources/number_format/nl.json9
-rw-r--r--library/intl/resources/number_format/nmg.json9
-rw-r--r--library/intl/resources/number_format/nn.json10
-rw-r--r--library/intl/resources/number_format/nnh.json9
-rw-r--r--library/intl/resources/number_format/nr.json9
-rw-r--r--library/intl/resources/number_format/nso.json8
-rw-r--r--library/intl/resources/number_format/nus.json7
-rw-r--r--library/intl/resources/number_format/nyn.json7
-rw-r--r--library/intl/resources/number_format/om.json7
-rw-r--r--library/intl/resources/number_format/or.json7
-rw-r--r--library/intl/resources/number_format/os.json9
-rw-r--r--library/intl/resources/number_format/pa-Arab.json12
-rw-r--r--library/intl/resources/number_format/pa.json7
-rw-r--r--library/intl/resources/number_format/pl.json9
-rw-r--r--library/intl/resources/number_format/ps.json12
-rw-r--r--library/intl/resources/number_format/pt-AO.json9
-rw-r--r--library/intl/resources/number_format/pt-CV.json9
-rw-r--r--library/intl/resources/number_format/pt-GW.json9
-rw-r--r--library/intl/resources/number_format/pt-MO.json9
-rw-r--r--library/intl/resources/number_format/pt-MZ.json9
-rw-r--r--library/intl/resources/number_format/pt-PT.json9
-rw-r--r--library/intl/resources/number_format/pt-ST.json9
-rw-r--r--library/intl/resources/number_format/pt-TL.json9
-rw-r--r--library/intl/resources/number_format/pt.json9
-rw-r--r--library/intl/resources/number_format/qu-BO.json9
-rw-r--r--library/intl/resources/number_format/qu.json7
-rw-r--r--library/intl/resources/number_format/rm.json9
-rw-r--r--library/intl/resources/number_format/rn.json9
-rw-r--r--library/intl/resources/number_format/ro.json9
-rw-r--r--library/intl/resources/number_format/rof.json7
-rw-r--r--library/intl/resources/number_format/ru.json9
-rw-r--r--library/intl/resources/number_format/rw.json9
-rw-r--r--library/intl/resources/number_format/rwk.json7
-rw-r--r--library/intl/resources/number_format/sah.json7
-rw-r--r--library/intl/resources/number_format/saq.json7
-rw-r--r--library/intl/resources/number_format/sbp.json7
-rw-r--r--library/intl/resources/number_format/se.json10
-rw-r--r--library/intl/resources/number_format/seh.json9
-rw-r--r--library/intl/resources/number_format/ses.json8
-rw-r--r--library/intl/resources/number_format/sg.json9
-rw-r--r--library/intl/resources/number_format/shi.json9
-rw-r--r--library/intl/resources/number_format/si.json7
-rw-r--r--library/intl/resources/number_format/sk.json9
-rw-r--r--library/intl/resources/number_format/sl.json9
-rw-r--r--library/intl/resources/number_format/smn.json7
-rw-r--r--library/intl/resources/number_format/sn.json7
-rw-r--r--library/intl/resources/number_format/so.json7
-rw-r--r--library/intl/resources/number_format/sq.json9
-rw-r--r--library/intl/resources/number_format/sr.json9
-rw-r--r--library/intl/resources/number_format/ss.json9
-rw-r--r--library/intl/resources/number_format/ssy.json7
-rw-r--r--library/intl/resources/number_format/sv.json10
-rw-r--r--library/intl/resources/number_format/sw.json7
-rw-r--r--library/intl/resources/number_format/swc.json9
-rw-r--r--library/intl/resources/number_format/ta-MY.json7
-rw-r--r--library/intl/resources/number_format/ta-SG.json7
-rw-r--r--library/intl/resources/number_format/ta.json7
-rw-r--r--library/intl/resources/number_format/te.json7
-rw-r--r--library/intl/resources/number_format/teo.json7
-rw-r--r--library/intl/resources/number_format/th.json7
-rw-r--r--library/intl/resources/number_format/ti.json7
-rw-r--r--library/intl/resources/number_format/tn.json8
-rw-r--r--library/intl/resources/number_format/to.json7
-rw-r--r--library/intl/resources/number_format/tr.json9
-rw-r--r--library/intl/resources/number_format/ts.json9
-rw-r--r--library/intl/resources/number_format/twq.json8
-rw-r--r--library/intl/resources/number_format/tzm.json9
-rw-r--r--library/intl/resources/number_format/ug.json7
-rw-r--r--library/intl/resources/number_format/uk.json9
-rw-r--r--library/intl/resources/number_format/ur-IN.json9
-rw-r--r--library/intl/resources/number_format/ur.json9
-rw-r--r--library/intl/resources/number_format/uz-Arab.json12
-rw-r--r--library/intl/resources/number_format/uz.json9
-rw-r--r--library/intl/resources/number_format/vai.json7
-rw-r--r--library/intl/resources/number_format/ve.json9
-rw-r--r--library/intl/resources/number_format/vi.json9
-rw-r--r--library/intl/resources/number_format/vo.json7
-rw-r--r--library/intl/resources/number_format/vun.json7
-rw-r--r--library/intl/resources/number_format/wae.json9
-rw-r--r--library/intl/resources/number_format/xog.json7
-rw-r--r--library/intl/resources/number_format/yav.json9
-rw-r--r--library/intl/resources/number_format/yi.json7
-rw-r--r--library/intl/resources/number_format/yo.json7
-rw-r--r--library/intl/resources/number_format/zgh.json9
-rw-r--r--library/intl/resources/number_format/zh-Hans-HK.json7
-rw-r--r--library/intl/resources/number_format/zh-Hans-MO.json7
-rw-r--r--library/intl/resources/number_format/zh-Hans-SG.json7
-rw-r--r--library/intl/resources/number_format/zh-Hant.json7
-rw-r--r--library/intl/resources/number_format/zh.json7
-rw-r--r--library/intl/resources/number_format/zu.json7
-rw-r--r--library/intl/scripts/country/generate.php162
-rw-r--r--library/intl/scripts/currency/generate.php153
-rw-r--r--library/intl/scripts/language/generate.php129
-rw-r--r--library/intl/scripts/number_format/generate.php107
-rw-r--r--library/intl/src/Country/Country.php168
-rw-r--r--library/intl/src/Country/CountryInterface.php99
-rw-r--r--library/intl/src/Country/CountryRepository.php124
-rw-r--r--library/intl/src/Country/CountryRepositoryInterface.php31
-rw-r--r--library/intl/src/Currency/Currency.php168
-rw-r--r--library/intl/src/Currency/CurrencyInterface.php82
-rw-r--r--library/intl/src/Currency/CurrencyRepository.php122
-rw-r--r--library/intl/src/Currency/CurrencyRepositoryInterface.php31
-rw-r--r--library/intl/src/Exception/ExceptionInterface.php7
-rw-r--r--library/intl/src/Exception/InvalidArgumentException.php11
-rw-r--r--library/intl/src/Exception/UnknownCountryException.php11
-rw-r--r--library/intl/src/Exception/UnknownCurrencyException.php11
-rw-r--r--library/intl/src/Exception/UnknownLanguageException.php11
-rw-r--r--library/intl/src/Exception/UnknownLocaleException.php10
-rw-r--r--library/intl/src/Formatter/NumberFormatter.php406
-rw-r--r--library/intl/src/Formatter/NumberFormatterInterface.php134
-rw-r--r--library/intl/src/Language/Language.php91
-rw-r--r--library/intl/src/Language/LanguageInterface.php37
-rw-r--r--library/intl/src/Language/LanguageRepository.php96
-rw-r--r--library/intl/src/Language/LanguageRepositoryInterface.php31
-rw-r--r--library/intl/src/LocaleResolverTrait.php89
-rw-r--r--library/intl/src/NumberFormat/NumberFormat.php269
-rw-r--r--library/intl/src/NumberFormat/NumberFormatInterface.php185
-rw-r--r--library/intl/src/NumberFormat/NumberFormatRepository.php87
-rw-r--r--library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php19
-rw-r--r--library/intl/tests/Country/CountryRepositoryTest.php114
-rw-r--r--library/intl/tests/Country/CountryTest.php83
-rw-r--r--library/intl/tests/Currency/CurrencyRepositoryTest.php113
-rw-r--r--library/intl/tests/Currency/CurrencyTest.php83
-rw-r--r--library/intl/tests/DummyRepository.php23
-rw-r--r--library/intl/tests/Formatter/NumberFormatterTest.php378
-rw-r--r--library/intl/tests/Language/LanguageRepositoryTest.php92
-rw-r--r--library/intl/tests/Language/LanguageTest.php53
-rw-r--r--library/intl/tests/LocaleResolverTest.php51
-rw-r--r--library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php69
-rw-r--r--library/intl/tests/NumberFormat/NumberFormatTest.php131
-rw-r--r--library/intl/vendor/autoload.php7
-rw-r--r--library/intl/vendor/composer/ClassLoader.php387
-rw-r--r--library/intl/vendor/composer/autoload_classmap.php9
-rw-r--r--library/intl/vendor/composer/autoload_namespaces.php9
-rw-r--r--library/intl/vendor/composer/autoload_psr4.php10
-rw-r--r--library/intl/vendor/composer/autoload_real.php50
-rw-r--r--library/jRange/.gitignore2
-rw-r--r--library/jRange/LICENSE (renamed from library/jslider/MIT-LICENSE.txt)3
-rw-r--r--library/jRange/README.md5
-rw-r--r--library/jRange/demo/index.html245
-rw-r--r--library/jRange/demo/main.css289
-rw-r--r--library/jRange/demo/main.less296
-rw-r--r--library/jRange/demo/normalize.css425
-rw-r--r--library/jRange/demo/prism/prism.css193
-rw-r--r--library/jRange/demo/prism/prism.js8
-rw-r--r--library/jRange/jquery.range-min.js1
-rw-r--r--library/jRange/jquery.range.css168
-rw-r--r--library/jRange/jquery.range.js297
-rw-r--r--library/jRange/jquery.range.less192
-rw-r--r--library/jgrowl/README2
-rw-r--r--library/jgrowl/jquery.jgrowl.css137
-rw-r--r--library/jgrowl/jquery.jgrowl_minimized.js13
-rw-r--r--library/jquery-textcomplete/jquery.textcomplete.js7
-rw-r--r--library/jquery.AreYouSure/.gitignore166
-rw-r--r--library/jquery.AreYouSure/Gruntfile.js26
-rw-r--r--library/jquery.AreYouSure/README.md297
-rw-r--r--library/jquery.AreYouSure/are-you-sure.jquery.json39
-rw-r--r--library/jquery.AreYouSure/ays-beforeunload-shim.js31
-rw-r--r--library/jquery.AreYouSure/bower.json30
-rw-r--r--library/jquery.AreYouSure/demo/are-you-sure-demo.html576
-rw-r--r--library/jquery.AreYouSure/jquery.are-you-sure.js192
-rw-r--r--library/jquery.AreYouSure/package.json45
-rw-r--r--library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html4
-rw-r--r--library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js28
-rw-r--r--library/jquery.divgrow/divGrow-1.3.1.zipbin2124 -> 0 bytes
-rw-r--r--library/jquery.divgrow/howto46
-rw-r--r--library/jquery.divgrow/jquery.divgrow-1.3.1.js89
-rw-r--r--library/jquery.divgrow/jquery.divgrow-1.3.1.min.js1
-rw-r--r--library/jquery.timeago.js347
-rw-r--r--library/jslider/.gitignore2
-rw-r--r--library/jslider/Makefile15
-rw-r--r--library/jslider/README.md9
-rw-r--r--library/jslider/bin/jquery.slider.min.css1
-rw-r--r--library/jslider/bin/jquery.slider.min.js1
-rw-r--r--library/jslider/css/jslider.blue.css4
-rw-r--r--library/jslider/css/jslider.css39
-rw-r--r--library/jslider/css/jslider.plastic.css3
-rw-r--r--library/jslider/css/jslider.round.css5
-rw-r--r--library/jslider/css/jslider.round.plastic.css5
-rw-r--r--library/jslider/img/jslider.blue.pngbin1001 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.plastic.pngbin1237 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.pngbin832 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.round.plastic.pngbin1770 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.round.pngbin1871 -> 0 bytes
-rw-r--r--library/jslider/index.html152
-rw-r--r--library/jslider/js/draggable-0.1.js196
-rw-r--r--library/jslider/js/jquery-1.7.1.js9266
-rw-r--r--library/jslider/js/jquery.dependClass-0.1.js56
-rw-r--r--library/jslider/js/jquery.numberformatter-1.2.3.js510
-rw-r--r--library/jslider/js/jquery.slider.js700
-rw-r--r--library/jslider/js/jshashtable-2.1_src.js370
-rw-r--r--library/jslider/js/tmpl.js35
-rw-r--r--library/jslider/src/skin.psdbin143059 -> 0 bytes
-rw-r--r--library/jslider/tests/show_hide.html53
-rw-r--r--library/jslider/tests/zero_value.html64
-rw-r--r--library/jslider/tools/yuicompressor-2.4.7.jarbin891148 -> 0 bytes
-rw-r--r--library/readmore.js/README.md171
-rw-r--r--library/readmore.js/readmore.js320
1477 files changed, 518288 insertions, 21616 deletions
diff --git a/library/HTMLPurifier.autoload.php b/library/HTMLPurifier.autoload.php
index 8d4017640..c3ea67e81 100644
--- a/library/HTMLPurifier.autoload.php
+++ b/library/HTMLPurifier.autoload.php
@@ -3,6 +3,7 @@
/**
* @file
* Convenience file that registers autoload handler for HTML Purifier.
+ * It also does some sanity checks.
*/
if (function_exists('spl_autoload_register') && function_exists('spl_autoload_unregister')) {
@@ -13,9 +14,14 @@ if (function_exists('spl_autoload_register') && function_exists('spl_autoload_un
spl_autoload_register('__autoload');
}
} elseif (!function_exists('__autoload')) {
- function __autoload($class) {
+ function __autoload($class)
+ {
return HTMLPurifier_Bootstrap::autoload($class);
}
}
+if (ini_get('zend.ze1_compatibility_mode')) {
+ trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR);
+}
+
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier.composer.php b/library/HTMLPurifier.composer.php
new file mode 100644
index 000000000..6706f4e39
--- /dev/null
+++ b/library/HTMLPurifier.composer.php
@@ -0,0 +1,4 @@
+<?php
+if (!defined('HTMLPURIFIER_PREFIX')) {
+ define('HTMLPURIFIER_PREFIX', __DIR__);
+}
diff --git a/library/HTMLPurifier.func.php b/library/HTMLPurifier.func.php
index 56a55b2fe..64b140bec 100644
--- a/library/HTMLPurifier.func.php
+++ b/library/HTMLPurifier.func.php
@@ -8,11 +8,13 @@
/**
* Purify HTML.
- * @param $html String HTML to purify
- * @param $config Configuration to use, can be any value accepted by
+ * @param string $html String HTML to purify
+ * @param mixed $config Configuration to use, can be any value accepted by
* HTMLPurifier_Config::create()
+ * @return string
*/
-function HTMLPurifier($html, $config = null) {
+function HTMLPurifier($html, $config = null)
+{
static $purifier = false;
if (!$purifier) {
$purifier = new HTMLPurifier();
diff --git a/library/HTMLPurifier.includes.php b/library/HTMLPurifier.includes.php
index 2ed0f0c17..9b7b88a87 100644
--- a/library/HTMLPurifier.includes.php
+++ b/library/HTMLPurifier.includes.php
@@ -7,7 +7,7 @@
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run.
*
- * @version 4.1.1
+ * @version 4.6.0
*
* @warning
* You must *not* include any other HTML Purifier files before this file,
@@ -19,6 +19,7 @@
*/
require 'HTMLPurifier.php';
+require 'HTMLPurifier/Arborize.php';
require 'HTMLPurifier/AttrCollections.php';
require 'HTMLPurifier/AttrDef.php';
require 'HTMLPurifier/AttrTransform.php';
@@ -54,9 +55,11 @@ require 'HTMLPurifier/Language.php';
require 'HTMLPurifier/LanguageFactory.php';
require 'HTMLPurifier/Length.php';
require 'HTMLPurifier/Lexer.php';
+require 'HTMLPurifier/Node.php';
require 'HTMLPurifier/PercentEncoder.php';
require 'HTMLPurifier/PropertyList.php';
require 'HTMLPurifier/PropertyListIterator.php';
+require 'HTMLPurifier/Queue.php';
require 'HTMLPurifier/Strategy.php';
require 'HTMLPurifier/StringHash.php';
require 'HTMLPurifier/StringHashParser.php';
@@ -72,7 +75,9 @@ require 'HTMLPurifier/URISchemeRegistry.php';
require 'HTMLPurifier/UnitConverter.php';
require 'HTMLPurifier/VarParser.php';
require 'HTMLPurifier/VarParserException.php';
+require 'HTMLPurifier/Zipper.php';
require 'HTMLPurifier/AttrDef/CSS.php';
+require 'HTMLPurifier/AttrDef/Clone.php';
require 'HTMLPurifier/AttrDef/Enum.php';
require 'HTMLPurifier/AttrDef/Integer.php';
require 'HTMLPurifier/AttrDef/Lang.php';
@@ -90,6 +95,7 @@ require 'HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Filter.php';
require 'HTMLPurifier/AttrDef/CSS/Font.php';
require 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
+require 'HTMLPurifier/AttrDef/CSS/Ident.php';
require 'HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Length.php';
require 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
@@ -125,14 +131,17 @@ require 'HTMLPurifier/AttrTransform/Lang.php';
require 'HTMLPurifier/AttrTransform/Length.php';
require 'HTMLPurifier/AttrTransform/Name.php';
require 'HTMLPurifier/AttrTransform/NameSync.php';
+require 'HTMLPurifier/AttrTransform/Nofollow.php';
require 'HTMLPurifier/AttrTransform/SafeEmbed.php';
require 'HTMLPurifier/AttrTransform/SafeObject.php';
require 'HTMLPurifier/AttrTransform/SafeParam.php';
require 'HTMLPurifier/AttrTransform/ScriptRequired.php';
+require 'HTMLPurifier/AttrTransform/TargetBlank.php';
require 'HTMLPurifier/AttrTransform/Textarea.php';
require 'HTMLPurifier/ChildDef/Chameleon.php';
require 'HTMLPurifier/ChildDef/Custom.php';
require 'HTMLPurifier/ChildDef/Empty.php';
+require 'HTMLPurifier/ChildDef/List.php';
require 'HTMLPurifier/ChildDef/Required.php';
require 'HTMLPurifier/ChildDef/Optional.php';
require 'HTMLPurifier/ChildDef/StrictBlockquote.php';
@@ -147,10 +156,12 @@ require 'HTMLPurifier/HTMLModule/CommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Edit.php';
require 'HTMLPurifier/HTMLModule/Forms.php';
require 'HTMLPurifier/HTMLModule/Hypertext.php';
+require 'HTMLPurifier/HTMLModule/Iframe.php';
require 'HTMLPurifier/HTMLModule/Image.php';
require 'HTMLPurifier/HTMLModule/Legacy.php';
require 'HTMLPurifier/HTMLModule/List.php';
require 'HTMLPurifier/HTMLModule/Name.php';
+require 'HTMLPurifier/HTMLModule/Nofollow.php';
require 'HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Object.php';
require 'HTMLPurifier/HTMLModule/Presentation.php';
@@ -158,10 +169,12 @@ require 'HTMLPurifier/HTMLModule/Proprietary.php';
require 'HTMLPurifier/HTMLModule/Ruby.php';
require 'HTMLPurifier/HTMLModule/SafeEmbed.php';
require 'HTMLPurifier/HTMLModule/SafeObject.php';
+require 'HTMLPurifier/HTMLModule/SafeScripting.php';
require 'HTMLPurifier/HTMLModule/Scripting.php';
require 'HTMLPurifier/HTMLModule/StyleAttribute.php';
require 'HTMLPurifier/HTMLModule/Tables.php';
require 'HTMLPurifier/HTMLModule/Target.php';
+require 'HTMLPurifier/HTMLModule/TargetBlank.php';
require 'HTMLPurifier/HTMLModule/Text.php';
require 'HTMLPurifier/HTMLModule/Tidy.php';
require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
@@ -180,6 +193,9 @@ require 'HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require 'HTMLPurifier/Injector/SafeObject.php';
require 'HTMLPurifier/Lexer/DOMLex.php';
require 'HTMLPurifier/Lexer/DirectLex.php';
+require 'HTMLPurifier/Node/Comment.php';
+require 'HTMLPurifier/Node/Element.php';
+require 'HTMLPurifier/Node/Text.php';
require 'HTMLPurifier/Strategy/Composite.php';
require 'HTMLPurifier/Strategy/Core.php';
require 'HTMLPurifier/Strategy/FixNesting.php';
@@ -196,10 +212,13 @@ require 'HTMLPurifier/Token/Start.php';
require 'HTMLPurifier/Token/Text.php';
require 'HTMLPurifier/URIFilter/DisableExternal.php';
require 'HTMLPurifier/URIFilter/DisableExternalResources.php';
+require 'HTMLPurifier/URIFilter/DisableResources.php';
require 'HTMLPurifier/URIFilter/HostBlacklist.php';
require 'HTMLPurifier/URIFilter/MakeAbsolute.php';
require 'HTMLPurifier/URIFilter/Munge.php';
+require 'HTMLPurifier/URIFilter/SafeIframe.php';
require 'HTMLPurifier/URIScheme/data.php';
+require 'HTMLPurifier/URIScheme/file.php';
require 'HTMLPurifier/URIScheme/ftp.php';
require 'HTMLPurifier/URIScheme/http.php';
require 'HTMLPurifier/URIScheme/https.php';
diff --git a/library/HTMLPurifier.kses.php b/library/HTMLPurifier.kses.php
index 3143feb17..752290077 100644
--- a/library/HTMLPurifier.kses.php
+++ b/library/HTMLPurifier.kses.php
@@ -7,7 +7,8 @@
require_once dirname(__FILE__) . '/HTMLPurifier.auto.php';
-function kses($string, $allowed_html, $allowed_protocols = null) {
+function kses($string, $allowed_html, $allowed_protocols = null)
+{
$config = HTMLPurifier_Config::createDefault();
$allowed_elements = array();
$allowed_attributes = array();
@@ -19,7 +20,6 @@ function kses($string, $allowed_html, $allowed_protocols = null) {
}
$config->set('HTML.AllowedElements', $allowed_elements);
$config->set('HTML.AllowedAttributes', $allowed_attributes);
- $allowed_schemes = array();
if ($allowed_protocols !== null) {
$config->set('URI.AllowedSchemes', $allowed_protocols);
}
diff --git a/library/HTMLPurifier.php b/library/HTMLPurifier.php
index ba2c7b306..6f654fde5 100644
--- a/library/HTMLPurifier.php
+++ b/library/HTMLPurifier.php
@@ -19,7 +19,7 @@
*/
/*
- HTML Purifier 4.1.1 - Standards Compliant HTML Filtering
+ HTML Purifier 4.6.0 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or
@@ -54,66 +54,97 @@
class HTMLPurifier
{
- /** Version of HTML Purifier */
- public $version = '4.1.1';
+ /**
+ * Version of HTML Purifier.
+ * @type string
+ */
+ public $version = '4.6.0';
- /** Constant with version of HTML Purifier */
- const VERSION = '4.1.1';
+ /**
+ * Constant with version of HTML Purifier.
+ */
+ const VERSION = '4.6.0';
- /** Global configuration object */
+ /**
+ * Global configuration object.
+ * @type HTMLPurifier_Config
+ */
public $config;
- /** Array of extra HTMLPurifier_Filter objects to run on HTML, for backwards compatibility */
+ /**
+ * Array of extra filter objects to run on HTML,
+ * for backwards compatibility.
+ * @type HTMLPurifier_Filter[]
+ */
private $filters = array();
- /** Single instance of HTML Purifier */
+ /**
+ * Single instance of HTML Purifier.
+ * @type HTMLPurifier
+ */
private static $instance;
- protected $strategy, $generator;
+ /**
+ * @type HTMLPurifier_Strategy_Core
+ */
+ protected $strategy;
+
+ /**
+ * @type HTMLPurifier_Generator
+ */
+ protected $generator;
/**
- * Resultant HTMLPurifier_Context of last run purification. Is an array
- * of contexts if the last called method was purifyArray().
+ * Resultant context of last run purification.
+ * Is an array of contexts if the last called method was purifyArray().
+ * @type HTMLPurifier_Context
*/
public $context;
/**
* Initializes the purifier.
- * @param $config Optional HTMLPurifier_Config object for all instances of
- * the purifier, if omitted, a default configuration is
- * supplied (which can be overridden on a per-use basis).
+ *
+ * @param HTMLPurifier_Config $config Optional HTMLPurifier_Config object
+ * for all instances of the purifier, if omitted, a default
+ * configuration is supplied (which can be overridden on a
+ * per-use basis).
* The parameter can also be any type that
* HTMLPurifier_Config::create() supports.
*/
- public function __construct($config = null) {
-
+ public function __construct($config = null)
+ {
$this->config = HTMLPurifier_Config::create($config);
-
- $this->strategy = new HTMLPurifier_Strategy_Core();
-
+ $this->strategy = new HTMLPurifier_Strategy_Core();
}
/**
* Adds a filter to process the output. First come first serve
- * @param $filter HTMLPurifier_Filter object
+ *
+ * @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object
*/
- public function addFilter($filter) {
- trigger_error('HTMLPurifier->addFilter() is deprecated, use configuration directives in the Filter namespace or Filter.Custom', E_USER_WARNING);
+ public function addFilter($filter)
+ {
+ trigger_error(
+ 'HTMLPurifier->addFilter() is deprecated, use configuration directives' .
+ ' in the Filter namespace or Filter.Custom',
+ E_USER_WARNING
+ );
$this->filters[] = $filter;
}
/**
* Filters an HTML snippet/document to be XSS-free and standards-compliant.
*
- * @param $html String of HTML to purify
- * @param $config HTMLPurifier_Config object for this operation, if omitted,
- * defaults to the config object specified during this
+ * @param string $html String of HTML to purify
+ * @param HTMLPurifier_Config $config Config object for this operation,
+ * if omitted, defaults to the config object specified during this
* object's construction. The parameter can also be any type
* that HTMLPurifier_Config::create() supports.
- * @return Purified HTML
+ *
+ * @return string Purified HTML
*/
- public function purify($html, $config = null) {
-
+ public function purify($html, $config = null)
+ {
// :TODO: make the config merge in, instead of replace
$config = $config ? HTMLPurifier_Config::create($config) : $this->config;
@@ -151,8 +182,12 @@ class HTMLPurifier
unset($filter_flags['Custom']);
$filters = array();
foreach ($filter_flags as $filter => $flag) {
- if (!$flag) continue;
- if (strpos($filter, '.') !== false) continue;
+ if (!$flag) {
+ continue;
+ }
+ if (strpos($filter, '.') !== false) {
+ continue;
+ }
$class = "HTMLPurifier_Filter_$filter";
$filters[] = new $class;
}
@@ -175,9 +210,12 @@ class HTMLPurifier
// list of un-purified tokens
$lexer->tokenizeHTML(
// un-purified HTML
- $html, $config, $context
+ $html,
+ $config,
+ $context
),
- $config, $context
+ $config,
+ $context
)
);
@@ -192,11 +230,15 @@ class HTMLPurifier
/**
* Filters an array of HTML snippets
- * @param $config Optional HTMLPurifier_Config object for this operation.
+ *
+ * @param string[] $array_of_html Array of html snippets
+ * @param HTMLPurifier_Config $config Optional config object for this operation.
* See HTMLPurifier::purify() for more details.
- * @return Array of purified HTML
+ *
+ * @return string[] Array of purified HTML
*/
- public function purifyArray($array_of_html, $config = null) {
+ public function purifyArray($array_of_html, $config = null)
+ {
$context_array = array();
foreach ($array_of_html as $key => $html) {
$array_of_html[$key] = $this->purify($html, $config);
@@ -208,11 +250,16 @@ class HTMLPurifier
/**
* Singleton for enforcing just one HTML Purifier in your system
- * @param $prototype Optional prototype HTMLPurifier instance to
- * overload singleton with, or HTMLPurifier_Config
- * instance to configure the generated version with.
+ *
+ * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
+ * HTMLPurifier instance to overload singleton with,
+ * or HTMLPurifier_Config instance to configure the
+ * generated version with.
+ *
+ * @return HTMLPurifier
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
if (!self::$instance || $prototype) {
if ($prototype instanceof HTMLPurifier) {
self::$instance = $prototype;
@@ -226,12 +273,20 @@ class HTMLPurifier
}
/**
+ * Singleton for enforcing just one HTML Purifier in your system
+ *
+ * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
+ * HTMLPurifier instance to overload singleton with,
+ * or HTMLPurifier_Config instance to configure the
+ * generated version with.
+ *
+ * @return HTMLPurifier
* @note Backwards compatibility, see instance()
*/
- public static function getInstance($prototype = null) {
+ public static function getInstance($prototype = null)
+ {
return HTMLPurifier::instance($prototype);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier.safe-includes.php b/library/HTMLPurifier.safe-includes.php
index 6402de045..9dea6d1ed 100644
--- a/library/HTMLPurifier.safe-includes.php
+++ b/library/HTMLPurifier.safe-includes.php
@@ -13,6 +13,7 @@
$__dir = dirname(__FILE__);
require_once $__dir . '/HTMLPurifier.php';
+require_once $__dir . '/HTMLPurifier/Arborize.php';
require_once $__dir . '/HTMLPurifier/AttrCollections.php';
require_once $__dir . '/HTMLPurifier/AttrDef.php';
require_once $__dir . '/HTMLPurifier/AttrTransform.php';
@@ -48,9 +49,11 @@ require_once $__dir . '/HTMLPurifier/Language.php';
require_once $__dir . '/HTMLPurifier/LanguageFactory.php';
require_once $__dir . '/HTMLPurifier/Length.php';
require_once $__dir . '/HTMLPurifier/Lexer.php';
+require_once $__dir . '/HTMLPurifier/Node.php';
require_once $__dir . '/HTMLPurifier/PercentEncoder.php';
require_once $__dir . '/HTMLPurifier/PropertyList.php';
require_once $__dir . '/HTMLPurifier/PropertyListIterator.php';
+require_once $__dir . '/HTMLPurifier/Queue.php';
require_once $__dir . '/HTMLPurifier/Strategy.php';
require_once $__dir . '/HTMLPurifier/StringHash.php';
require_once $__dir . '/HTMLPurifier/StringHashParser.php';
@@ -66,7 +69,9 @@ require_once $__dir . '/HTMLPurifier/URISchemeRegistry.php';
require_once $__dir . '/HTMLPurifier/UnitConverter.php';
require_once $__dir . '/HTMLPurifier/VarParser.php';
require_once $__dir . '/HTMLPurifier/VarParserException.php';
+require_once $__dir . '/HTMLPurifier/Zipper.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS.php';
+require_once $__dir . '/HTMLPurifier/AttrDef/Clone.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Enum.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Integer.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Lang.php';
@@ -84,6 +89,7 @@ require_once $__dir . '/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Filter.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Font.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/FontFamily.php';
+require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Ident.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Length.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ListStyle.php';
@@ -119,14 +125,17 @@ require_once $__dir . '/HTMLPurifier/AttrTransform/Lang.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Length.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Name.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/NameSync.php';
+require_once $__dir . '/HTMLPurifier/AttrTransform/Nofollow.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeObject.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeParam.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php';
+require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Textarea.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Custom.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Empty.php';
+require_once $__dir . '/HTMLPurifier/ChildDef/List.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Required.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Optional.php';
require_once $__dir . '/HTMLPurifier/ChildDef/StrictBlockquote.php';
@@ -141,10 +150,12 @@ require_once $__dir . '/HTMLPurifier/HTMLModule/CommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Edit.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Forms.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Hypertext.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/Iframe.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Image.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Legacy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/List.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Name.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/Nofollow.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Object.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Presentation.php';
@@ -152,10 +163,12 @@ require_once $__dir . '/HTMLPurifier/HTMLModule/Proprietary.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Ruby.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeObject.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/SafeScripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Scripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/StyleAttribute.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tables.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Text.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
@@ -174,6 +187,9 @@ require_once $__dir . '/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require_once $__dir . '/HTMLPurifier/Injector/SafeObject.php';
require_once $__dir . '/HTMLPurifier/Lexer/DOMLex.php';
require_once $__dir . '/HTMLPurifier/Lexer/DirectLex.php';
+require_once $__dir . '/HTMLPurifier/Node/Comment.php';
+require_once $__dir . '/HTMLPurifier/Node/Element.php';
+require_once $__dir . '/HTMLPurifier/Node/Text.php';
require_once $__dir . '/HTMLPurifier/Strategy/Composite.php';
require_once $__dir . '/HTMLPurifier/Strategy/Core.php';
require_once $__dir . '/HTMLPurifier/Strategy/FixNesting.php';
@@ -190,10 +206,13 @@ require_once $__dir . '/HTMLPurifier/Token/Start.php';
require_once $__dir . '/HTMLPurifier/Token/Text.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternal.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternalResources.php';
+require_once $__dir . '/HTMLPurifier/URIFilter/DisableResources.php';
require_once $__dir . '/HTMLPurifier/URIFilter/HostBlacklist.php';
require_once $__dir . '/HTMLPurifier/URIFilter/MakeAbsolute.php';
require_once $__dir . '/HTMLPurifier/URIFilter/Munge.php';
+require_once $__dir . '/HTMLPurifier/URIFilter/SafeIframe.php';
require_once $__dir . '/HTMLPurifier/URIScheme/data.php';
+require_once $__dir . '/HTMLPurifier/URIScheme/file.php';
require_once $__dir . '/HTMLPurifier/URIScheme/ftp.php';
require_once $__dir . '/HTMLPurifier/URIScheme/http.php';
require_once $__dir . '/HTMLPurifier/URIScheme/https.php';
diff --git a/library/HTMLPurifier/Arborize.php b/library/HTMLPurifier/Arborize.php
new file mode 100644
index 000000000..9e6617be5
--- /dev/null
+++ b/library/HTMLPurifier/Arborize.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Converts a stream of HTMLPurifier_Token into an HTMLPurifier_Node,
+ * and back again.
+ *
+ * @note This transformation is not an equivalence. We mutate the input
+ * token stream to make it so; see all [MUT] markers in code.
+ */
+class HTMLPurifier_Arborize
+{
+ public static function arborize($tokens, $config, $context) {
+ $definition = $config->getHTMLDefinition();
+ $parent = new HTMLPurifier_Token_Start($definition->info_parent);
+ $stack = array($parent->toNode());
+ foreach ($tokens as $token) {
+ $token->skip = null; // [MUT]
+ $token->carryover = null; // [MUT]
+ if ($token instanceof HTMLPurifier_Token_End) {
+ $token->start = null; // [MUT]
+ $r = array_pop($stack);
+ assert($r->name === $token->name);
+ assert(empty($token->attr));
+ $r->endCol = $token->col;
+ $r->endLine = $token->line;
+ $r->endArmor = $token->armor;
+ continue;
+ }
+ $node = $token->toNode();
+ $stack[count($stack)-1]->children[] = $node;
+ if ($token instanceof HTMLPurifier_Token_Start) {
+ $stack[] = $node;
+ }
+ }
+ assert(count($stack) == 1);
+ return $stack[0];
+ }
+
+ public static function flatten($node, $config, $context) {
+ $level = 0;
+ $nodes = array($level => new HTMLPurifier_Queue(array($node)));
+ $closingTokens = array();
+ $tokens = array();
+ do {
+ while (!$nodes[$level]->isEmpty()) {
+ $node = $nodes[$level]->shift(); // FIFO
+ list($start, $end) = $node->toTokenPair();
+ if ($level > 0) {
+ $tokens[] = $start;
+ }
+ if ($end !== NULL) {
+ $closingTokens[$level][] = $end;
+ }
+ if ($node instanceof HTMLPurifier_Node_Element) {
+ $level++;
+ $nodes[$level] = new HTMLPurifier_Queue();
+ foreach ($node->children as $childNode) {
+ $nodes[$level]->push($childNode);
+ }
+ }
+ }
+ $level--;
+ if ($level && isset($closingTokens[$level])) {
+ while ($token = array_pop($closingTokens[$level])) {
+ $tokens[] = $token;
+ }
+ }
+ } while ($level > 0);
+ return $tokens;
+ }
+}
diff --git a/library/HTMLPurifier/AttrCollections.php b/library/HTMLPurifier/AttrCollections.php
index 555b86d04..4f6c2e39a 100644
--- a/library/HTMLPurifier/AttrCollections.php
+++ b/library/HTMLPurifier/AttrCollections.php
@@ -8,7 +8,8 @@ class HTMLPurifier_AttrCollections
{
/**
- * Associative array of attribute collections, indexed by name
+ * Associative array of attribute collections, indexed by name.
+ * @type array
*/
public $info = array();
@@ -16,10 +17,11 @@ class HTMLPurifier_AttrCollections
* Performs all expansions on internal data for use by other inclusions
* It also collects all attribute collection extensions from
* modules
- * @param $attr_types HTMLPurifier_AttrTypes instance
- * @param $modules Hash array of HTMLPurifier_HTMLModule members
+ * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
+ * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members
*/
- public function __construct($attr_types, $modules) {
+ public function __construct($attr_types, $modules)
+ {
// load extensions from the modules
foreach ($modules as $module) {
foreach ($module->attr_collections as $coll_i => $coll) {
@@ -30,7 +32,9 @@ class HTMLPurifier_AttrCollections
if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
// merge in includes
$this->info[$coll_i][$attr_i] = array_merge(
- $this->info[$coll_i][$attr_i], $attr);
+ $this->info[$coll_i][$attr_i],
+ $attr
+ );
continue;
}
$this->info[$coll_i][$attr_i] = $attr;
@@ -49,20 +53,29 @@ class HTMLPurifier_AttrCollections
/**
* Takes a reference to an attribute associative array and performs
* all inclusions specified by the zero index.
- * @param &$attr Reference to attribute array
+ * @param array &$attr Reference to attribute array
*/
- public function performInclusions(&$attr) {
- if (!isset($attr[0])) return;
+ public function performInclusions(&$attr)
+ {
+ if (!isset($attr[0])) {
+ return;
+ }
$merge = $attr[0];
$seen = array(); // recursion guard
// loop through all the inclusions
for ($i = 0; isset($merge[$i]); $i++) {
- if (isset($seen[$merge[$i]])) continue;
+ if (isset($seen[$merge[$i]])) {
+ continue;
+ }
$seen[$merge[$i]] = true;
// foreach attribute of the inclusion, copy it over
- if (!isset($this->info[$merge[$i]])) continue;
+ if (!isset($this->info[$merge[$i]])) {
+ continue;
+ }
foreach ($this->info[$merge[$i]] as $key => $value) {
- if (isset($attr[$key])) continue; // also catches more inclusions
+ if (isset($attr[$key])) {
+ continue;
+ } // also catches more inclusions
$attr[$key] = $value;
}
if (isset($this->info[$merge[$i]][0])) {
@@ -76,20 +89,24 @@ class HTMLPurifier_AttrCollections
/**
* Expands all string identifiers in an attribute array by replacing
* them with the appropriate values inside HTMLPurifier_AttrTypes
- * @param &$attr Reference to attribute array
- * @param $attr_types HTMLPurifier_AttrTypes instance
+ * @param array &$attr Reference to attribute array
+ * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
*/
- public function expandIdentifiers(&$attr, $attr_types) {
-
+ public function expandIdentifiers(&$attr, $attr_types)
+ {
// because foreach will process new elements we add, make sure we
// skip duplicates
$processed = array();
foreach ($attr as $def_i => $def) {
// skip inclusions
- if ($def_i === 0) continue;
+ if ($def_i === 0) {
+ continue;
+ }
- if (isset($processed[$def_i])) continue;
+ if (isset($processed[$def_i])) {
+ continue;
+ }
// determine whether or not attribute is required
if ($required = (strpos($def_i, '*') !== false)) {
@@ -120,9 +137,7 @@ class HTMLPurifier_AttrCollections
unset($attr[$def_i]);
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef.php b/library/HTMLPurifier/AttrDef.php
index b2e4f36c5..5ac06522b 100644
--- a/library/HTMLPurifier/AttrDef.php
+++ b/library/HTMLPurifier/AttrDef.php
@@ -14,23 +14,25 @@ abstract class HTMLPurifier_AttrDef
{
/**
- * Tells us whether or not an HTML attribute is minimized. Has no
- * meaning in other contexts.
+ * Tells us whether or not an HTML attribute is minimized.
+ * Has no meaning in other contexts.
+ * @type bool
*/
public $minimized = false;
/**
- * Tells us whether or not an HTML attribute is required. Has no
- * meaning in other contexts
+ * Tells us whether or not an HTML attribute is required.
+ * Has no meaning in other contexts
+ * @type bool
*/
public $required = false;
/**
* Validates and cleans passed string according to a definition.
*
- * @param $string String to be validated and cleaned.
- * @param $config Mandatory HTMLPurifier_Config object.
- * @param $context Mandatory HTMLPurifier_AttrContext object.
+ * @param string $string String to be validated and cleaned.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object.
*/
abstract public function validate($string, $config, $context);
@@ -55,7 +57,8 @@ abstract class HTMLPurifier_AttrDef
* parsing XML, thus, this behavior may still be correct. We
* assume that newlines have been normalized.
*/
- public function parseCDATA($string) {
+ public function parseCDATA($string)
+ {
$string = trim($string);
$string = str_replace(array("\n", "\t", "\r"), ' ', $string);
return $string;
@@ -63,10 +66,11 @@ abstract class HTMLPurifier_AttrDef
/**
* Factory method for creating this class from a string.
- * @param $string String construction info
- * @return Created AttrDef object corresponding to $string
+ * @param string $string String construction info
+ * @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string
*/
- public function make($string) {
+ public function make($string)
+ {
// default implementation, return a flyweight of this object.
// If $string has an effect on the returned object (i.e. you
// need to overload this method), it is best
@@ -77,16 +81,20 @@ abstract class HTMLPurifier_AttrDef
/**
* Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work
* properly. THIS IS A HACK!
+ * @param string $string a CSS colour definition
+ * @return string
*/
- protected function mungeRgb($string) {
+ protected function mungeRgb($string)
+ {
return preg_replace('/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/', 'rgb(\1,\2,\3)', $string);
}
/**
- * Parses a possibly escaped CSS string and returns the "pure"
+ * Parses a possibly escaped CSS string and returns the "pure"
* version of it.
*/
- protected function expandCSSEscape($string) {
+ protected function expandCSSEscape($string)
+ {
// flexibly parse it
$ret = '';
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
@@ -99,25 +107,32 @@ abstract class HTMLPurifier_AttrDef
if (ctype_xdigit($string[$i])) {
$code = $string[$i];
for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) {
- if (!ctype_xdigit($string[$i])) break;
+ if (!ctype_xdigit($string[$i])) {
+ break;
+ }
$code .= $string[$i];
}
// We have to be extremely careful when adding
// new characters, to make sure we're not breaking
// the encoding.
$char = HTMLPurifier_Encoder::unichr(hexdec($code));
- if (HTMLPurifier_Encoder::cleanUTF8($char) === '') continue;
+ if (HTMLPurifier_Encoder::cleanUTF8($char) === '') {
+ continue;
+ }
$ret .= $char;
- if ($i < $c && trim($string[$i]) !== '') $i--;
+ if ($i < $c && trim($string[$i]) !== '') {
+ $i--;
+ }
+ continue;
+ }
+ if ($string[$i] === "\n") {
continue;
}
- if ($string[$i] === "\n") continue;
}
$ret .= $string[$i];
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS.php b/library/HTMLPurifier/AttrDef/CSS.php
index 953e70675..02c1641fb 100644
--- a/library/HTMLPurifier/AttrDef/CSS.php
+++ b/library/HTMLPurifier/AttrDef/CSS.php
@@ -14,8 +14,14 @@
class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
{
- public function validate($css, $config, $context) {
-
+ /**
+ * @param string $css
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($css, $config, $context)
+ {
$css = $this->parseCDATA($css);
$definition = $config->getCSSDefinition();
@@ -36,34 +42,47 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
$context->register('CurrentCSSProperty', $property);
foreach ($declarations as $declaration) {
- if (!$declaration) continue;
- if (!strpos($declaration, ':')) continue;
+ if (!$declaration) {
+ continue;
+ }
+ if (!strpos($declaration, ':')) {
+ continue;
+ }
list($property, $value) = explode(':', $declaration, 2);
$property = trim($property);
- $value = trim($value);
+ $value = trim($value);
$ok = false;
do {
if (isset($definition->info[$property])) {
$ok = true;
break;
}
- if (ctype_lower($property)) break;
+ if (ctype_lower($property)) {
+ break;
+ }
$property = strtolower($property);
if (isset($definition->info[$property])) {
$ok = true;
break;
}
- } while(0);
- if (!$ok) continue;
+ } while (0);
+ if (!$ok) {
+ continue;
+ }
// inefficient call, since the validator will do this again
if (strtolower(trim($value)) !== 'inherit') {
// inherit works for everything (but only on the base property)
$result = $definition->info[$property]->validate(
- $value, $config, $context );
+ $value,
+ $config,
+ $context
+ );
} else {
$result = 'inherit';
}
- if ($result === false) continue;
+ if ($result === false) {
+ continue;
+ }
$propvalues[$property] = $result;
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php b/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
index 292c040d4..af2b83dff 100644
--- a/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
+++ b/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
@@ -3,19 +3,32 @@
class HTMLPurifier_AttrDef_CSS_AlphaValue extends HTMLPurifier_AttrDef_CSS_Number
{
- public function __construct() {
+ public function __construct()
+ {
parent::__construct(false); // opacity is non-negative, but we will clamp it
}
- public function validate($number, $config, $context) {
+ /**
+ * @param string $number
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function validate($number, $config, $context)
+ {
$result = parent::validate($number, $config, $context);
- if ($result === false) return $result;
- $float = (float) $result;
- if ($float < 0.0) $result = '0';
- if ($float > 1.0) $result = '1';
+ if ($result === false) {
+ return $result;
+ }
+ $float = (float)$result;
+ if ($float < 0.0) {
+ $result = '0';
+ }
+ if ($float > 1.0) {
+ $result = '1';
+ }
return $result;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Background.php b/library/HTMLPurifier/AttrDef/CSS/Background.php
index 3a3d20cd6..7f1ea3b0f 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Background.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Background.php
@@ -9,11 +9,16 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
/**
* Local copy of component validators.
+ * @type HTMLPurifier_AttrDef[]
* @note See HTMLPurifier_AttrDef_Font::$info for a similar impl.
*/
protected $info;
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
$this->info['background-color'] = $def->info['background-color'];
$this->info['background-image'] = $def->info['background-image'];
@@ -22,40 +27,55 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$this->info['background-position'] = $def->info['background-position'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// munge rgb() decl if necessary
$string = $this->mungeRgb($string);
// assumes URI doesn't have spaces in it
- $bits = explode(' ', strtolower($string)); // bits to process
+ $bits = explode(' ', $string); // bits to process
$caught = array();
- $caught['color'] = false;
- $caught['image'] = false;
- $caught['repeat'] = false;
+ $caught['color'] = false;
+ $caught['image'] = false;
+ $caught['repeat'] = false;
$caught['attachment'] = false;
$caught['position'] = false;
$i = 0; // number of catches
- $none = false;
foreach ($bits as $bit) {
- if ($bit === '') continue;
+ if ($bit === '') {
+ continue;
+ }
foreach ($caught as $key => $status) {
if ($key != 'position') {
- if ($status !== false) continue;
+ if ($status !== false) {
+ continue;
+ }
$r = $this->info['background-' . $key]->validate($bit, $config, $context);
} else {
$r = $bit;
}
- if ($r === false) continue;
+ if ($r === false) {
+ continue;
+ }
if ($key == 'position') {
- if ($caught[$key] === false) $caught[$key] = '';
+ if ($caught[$key] === false) {
+ $caught[$key] = '';
+ }
$caught[$key] .= $r . ' ';
} else {
$caught[$key] = $r;
@@ -65,7 +85,9 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
}
}
- if (!$i) return false;
+ if (!$i) {
+ return false;
+ }
if ($caught['position'] !== false) {
$caught['position'] = $this->info['background-position']->
validate($caught['position'], $config, $context);
@@ -73,15 +95,17 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$ret = array();
foreach ($caught as $value) {
- if ($value === false) continue;
+ if ($value === false) {
+ continue;
+ }
$ret[] = $value;
}
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php b/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
index fae82eaec..4580ef5a9 100644
--- a/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
+++ b/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
@@ -44,15 +44,30 @@
class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
{
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Length
+ */
protected $length;
+
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Percentage
+ */
protected $percentage;
- public function __construct() {
- $this->length = new HTMLPurifier_AttrDef_CSS_Length();
+ public function __construct()
+ {
+ $this->length = new HTMLPurifier_AttrDef_CSS_Length();
$this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
$bits = explode(' ', $string);
@@ -74,7 +89,9 @@ class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
);
foreach ($bits as $bit) {
- if ($bit === '') continue;
+ if ($bit === '') {
+ continue;
+ }
// test for keyword
$lbit = ctype_lower($bit) ? $bit : strtolower($bit);
@@ -104,30 +121,37 @@ class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
$measures[] = $r;
$i++;
}
-
}
- if (!$i) return false; // no valid values were caught
+ if (!$i) {
+ return false;
+ } // no valid values were caught
$ret = array();
// first keyword
- if ($keywords['h']) $ret[] = $keywords['h'];
- elseif ($keywords['ch']) {
+ if ($keywords['h']) {
+ $ret[] = $keywords['h'];
+ } elseif ($keywords['ch']) {
$ret[] = $keywords['ch'];
$keywords['cv'] = false; // prevent re-use: center = center center
+ } elseif (count($measures)) {
+ $ret[] = array_shift($measures);
}
- elseif (count($measures)) $ret[] = array_shift($measures);
- if ($keywords['v']) $ret[] = $keywords['v'];
- elseif ($keywords['cv']) $ret[] = $keywords['cv'];
- elseif (count($measures)) $ret[] = array_shift($measures);
+ if ($keywords['v']) {
+ $ret[] = $keywords['v'];
+ } elseif ($keywords['cv']) {
+ $ret[] = $keywords['cv'];
+ } elseif (count($measures)) {
+ $ret[] = array_shift($measures);
+ }
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Border.php b/library/HTMLPurifier/AttrDef/CSS/Border.php
index 42a1d1b4a..16243ba1e 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Border.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Border.php
@@ -8,17 +8,29 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
/**
* Local copy of properties this property is shorthand for.
+ * @type HTMLPurifier_AttrDef[]
*/
protected $info = array();
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
$this->info['border-width'] = $def->info['border-width'];
$this->info['border-style'] = $def->info['border-style'];
$this->info['border-top-color'] = $def->info['border-top-color'];
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
$string = $this->mungeRgb($string);
$bits = explode(' ', $string);
@@ -26,7 +38,9 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
$ret = ''; // return value
foreach ($bits as $bit) {
foreach ($this->info as $propname => $validator) {
- if (isset($done[$propname])) continue;
+ if (isset($done[$propname])) {
+ continue;
+ }
$r = $validator->validate($bit, $config, $context);
if ($r !== false) {
$ret .= $r . ' ';
@@ -37,7 +51,6 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
}
return rtrim($ret);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Color.php b/library/HTMLPurifier/AttrDef/CSS/Color.php
index 07f95a671..16d2a6b98 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Color.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Color.php
@@ -6,29 +6,47 @@
class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
{
- public function validate($color, $config, $context) {
-
+ /**
+ * @param string $color
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($color, $config, $context)
+ {
static $colors = null;
- if ($colors === null) $colors = $config->get('Core.ColorKeywords');
+ if ($colors === null) {
+ $colors = $config->get('Core.ColorKeywords');
+ }
$color = trim($color);
- if ($color === '') return false;
+ if ($color === '') {
+ return false;
+ }
$lower = strtolower($color);
- if (isset($colors[$lower])) return $colors[$lower];
+ if (isset($colors[$lower])) {
+ return $colors[$lower];
+ }
if (strpos($color, 'rgb(') !== false) {
// rgb literal handling
$length = strlen($color);
- if (strpos($color, ')') !== $length - 1) return false;
+ if (strpos($color, ')') !== $length - 1) {
+ return false;
+ }
$triad = substr($color, 4, $length - 4 - 1);
$parts = explode(',', $triad);
- if (count($parts) !== 3) return false;
+ if (count($parts) !== 3) {
+ return false;
+ }
$type = false; // to ensure that they're all the same type
$new_parts = array();
foreach ($parts as $part) {
$part = trim($part);
- if ($part === '') return false;
+ if ($part === '') {
+ return false;
+ }
$length = strlen($part);
if ($part[$length - 1] === '%') {
// handle percents
@@ -37,9 +55,13 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
} elseif ($type !== 'percentage') {
return false;
}
- $num = (float) substr($part, 0, $length - 1);
- if ($num < 0) $num = 0;
- if ($num > 100) $num = 100;
+ $num = (float)substr($part, 0, $length - 1);
+ if ($num < 0) {
+ $num = 0;
+ }
+ if ($num > 100) {
+ $num = 100;
+ }
$new_parts[] = "$num%";
} else {
// handle integers
@@ -48,10 +70,14 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
} elseif ($type !== 'integer') {
return false;
}
- $num = (int) $part;
- if ($num < 0) $num = 0;
- if ($num > 255) $num = 255;
- $new_parts[] = (string) $num;
+ $num = (int)$part;
+ if ($num < 0) {
+ $num = 0;
+ }
+ if ($num > 255) {
+ $num = 255;
+ }
+ $new_parts[] = (string)$num;
}
}
$new_triad = implode(',', $new_parts);
@@ -65,14 +91,15 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
$color = '#' . $color;
}
$length = strlen($hex);
- if ($length !== 3 && $length !== 6) return false;
- if (!ctype_xdigit($hex)) return false;
+ if ($length !== 3 && $length !== 6) {
+ return false;
+ }
+ if (!ctype_xdigit($hex)) {
+ return false;
+ }
}
-
return $color;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Composite.php b/library/HTMLPurifier/AttrDef/CSS/Composite.php
index de1289cba..9c1750554 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Composite.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Composite.php
@@ -13,26 +13,36 @@ class HTMLPurifier_AttrDef_CSS_Composite extends HTMLPurifier_AttrDef
{
/**
- * List of HTMLPurifier_AttrDef objects that may process strings
+ * List of objects that may process strings.
+ * @type HTMLPurifier_AttrDef[]
* @todo Make protected
*/
public $defs;
/**
- * @param $defs List of HTMLPurifier_AttrDef objects
+ * @param HTMLPurifier_AttrDef[] $defs List of HTMLPurifier_AttrDef objects
*/
- public function __construct($defs) {
+ public function __construct($defs)
+ {
$this->defs = $defs;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
foreach ($this->defs as $i => $def) {
$result = $this->defs[$i]->validate($string, $config, $context);
- if ($result !== false) return $result;
+ if ($result !== false) {
+ return $result;
+ }
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php b/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
index 6599c5b2d..9d77cc9aa 100644
--- a/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
+++ b/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
@@ -5,22 +5,38 @@
*/
class HTMLPurifier_AttrDef_CSS_DenyElementDecorator extends HTMLPurifier_AttrDef
{
- public $def, $element;
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ public $def;
+ /**
+ * @type string
+ */
+ public $element;
/**
- * @param $def Definition to wrap
- * @param $element Element to deny
+ * @param HTMLPurifier_AttrDef $def Definition to wrap
+ * @param string $element Element to deny
*/
- public function __construct($def, $element) {
+ public function __construct($def, $element)
+ {
$this->def = $def;
$this->element = $element;
}
+
/**
* Checks if CurrentToken is set and equal to $this->element
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
*/
- public function validate($string, $config, $context) {
+ public function validate($string, $config, $context)
+ {
$token = $context->get('CurrentToken', true);
- if ($token && $token->name == $this->element) return false;
+ if ($token && $token->name == $this->element) {
+ return false;
+ }
return $this->def->validate($string, $config, $context);
}
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Filter.php b/library/HTMLPurifier/AttrDef/CSS/Filter.php
index 147894b86..bde4c3301 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Filter.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Filter.php
@@ -7,23 +7,37 @@
*/
class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
{
-
+ /**
+ * @type HTMLPurifier_AttrDef_Integer
+ */
protected $intValidator;
- public function __construct() {
+ public function __construct()
+ {
$this->intValidator = new HTMLPurifier_AttrDef_Integer();
}
- public function validate($value, $config, $context) {
+ /**
+ * @param string $value
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($value, $config, $context)
+ {
$value = $this->parseCDATA($value);
- if ($value === 'none') return $value;
+ if ($value === 'none') {
+ return $value;
+ }
// if we looped this we could support multiple filters
$function_length = strcspn($value, '(');
$function = trim(substr($value, 0, $function_length));
if ($function !== 'alpha' &&
$function !== 'Alpha' &&
$function !== 'progid:DXImageTransform.Microsoft.Alpha'
- ) return false;
+ ) {
+ return false;
+ }
$cursor = $function_length + 1;
$parameters_length = strcspn($value, ')', $cursor);
$parameters = substr($value, $cursor, $parameters_length);
@@ -32,15 +46,25 @@ class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
$lookup = array();
foreach ($params as $param) {
list($key, $value) = explode('=', $param);
- $key = trim($key);
+ $key = trim($key);
$value = trim($value);
- if (isset($lookup[$key])) continue;
- if ($key !== 'opacity') continue;
+ if (isset($lookup[$key])) {
+ continue;
+ }
+ if ($key !== 'opacity') {
+ continue;
+ }
$value = $this->intValidator->validate($value, $config, $context);
- if ($value === false) continue;
- $int = (int) $value;
- if ($int > 100) $value = '100';
- if ($int < 0) $value = '0';
+ if ($value === false) {
+ continue;
+ }
+ $int = (int)$value;
+ if ($int > 100) {
+ $value = '100';
+ }
+ if ($int < 0) {
+ $value = '0';
+ }
$ret_params[] = "$key=$value";
$lookup[$key] = true;
}
@@ -48,7 +72,6 @@ class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
$ret_function = "$function($ret_parameters)";
return $ret_function;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Font.php b/library/HTMLPurifier/AttrDef/CSS/Font.php
index 699ee0b70..579b97ef1 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Font.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Font.php
@@ -7,8 +7,8 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
{
/**
- * Local copy of component validators.
- *
+ * Local copy of validators
+ * @type HTMLPurifier_AttrDef[]
* @note If we moved specific CSS property definitions to their own
* classes instead of having them be assembled at run time by
* CSSDefinition, this wouldn't be necessary. We'd instantiate
@@ -16,18 +16,28 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
*/
protected $info = array();
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
- $this->info['font-style'] = $def->info['font-style'];
+ $this->info['font-style'] = $def->info['font-style'];
$this->info['font-variant'] = $def->info['font-variant'];
- $this->info['font-weight'] = $def->info['font-weight'];
- $this->info['font-size'] = $def->info['font-size'];
- $this->info['line-height'] = $def->info['line-height'];
- $this->info['font-family'] = $def->info['font-family'];
+ $this->info['font-weight'] = $def->info['font-weight'];
+ $this->info['font-size'] = $def->info['font-size'];
+ $this->info['line-height'] = $def->info['line-height'];
+ $this->info['font-family'] = $def->info['font-family'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $system_fonts = array(
'caption' => true,
'icon' => true,
@@ -39,7 +49,9 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// check if it's one of the keywords
$lowercase_string = strtolower($string);
@@ -54,15 +66,20 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
$final = ''; // output
for ($i = 0, $size = count($bits); $i < $size; $i++) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
switch ($stage) {
-
- // attempting to catch font-style, font-variant or font-weight
- case 0:
+ case 0: // attempting to catch font-style, font-variant or font-weight
foreach ($stage_1 as $validator_name) {
- if (isset($caught[$validator_name])) continue;
+ if (isset($caught[$validator_name])) {
+ continue;
+ }
$r = $this->info[$validator_name]->validate(
- $bits[$i], $config, $context);
+ $bits[$i],
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r . ' ';
$caught[$validator_name] = true;
@@ -70,15 +87,17 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
}
}
// all three caught, continue on
- if (count($caught) >= 3) $stage = 1;
- if ($r !== false) break;
-
- // attempting to catch font-size and perhaps line-height
- case 1:
+ if (count($caught) >= 3) {
+ $stage = 1;
+ }
+ if ($r !== false) {
+ break;
+ }
+ case 1: // attempting to catch font-size and perhaps line-height
$found_slash = false;
if (strpos($bits[$i], '/') !== false) {
list($font_size, $line_height) =
- explode('/', $bits[$i]);
+ explode('/', $bits[$i]);
if ($line_height === '') {
// ooh, there's a space after the slash!
$line_height = false;
@@ -89,14 +108,19 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
$line_height = false;
}
$r = $this->info['font-size']->validate(
- $font_size, $config, $context);
+ $font_size,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r;
// attempt to catch line-height
if ($line_height === false) {
// we need to scroll forward
for ($j = $i + 1; $j < $size; $j++) {
- if ($bits[$j] === '') continue;
+ if ($bits[$j] === '') {
+ continue;
+ }
if ($bits[$j] === '/') {
if ($found_slash) {
return false;
@@ -116,7 +140,10 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
if ($found_slash) {
$i = $j;
$r = $this->info['line-height']->validate(
- $line_height, $config, $context);
+ $line_height,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= '/' . $r;
}
@@ -126,13 +153,14 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
break;
}
return false;
-
- // attempting to catch font-family
- case 2:
+ case 2: // attempting to catch font-family
$font_family =
implode(' ', array_slice($bits, $i, $size - $i));
$r = $this->info['font-family']->validate(
- $font_family, $config, $context);
+ $font_family,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r . ' ';
// processing completed successfully
@@ -143,7 +171,6 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/FontFamily.php b/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
index 42c2054c2..74e24c881 100644
--- a/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
+++ b/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
@@ -2,12 +2,58 @@
/**
* Validates a font family list according to CSS spec
- * @todo whitelisting allowed fonts would be nice
*/
class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
+ protected $mask = null;
+
+ public function __construct()
+ {
+ $this->mask = '_- ';
+ for ($c = 'a'; $c <= 'z'; $c++) {
+ $this->mask .= $c;
+ }
+ for ($c = 'A'; $c <= 'Z'; $c++) {
+ $this->mask .= $c;
+ }
+ for ($c = '0'; $c <= '9'; $c++) {
+ $this->mask .= $c;
+ } // cast-y, but should be fine
+ // special bytes used by UTF-8
+ for ($i = 0x80; $i <= 0xFF; $i++) {
+ // We don't bother excluding invalid bytes in this range,
+ // because the our restriction of well-formed UTF-8 will
+ // prevent these from ever occurring.
+ $this->mask .= chr($i);
+ }
+
+ /*
+ PHP's internal strcspn implementation is
+ O(length of string * length of mask), making it inefficient
+ for large masks. However, it's still faster than
+ preg_match 8)
+ for (p = s1;;) {
+ spanp = s2;
+ do {
+ if (*spanp == c || p == s1_end) {
+ return p - s1;
+ }
+ } while (spanp++ < (s2_end - 1));
+ c = *++p;
+ }
+ */
+ // possible optimization: invert the mask.
+ }
+
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $generic_names = array(
'serif' => true,
'sans-serif' => true,
@@ -15,24 +61,33 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
'fantasy' => true,
'cursive' => true
);
+ $allowed_fonts = $config->get('CSS.AllowedFonts');
// assume that no font names contain commas in them
$fonts = explode(',', $string);
$final = '';
- foreach($fonts as $font) {
+ foreach ($fonts as $font) {
$font = trim($font);
- if ($font === '') continue;
+ if ($font === '') {
+ continue;
+ }
// match a generic name
if (isset($generic_names[$font])) {
- $final .= $font . ', ';
+ if ($allowed_fonts === null || isset($allowed_fonts[$font])) {
+ $final .= $font . ', ';
+ }
continue;
}
// match a quoted name
if ($font[0] === '"' || $font[0] === "'") {
$length = strlen($font);
- if ($length <= 2) continue;
+ if ($length <= 2) {
+ continue;
+ }
$quote = $font[0];
- if ($font[$length - 1] !== $quote) continue;
+ if ($font[$length - 1] !== $quote) {
+ continue;
+ }
$font = substr($font, 1, $length - 2);
}
@@ -40,6 +95,10 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
// $font is a pure representation of the font name
+ if ($allowed_fonts !== null && !isset($allowed_fonts[$font])) {
+ continue;
+ }
+
if (ctype_alnum($font) && $font !== '') {
// very simple font, allow it in unharmed
$final .= $font . ', ';
@@ -50,20 +109,108 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
// shouldn't show up regardless
$font = str_replace(array("\n", "\t", "\r", "\x0C"), ' ', $font);
- // These ugly transforms don't pose a security
- // risk (as \\ and \" might). We could try to be clever and
- // use single-quote wrapping when there is a double quote
- // present, but I have choosen not to implement that.
- // (warning: this code relies on the selection of quotation
- // mark below)
- $font = str_replace('\\', '\\5C ', $font);
- $font = str_replace('"', '\\22 ', $font);
-
- // complicated font, requires quoting
- $final .= "\"$font\", "; // note that this will later get turned into &quot;
+ // Here, there are various classes of characters which need
+ // to be treated differently:
+ // - Alphanumeric characters are essentially safe. We
+ // handled these above.
+ // - Spaces require quoting, though most parsers will do
+ // the right thing if there aren't any characters that
+ // can be misinterpreted
+ // - Dashes rarely occur, but they fairly unproblematic
+ // for parsing/rendering purposes.
+ // The above characters cover the majority of Western font
+ // names.
+ // - Arbitrary Unicode characters not in ASCII. Because
+ // most parsers give little thought to Unicode, treatment
+ // of these codepoints is basically uniform, even for
+ // punctuation-like codepoints. These characters can
+ // show up in non-Western pages and are supported by most
+ // major browsers, for example: "MS 明朝" is a
+ // legitimate font-name
+ // <http://ja.wikipedia.org/wiki/MS_明朝>. See
+ // the CSS3 spec for more examples:
+ // <http://www.w3.org/TR/2011/WD-css3-fonts-20110324/localizedfamilynames.png>
+ // You can see live samples of these on the Internet:
+ // <http://www.google.co.jp/search?q=font-family+MS+明朝|ゴシック>
+ // However, most of these fonts have ASCII equivalents:
+ // for example, 'MS Mincho', and it's considered
+ // professional to use ASCII font names instead of
+ // Unicode font names. Thanks Takeshi Terada for
+ // providing this information.
+ // The following characters, to my knowledge, have not been
+ // used to name font names.
+ // - Single quote. While theoretically you might find a
+ // font name that has a single quote in its name (serving
+ // as an apostrophe, e.g. Dave's Scribble), I haven't
+ // been able to find any actual examples of this.
+ // Internet Explorer's cssText translation (which I
+ // believe is invoked by innerHTML) normalizes any
+ // quoting to single quotes, and fails to escape single
+ // quotes. (Note that this is not IE's behavior for all
+ // CSS properties, just some sort of special casing for
+ // font-family). So a single quote *cannot* be used
+ // safely in the font-family context if there will be an
+ // innerHTML/cssText translation. Note that Firefox 3.x
+ // does this too.
+ // - Double quote. In IE, these get normalized to
+ // single-quotes, no matter what the encoding. (Fun
+ // fact, in IE8, the 'content' CSS property gained
+ // support, where they special cased to preserve encoded
+ // double quotes, but still translate unadorned double
+ // quotes into single quotes.) So, because their
+ // fixpoint behavior is identical to single quotes, they
+ // cannot be allowed either. Firefox 3.x displays
+ // single-quote style behavior.
+ // - Backslashes are reduced by one (so \\ -> \) every
+ // iteration, so they cannot be used safely. This shows
+ // up in IE7, IE8 and FF3
+ // - Semicolons, commas and backticks are handled properly.
+ // - The rest of the ASCII punctuation is handled properly.
+ // We haven't checked what browsers do to unadorned
+ // versions, but this is not important as long as the
+ // browser doesn't /remove/ surrounding quotes (as IE does
+ // for HTML).
+ //
+ // With these results in hand, we conclude that there are
+ // various levels of safety:
+ // - Paranoid: alphanumeric, spaces and dashes(?)
+ // - International: Paranoid + non-ASCII Unicode
+ // - Edgy: Everything except quotes, backslashes
+ // - NoJS: Standards compliance, e.g. sod IE. Note that
+ // with some judicious character escaping (since certain
+ // types of escaping doesn't work) this is theoretically
+ // OK as long as innerHTML/cssText is not called.
+ // We believe that international is a reasonable default
+ // (that we will implement now), and once we do more
+ // extensive research, we may feel comfortable with dropping
+ // it down to edgy.
+
+ // Edgy: alphanumeric, spaces, dashes, underscores and Unicode. Use of
+ // str(c)spn assumes that the string was already well formed
+ // Unicode (which of course it is).
+ if (strspn($font, $this->mask) !== strlen($font)) {
+ continue;
+ }
+
+ // Historical:
+ // In the absence of innerHTML/cssText, these ugly
+ // transforms don't pose a security risk (as \\ and \"
+ // might--these escapes are not supported by most browsers).
+ // We could try to be clever and use single-quote wrapping
+ // when there is a double quote present, but I have choosen
+ // not to implement that. (NOTE: you can reduce the amount
+ // of escapes by one depending on what quoting style you use)
+ // $font = str_replace('\\', '\\5C ', $font);
+ // $font = str_replace('"', '\\22 ', $font);
+ // $font = str_replace("'", '\\27 ', $font);
+
+ // font possibly with spaces, requires quoting
+ $final .= "'$font', ";
}
$final = rtrim($final, ', ');
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return $final;
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Ident.php b/library/HTMLPurifier/AttrDef/CSS/Ident.php
new file mode 100644
index 000000000..973002c17
--- /dev/null
+++ b/library/HTMLPurifier/AttrDef/CSS/Ident.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * Validates based on {ident} CSS grammar production
+ */
+class HTMLPurifier_AttrDef_CSS_Ident extends HTMLPurifier_AttrDef
+{
+
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ $string = trim($string);
+
+ // early abort: '' and '0' (strings that convert to false) are invalid
+ if (!$string) {
+ return false;
+ }
+
+ $pattern = '/^(-?[A-Za-z_][A-Za-z_\-0-9]*)$/';
+ if (!preg_match($pattern, $string)) {
+ return false;
+ }
+ return $string;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php b/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
index 4e6b35e5a..ffc989fe8 100644
--- a/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
+++ b/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
@@ -5,20 +5,34 @@
*/
class HTMLPurifier_AttrDef_CSS_ImportantDecorator extends HTMLPurifier_AttrDef
{
- public $def, $allow;
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ public $def;
+ /**
+ * @type bool
+ */
+ public $allow;
/**
- * @param $def Definition to wrap
- * @param $allow Whether or not to allow !important
+ * @param HTMLPurifier_AttrDef $def Definition to wrap
+ * @param bool $allow Whether or not to allow !important
*/
- public function __construct($def, $allow = false) {
+ public function __construct($def, $allow = false)
+ {
$this->def = $def;
$this->allow = $allow;
}
+
/**
* Intercepts and removes !important if necessary
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
*/
- public function validate($string, $config, $context) {
+ public function validate($string, $config, $context)
+ {
// test for ! and important tokens
$string = trim($string);
$is_important = false;
@@ -32,7 +46,9 @@ class HTMLPurifier_AttrDef_CSS_ImportantDecorator extends HTMLPurifier_AttrDef
}
}
$string = $this->def->validate($string, $config, $context);
- if ($this->allow && $is_important) $string .= ' !important';
+ if ($this->allow && $is_important) {
+ $string .= ' !important';
+ }
return $string;
}
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Length.php b/library/HTMLPurifier/AttrDef/CSS/Length.php
index a07ec5813..f12453a04 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Length.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Length.php
@@ -6,42 +6,72 @@
class HTMLPurifier_AttrDef_CSS_Length extends HTMLPurifier_AttrDef
{
- protected $min, $max;
+ /**
+ * @type HTMLPurifier_Length|string
+ */
+ protected $min;
/**
- * @param HTMLPurifier_Length $max Minimum length, or null for no bound. String is also acceptable.
- * @param HTMLPurifier_Length $max Maximum length, or null for no bound. String is also acceptable.
+ * @type HTMLPurifier_Length|string
*/
- public function __construct($min = null, $max = null) {
+ protected $max;
+
+ /**
+ * @param HTMLPurifier_Length|string $min Minimum length, or null for no bound. String is also acceptable.
+ * @param HTMLPurifier_Length|string $max Maximum length, or null for no bound. String is also acceptable.
+ */
+ public function __construct($min = null, $max = null)
+ {
$this->min = $min !== null ? HTMLPurifier_Length::make($min) : null;
$this->max = $max !== null ? HTMLPurifier_Length::make($max) : null;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
// Optimizations
- if ($string === '') return false;
- if ($string === '0') return '0';
- if (strlen($string) === 1) return false;
+ if ($string === '') {
+ return false;
+ }
+ if ($string === '0') {
+ return '0';
+ }
+ if (strlen($string) === 1) {
+ return false;
+ }
$length = HTMLPurifier_Length::make($string);
- if (!$length->isValid()) return false;
+ if (!$length->isValid()) {
+ return false;
+ }
if ($this->min) {
$c = $length->compareTo($this->min);
- if ($c === false) return false;
- if ($c < 0) return false;
+ if ($c === false) {
+ return false;
+ }
+ if ($c < 0) {
+ return false;
+ }
}
if ($this->max) {
$c = $length->compareTo($this->max);
- if ($c === false) return false;
- if ($c > 0) return false;
+ if ($c === false) {
+ return false;
+ }
+ if ($c > 0) {
+ return false;
+ }
}
-
return $length->toString();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/ListStyle.php b/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
index 4406868c0..e74d42654 100644
--- a/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
+++ b/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
@@ -8,46 +8,72 @@ class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef
{
/**
- * Local copy of component validators.
+ * Local copy of validators.
+ * @type HTMLPurifier_AttrDef[]
* @note See HTMLPurifier_AttrDef_CSS_Font::$info for a similar impl.
*/
protected $info;
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
- $this->info['list-style-type'] = $def->info['list-style-type'];
+ $this->info['list-style-type'] = $def->info['list-style-type'];
$this->info['list-style-position'] = $def->info['list-style-position'];
$this->info['list-style-image'] = $def->info['list-style-image'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// assumes URI doesn't have spaces in it
$bits = explode(' ', strtolower($string)); // bits to process
$caught = array();
- $caught['type'] = false;
+ $caught['type'] = false;
$caught['position'] = false;
- $caught['image'] = false;
+ $caught['image'] = false;
$i = 0; // number of catches
$none = false;
foreach ($bits as $bit) {
- if ($i >= 3) return; // optimization bit
- if ($bit === '') continue;
+ if ($i >= 3) {
+ return;
+ } // optimization bit
+ if ($bit === '') {
+ continue;
+ }
foreach ($caught as $key => $status) {
- if ($status !== false) continue;
+ if ($status !== false) {
+ continue;
+ }
$r = $this->info['list-style-' . $key]->validate($bit, $config, $context);
- if ($r === false) continue;
+ if ($r === false) {
+ continue;
+ }
if ($r === 'none') {
- if ($none) continue;
- else $none = true;
- if ($key == 'image') continue;
+ if ($none) {
+ continue;
+ } else {
+ $none = true;
+ }
+ if ($key == 'image') {
+ continue;
+ }
}
$caught[$key] = $r;
$i++;
@@ -55,24 +81,32 @@ class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef
}
}
- if (!$i) return false;
+ if (!$i) {
+ return false;
+ }
$ret = array();
// construct type
- if ($caught['type']) $ret[] = $caught['type'];
+ if ($caught['type']) {
+ $ret[] = $caught['type'];
+ }
// construct image
- if ($caught['image']) $ret[] = $caught['image'];
+ if ($caught['image']) {
+ $ret[] = $caught['image'];
+ }
// construct position
- if ($caught['position']) $ret[] = $caught['position'];
+ if ($caught['position']) {
+ $ret[] = $caught['position'];
+ }
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Multiple.php b/library/HTMLPurifier/AttrDef/CSS/Multiple.php
index 4d62a40d7..9f266cdd1 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Multiple.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Multiple.php
@@ -13,9 +13,9 @@
*/
class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
{
-
/**
* Instance of component definition to defer validation to.
+ * @type HTMLPurifier_AttrDef
* @todo Make protected
*/
public $single;
@@ -27,32 +27,45 @@ class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
public $max;
/**
- * @param $single HTMLPurifier_AttrDef to multiply
- * @param $max Max number of values allowed (usually four)
+ * @param HTMLPurifier_AttrDef $single HTMLPurifier_AttrDef to multiply
+ * @param int $max Max number of values allowed (usually four)
*/
- public function __construct($single, $max = 4) {
+ public function __construct($single, $max = 4)
+ {
$this->single = $single;
$this->max = $max;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n
$length = count($parts);
$final = '';
for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) {
- if (ctype_space($parts[$i])) continue;
+ if (ctype_space($parts[$i])) {
+ continue;
+ }
$result = $this->single->validate($parts[$i], $config, $context);
if ($result !== false) {
$final .= $result . ' ';
$num++;
}
}
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return rtrim($final);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Number.php b/library/HTMLPurifier/AttrDef/CSS/Number.php
index 3f99e12ec..8edc159e7 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Number.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Number.php
@@ -7,32 +7,44 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
{
/**
- * Bool indicating whether or not only positive values allowed.
+ * Indicates whether or not only positive values are allowed.
+ * @type bool
*/
protected $non_negative = false;
/**
- * @param $non_negative Bool indicating whether negatives are forbidden
+ * @param bool $non_negative indicates whether negatives are forbidden
*/
- public function __construct($non_negative = false) {
+ public function __construct($non_negative = false)
+ {
$this->non_negative = $non_negative;
}
/**
+ * @param string $number
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string|bool
* @warning Some contexts do not pass $config, $context. These
* variables should not be used without checking HTMLPurifier_Length
*/
- public function validate($number, $config, $context) {
-
+ public function validate($number, $config, $context)
+ {
$number = $this->parseCDATA($number);
- if ($number === '') return false;
- if ($number === '0') return '0';
+ if ($number === '') {
+ return false;
+ }
+ if ($number === '0') {
+ return '0';
+ }
$sign = '';
switch ($number[0]) {
case '-':
- if ($this->non_negative) return false;
+ if ($this->non_negative) {
+ return false;
+ }
$sign = '-';
case '+':
$number = substr($number, 1);
@@ -44,14 +56,20 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
}
// Period is the only non-numeric character allowed
- if (strpos($number, '.') === false) return false;
+ if (strpos($number, '.') === false) {
+ return false;
+ }
list($left, $right) = explode('.', $number, 2);
- if ($left === '' && $right === '') return false;
- if ($left !== '' && !ctype_digit($left)) return false;
+ if ($left === '' && $right === '') {
+ return false;
+ }
+ if ($left !== '' && !ctype_digit($left)) {
+ return false;
+ }
- $left = ltrim($left, '0');
+ $left = ltrim($left, '0');
$right = rtrim($right, '0');
if ($right === '') {
@@ -59,11 +77,8 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
} elseif (!ctype_digit($right)) {
return false;
}
-
return $sign . $left . '.' . $right;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Percentage.php b/library/HTMLPurifier/AttrDef/CSS/Percentage.php
index c34b8fc3c..f0f25c50a 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Percentage.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Percentage.php
@@ -7,34 +7,48 @@ class HTMLPurifier_AttrDef_CSS_Percentage extends HTMLPurifier_AttrDef
{
/**
- * Instance of HTMLPurifier_AttrDef_CSS_Number to defer number validation
+ * Instance to defer number validation to.
+ * @type HTMLPurifier_AttrDef_CSS_Number
*/
protected $number_def;
/**
- * @param Bool indicating whether to forbid negative values
+ * @param bool $non_negative Whether to forbid negative values
*/
- public function __construct($non_negative = false) {
+ public function __construct($non_negative = false)
+ {
$this->number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$length = strlen($string);
- if ($length === 1) return false;
- if ($string[$length - 1] !== '%') return false;
+ if ($length === 1) {
+ return false;
+ }
+ if ($string[$length - 1] !== '%') {
+ return false;
+ }
$number = substr($string, 0, $length - 1);
$number = $this->number_def->validate($number, $config, $context);
- if ($number === false) return false;
+ if ($number === false) {
+ return false;
+ }
return "$number%";
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php b/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
index 772c922d8..5fd4b7f7b 100644
--- a/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
+++ b/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
@@ -8,8 +8,14 @@
class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $allowed_values = array(
'line-through' => true,
'overline' => true,
@@ -18,7 +24,9 @@ class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
$string = strtolower($this->parseCDATA($string));
- if ($string === 'none') return $string;
+ if ($string === 'none') {
+ return $string;
+ }
$parts = explode(' ', $string);
$final = '';
@@ -28,11 +36,11 @@ class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
}
}
$final = rtrim($final);
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return $final;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/URI.php b/library/HTMLPurifier/AttrDef/CSS/URI.php
index 1df17dc25..f9434230e 100644
--- a/library/HTMLPurifier/AttrDef/CSS/URI.php
+++ b/library/HTMLPurifier/AttrDef/CSS/URI.php
@@ -12,25 +12,39 @@
class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
{
- public function __construct() {
+ public function __construct()
+ {
parent::__construct(true); // always embedded
}
- public function validate($uri_string, $config, $context) {
+ /**
+ * @param string $uri_string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($uri_string, $config, $context)
+ {
// parse the URI out of the string and then pass it onto
// the parent object
$uri_string = $this->parseCDATA($uri_string);
- if (strpos($uri_string, 'url(') !== 0) return false;
+ if (strpos($uri_string, 'url(') !== 0) {
+ return false;
+ }
$uri_string = substr($uri_string, 4);
$new_length = strlen($uri_string) - 1;
- if ($uri_string[$new_length] != ')') return false;
+ if ($uri_string[$new_length] != ')') {
+ return false;
+ }
$uri = trim(substr($uri_string, 0, $new_length));
if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) {
$quote = $uri[0];
$new_length = strlen($uri) - 1;
- if ($uri[$new_length] !== $quote) return false;
+ if ($uri[$new_length] !== $quote) {
+ return false;
+ }
$uri = substr($uri, 1, $new_length - 1);
}
@@ -38,15 +52,23 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
$result = parent::validate($uri, $config, $context);
- if ($result === false) return false;
+ if ($result === false) {
+ return false;
+ }
// extra sanity check; should have been done by URI
$result = str_replace(array('"', "\\", "\n", "\x0c", "\r"), "", $result);
- return "url(\"$result\")";
+ // suspicious characters are ()'; we're going to percent encode
+ // them for safety.
+ $result = str_replace(array('(', ')', "'"), array('%28', '%29', '%27'), $result);
+ // there's an extra bug where ampersands lose their escaping on
+ // an innerHTML cycle, so a very unlucky query parameter could
+ // then change the meaning of the URL. Unfortunately, there's
+ // not much we can do about that...
+ return "url(\"$result\")";
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Clone.php b/library/HTMLPurifier/AttrDef/Clone.php
new file mode 100644
index 000000000..6698a00c0
--- /dev/null
+++ b/library/HTMLPurifier/AttrDef/Clone.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Dummy AttrDef that mimics another AttrDef, BUT it generates clones
+ * with make.
+ */
+class HTMLPurifier_AttrDef_Clone extends HTMLPurifier_AttrDef
+{
+ /**
+ * What we're cloning.
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $clone;
+
+ /**
+ * @param HTMLPurifier_AttrDef $clone
+ */
+ public function __construct($clone)
+ {
+ $this->clone = $clone;
+ }
+
+ /**
+ * @param string $v
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($v, $config, $context)
+ {
+ return $this->clone->validate($v, $config, $context);
+ }
+
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef
+ */
+ public function make($string)
+ {
+ return clone $this->clone;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Enum.php b/library/HTMLPurifier/AttrDef/Enum.php
index 5d603ebcc..8abda7f6e 100644
--- a/library/HTMLPurifier/AttrDef/Enum.php
+++ b/library/HTMLPurifier/AttrDef/Enum.php
@@ -12,9 +12,10 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
/**
* Lookup table of valid values.
+ * @type array
* @todo Make protected
*/
- public $valid_values = array();
+ public $valid_values = array();
/**
* Bool indicating whether or not enumeration is case sensitive.
@@ -23,17 +24,23 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
protected $case_sensitive = false; // values according to W3C spec
/**
- * @param $valid_values List of valid values
- * @param $case_sensitive Bool indicating whether or not case sensitive
+ * @param array $valid_values List of valid values
+ * @param bool $case_sensitive Whether or not case sensitive
*/
- public function __construct(
- $valid_values = array(), $case_sensitive = false
- ) {
+ public function __construct($valid_values = array(), $case_sensitive = false)
+ {
$this->valid_values = array_flip($valid_values);
$this->case_sensitive = $case_sensitive;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
if (!$this->case_sensitive) {
// we may want to do full case-insensitive libraries
@@ -45,11 +52,13 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
}
/**
- * @param $string In form of comma-delimited list of case-insensitive
+ * @param string $string In form of comma-delimited list of case-insensitive
* valid values. Example: "foo,bar,baz". Prepend "s:" to make
* case sensitive
+ * @return HTMLPurifier_AttrDef_Enum
*/
- public function make($string) {
+ public function make($string)
+ {
if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') {
$string = substr($string, 2);
$sensitive = true;
@@ -59,7 +68,6 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
$values = explode(',', $string);
return new HTMLPurifier_AttrDef_Enum($values, $sensitive);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Bool.php b/library/HTMLPurifier/AttrDef/HTML/Bool.php
index e06987eb8..036a240e1 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Bool.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Bool.php
@@ -6,23 +6,46 @@
class HTMLPurifier_AttrDef_HTML_Bool extends HTMLPurifier_AttrDef
{
+ /**
+ * @type bool
+ */
protected $name;
+
+ /**
+ * @type bool
+ */
public $minimized = true;
- public function __construct($name = false) {$this->name = $name;}
+ /**
+ * @param bool $name
+ */
+ public function __construct($name = false)
+ {
+ $this->name = $name;
+ }
- public function validate($string, $config, $context) {
- if (empty($string)) return false;
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ if (empty($string)) {
+ return false;
+ }
return $this->name;
}
/**
- * @param $string Name of attribute
+ * @param string $string Name of attribute
+ * @return HTMLPurifier_AttrDef_HTML_Bool
*/
- public function make($string) {
+ public function make($string)
+ {
return new HTMLPurifier_AttrDef_HTML_Bool($string);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Class.php b/library/HTMLPurifier/AttrDef/HTML/Class.php
index 370068d97..d5013488f 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Class.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Class.php
@@ -5,7 +5,14 @@
*/
class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
{
- protected function split($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ protected function split($string, $config, $context)
+ {
// really, this twiddle should be lazy loaded
$name = $config->getDefinition('HTML')->doctype->name;
if ($name == "XHTML 1.1" || $name == "XHTML 2.0") {
@@ -14,13 +21,20 @@ class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
return preg_split('/\s+/', $string);
}
}
- protected function filter($tokens, $config, $context) {
+
+ /**
+ * @param array $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ protected function filter($tokens, $config, $context)
+ {
$allowed = $config->get('Attr.AllowedClasses');
$forbidden = $config->get('Attr.ForbiddenClasses');
$ret = array();
foreach ($tokens as $token) {
- if (
- ($allowed === null || isset($allowed[$token])) &&
+ if (($allowed === null || isset($allowed[$token])) &&
!isset($forbidden[$token]) &&
// We need this O(n) check because of PHP's array
// implementation that casts -0 to 0.
diff --git a/library/HTMLPurifier/AttrDef/HTML/Color.php b/library/HTMLPurifier/AttrDef/HTML/Color.php
index d01e20454..946ebb782 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Color.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Color.php
@@ -6,27 +6,46 @@
class HTMLPurifier_AttrDef_HTML_Color extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $colors = null;
- if ($colors === null) $colors = $config->get('Core.ColorKeywords');
+ if ($colors === null) {
+ $colors = $config->get('Core.ColorKeywords');
+ }
$string = trim($string);
- if (empty($string)) return false;
- if (isset($colors[$string])) return $colors[$string];
- if ($string[0] === '#') $hex = substr($string, 1);
- else $hex = $string;
+ if (empty($string)) {
+ return false;
+ }
+ $lower = strtolower($string);
+ if (isset($colors[$lower])) {
+ return $colors[$lower];
+ }
+ if ($string[0] === '#') {
+ $hex = substr($string, 1);
+ } else {
+ $hex = $string;
+ }
$length = strlen($hex);
- if ($length !== 3 && $length !== 6) return false;
- if (!ctype_xdigit($hex)) return false;
- if ($length === 3) $hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2];
-
+ if ($length !== 3 && $length !== 6) {
+ return false;
+ }
+ if (!ctype_xdigit($hex)) {
+ return false;
+ }
+ if ($length === 3) {
+ $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
+ }
return "#$hex";
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
index ae6ea7c01..d79ba12b3 100644
--- a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
+++ b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
@@ -6,16 +6,33 @@
class HTMLPurifier_AttrDef_HTML_FrameTarget extends HTMLPurifier_AttrDef_Enum
{
+ /**
+ * @type array
+ */
public $valid_values = false; // uninitialized value
+
+ /**
+ * @type bool
+ */
protected $case_sensitive = false;
- public function __construct() {}
+ public function __construct()
+ {
+ }
- public function validate($string, $config, $context) {
- if ($this->valid_values === false) $this->valid_values = $config->get('Attr.AllowedFrameTargets');
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ if ($this->valid_values === false) {
+ $this->valid_values = $config->get('Attr.AllowedFrameTargets');
+ }
return parent::validate($string, $config, $context);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/ID.php b/library/HTMLPurifier/AttrDef/HTML/ID.php
index 81d03762d..3d86efb44 100644
--- a/library/HTMLPurifier/AttrDef/HTML/ID.php
+++ b/library/HTMLPurifier/AttrDef/HTML/ID.php
@@ -12,42 +12,77 @@
class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef
{
- // ref functionality disabled, since we also have to verify
- // whether or not the ID it refers to exists
-
- public function validate($id, $config, $context) {
+ // selector is NOT a valid thing to use for IDREFs, because IDREFs
+ // *must* target IDs that exist, whereas selector #ids do not.
+
+ /**
+ * Determines whether or not we're validating an ID in a CSS
+ * selector context.
+ * @type bool
+ */
+ protected $selector;
+
+ /**
+ * @param bool $selector
+ */
+ public function __construct($selector = false)
+ {
+ $this->selector = $selector;
+ }
- if (!$config->get('Attr.EnableID')) return false;
+ /**
+ * @param string $id
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($id, $config, $context)
+ {
+ if (!$this->selector && !$config->get('Attr.EnableID')) {
+ return false;
+ }
$id = trim($id); // trim it first
- if ($id === '') return false;
+ if ($id === '') {
+ return false;
+ }
$prefix = $config->get('Attr.IDPrefix');
if ($prefix !== '') {
$prefix .= $config->get('Attr.IDPrefixLocal');
// prevent re-appending the prefix
- if (strpos($id, $prefix) !== 0) $id = $prefix . $id;
+ if (strpos($id, $prefix) !== 0) {
+ $id = $prefix . $id;
+ }
} elseif ($config->get('Attr.IDPrefixLocal') !== '') {
- trigger_error('%Attr.IDPrefixLocal cannot be used unless '.
- '%Attr.IDPrefix is set', E_USER_WARNING);
+ trigger_error(
+ '%Attr.IDPrefixLocal cannot be used unless ' .
+ '%Attr.IDPrefix is set',
+ E_USER_WARNING
+ );
}
- //if (!$this->ref) {
+ if (!$this->selector) {
$id_accumulator =& $context->get('IDAccumulator');
- if (isset($id_accumulator->ids[$id])) return false;
- //}
+ if (isset($id_accumulator->ids[$id])) {
+ return false;
+ }
+ }
// we purposely avoid using regex, hopefully this is faster
if (ctype_alpha($id)) {
$result = true;
} else {
- if (!ctype_alpha(@$id[0])) return false;
- $trim = trim( // primitive style of regexps, I suppose
+ if (!ctype_alpha(@$id[0])) {
+ return false;
+ }
+ // primitive style of regexps, I suppose
+ $trim = trim(
$id,
'A..Za..z0..9:-._'
- );
+ );
$result = ($trim === '');
}
@@ -56,15 +91,15 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef
return false;
}
- if (/*!$this->ref && */$result) $id_accumulator->add($id);
+ if (!$this->selector && $result) {
+ $id_accumulator->add($id);
+ }
// if no change was made to the ID, return the result
// else, return the new id if stripping whitespace made it
// valid, or return false.
return $result ? $id : false;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Length.php b/library/HTMLPurifier/AttrDef/HTML/Length.php
index a242f9c23..1c4006fbb 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Length.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Length.php
@@ -10,32 +10,47 @@
class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parent_result = parent::validate($string, $config, $context);
- if ($parent_result !== false) return $parent_result;
+ if ($parent_result !== false) {
+ return $parent_result;
+ }
$length = strlen($string);
$last_char = $string[$length - 1];
- if ($last_char !== '%') return false;
+ if ($last_char !== '%') {
+ return false;
+ }
$points = substr($string, 0, $length - 1);
- if (!is_numeric($points)) return false;
-
- $points = (int) $points;
+ if (!is_numeric($points)) {
+ return false;
+ }
- if ($points < 0) return '0%';
- if ($points > 100) return '100%';
-
- return ((string) $points) . '%';
+ $points = (int)$points;
+ if ($points < 0) {
+ return '0%';
+ }
+ if ($points > 100) {
+ return '100%';
+ }
+ return ((string)$points) . '%';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
index 76d25ed08..63fa04c15 100644
--- a/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
+++ b/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
@@ -9,26 +9,44 @@
class HTMLPurifier_AttrDef_HTML_LinkTypes extends HTMLPurifier_AttrDef
{
- /** Name config attribute to pull. */
+ /**
+ * Name config attribute to pull.
+ * @type string
+ */
protected $name;
- public function __construct($name) {
+ /**
+ * @param string $name
+ */
+ public function __construct($name)
+ {
$configLookup = array(
'rel' => 'AllowedRel',
'rev' => 'AllowedRev'
);
if (!isset($configLookup[$name])) {
- trigger_error('Unrecognized attribute name for link '.
- 'relationship.', E_USER_ERROR);
+ trigger_error(
+ 'Unrecognized attribute name for link ' .
+ 'relationship.',
+ E_USER_ERROR
+ );
return;
}
$this->name = $configLookup[$name];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$allowed = $config->get('Attr.' . $this->name);
- if (empty($allowed)) return false;
+ if (empty($allowed)) {
+ return false;
+ }
$string = $this->parseCDATA($string);
$parts = explode(' ', $string);
@@ -37,17 +55,18 @@ class HTMLPurifier_AttrDef_HTML_LinkTypes extends HTMLPurifier_AttrDef
$ret_lookup = array();
foreach ($parts as $part) {
$part = strtolower(trim($part));
- if (!isset($allowed[$part])) continue;
+ if (!isset($allowed[$part])) {
+ continue;
+ }
$ret_lookup[$part] = true;
}
- if (empty($ret_lookup)) return false;
+ if (empty($ret_lookup)) {
+ return false;
+ }
$string = implode(' ', array_keys($ret_lookup));
-
return $string;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/MultiLength.php b/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
index c72fc76e4..bbb20f2f8 100644
--- a/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
+++ b/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
@@ -9,33 +9,52 @@
class HTMLPurifier_AttrDef_HTML_MultiLength extends HTMLPurifier_AttrDef_HTML_Length
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parent_result = parent::validate($string, $config, $context);
- if ($parent_result !== false) return $parent_result;
+ if ($parent_result !== false) {
+ return $parent_result;
+ }
$length = strlen($string);
$last_char = $string[$length - 1];
- if ($last_char !== '*') return false;
+ if ($last_char !== '*') {
+ return false;
+ }
$int = substr($string, 0, $length - 1);
- if ($int == '') return '*';
- if (!is_numeric($int)) return false;
-
- $int = (int) $int;
-
- if ($int < 0) return false;
- if ($int == 0) return '0';
- if ($int == 1) return '*';
- return ((string) $int) . '*';
-
+ if ($int == '') {
+ return '*';
+ }
+ if (!is_numeric($int)) {
+ return false;
+ }
+
+ $int = (int)$int;
+ if ($int < 0) {
+ return false;
+ }
+ if ($int == 0) {
+ return '0';
+ }
+ if ($int == 1) {
+ return '*';
+ }
+ return ((string)$int) . '*';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php b/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
index aa34120bd..f79683b4f 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
@@ -6,24 +6,38 @@
class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
// early abort: '' and '0' (strings that convert to false) are invalid
- if (!$string) return false;
+ if (!$string) {
+ return false;
+ }
$tokens = $this->split($string, $config, $context);
$tokens = $this->filter($tokens, $config, $context);
- if (empty($tokens)) return false;
+ if (empty($tokens)) {
+ return false;
+ }
return implode(' ', $tokens);
-
}
/**
* Splits a space separated list of tokens into its constituent parts.
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
*/
- protected function split($string, $config, $context) {
+ protected function split($string, $config, $context)
+ {
// OPTIMIZABLE!
// do the preg_match, capture all subpatterns for reformulation
@@ -31,9 +45,9 @@ class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
// escaping because I don't know how to do that with regexps
// and plus it would complicate optimization efforts (you never
// see that anyway).
- $pattern = '/(?:(?<=\s)|\A)'. // look behind for space or string start
- '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)'.
- '(?:(?=\s)|\z)/'; // look ahead for space or string end
+ $pattern = '/(?:(?<=\s)|\A)' . // look behind for space or string start
+ '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)' .
+ '(?:(?=\s)|\z)/'; // look ahead for space or string end
preg_match_all($pattern, $string, $matches);
return $matches[1];
}
@@ -42,11 +56,15 @@ class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
* Template method for removing certain tokens based on arbitrary criteria.
* @note If we wanted to be really functional, we'd do an array_filter
* with a callback. But... we're not.
+ * @param array $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
*/
- protected function filter($tokens, $config, $context) {
+ protected function filter($tokens, $config, $context)
+ {
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Pixels.php b/library/HTMLPurifier/AttrDef/HTML/Pixels.php
index 4cb2c1b85..a1d019e09 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Pixels.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Pixels.php
@@ -6,43 +6,71 @@
class HTMLPurifier_AttrDef_HTML_Pixels extends HTMLPurifier_AttrDef
{
+ /**
+ * @type int
+ */
protected $max;
- public function __construct($max = null) {
+ /**
+ * @param int $max
+ */
+ public function __construct($max = null)
+ {
$this->max = $max;
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '0') return $string;
- if ($string === '') return false;
+ if ($string === '0') {
+ return $string;
+ }
+ if ($string === '') {
+ return false;
+ }
$length = strlen($string);
if (substr($string, $length - 2) == 'px') {
$string = substr($string, 0, $length - 2);
}
- if (!is_numeric($string)) return false;
- $int = (int) $string;
+ if (!is_numeric($string)) {
+ return false;
+ }
+ $int = (int)$string;
- if ($int < 0) return '0';
+ if ($int < 0) {
+ return '0';
+ }
// upper-bound value, extremely high values can
// crash operating systems, see <http://ha.ckers.org/imagecrash.html>
// WARNING, above link WILL crash you if you're using Windows
- if ($this->max !== null && $int > $this->max) return (string) $this->max;
-
- return (string) $int;
-
+ if ($this->max !== null && $int > $this->max) {
+ return (string)$this->max;
+ }
+ return (string)$int;
}
- public function make($string) {
- if ($string === '') $max = null;
- else $max = (int) $string;
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef
+ */
+ public function make($string)
+ {
+ if ($string === '') {
+ $max = null;
+ } else {
+ $max = (int)$string;
+ }
$class = get_class($this);
return new $class($max);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Integer.php b/library/HTMLPurifier/AttrDef/Integer.php
index d59738d2a..400e707d2 100644
--- a/library/HTMLPurifier/AttrDef/Integer.php
+++ b/library/HTMLPurifier/AttrDef/Integer.php
@@ -11,17 +11,20 @@ class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
{
/**
- * Bool indicating whether or not negative values are allowed
+ * Whether or not negative values are allowed.
+ * @type bool
*/
protected $negative = true;
/**
- * Bool indicating whether or not zero is allowed
+ * Whether or not zero is allowed.
+ * @type bool
*/
protected $zero = true;
/**
- * Bool indicating whether or not positive values are allowed
+ * Whether or not positive values are allowed.
+ * @type bool
*/
protected $positive = true;
@@ -30,44 +33,59 @@ class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
* @param $zero Bool indicating whether or not zero is allowed
* @param $positive Bool indicating whether or not positive values are allowed
*/
- public function __construct(
- $negative = true, $zero = true, $positive = true
- ) {
+ public function __construct($negative = true, $zero = true, $positive = true)
+ {
$this->negative = $negative;
- $this->zero = $zero;
+ $this->zero = $zero;
$this->positive = $positive;
}
- public function validate($integer, $config, $context) {
-
+ /**
+ * @param string $integer
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($integer, $config, $context)
+ {
$integer = $this->parseCDATA($integer);
- if ($integer === '') return false;
+ if ($integer === '') {
+ return false;
+ }
// we could possibly simply typecast it to integer, but there are
// certain fringe cases that must not return an integer.
// clip leading sign
- if ( $this->negative && $integer[0] === '-' ) {
+ if ($this->negative && $integer[0] === '-') {
$digits = substr($integer, 1);
- if ($digits === '0') $integer = '0'; // rm minus sign for zero
- } elseif( $this->positive && $integer[0] === '+' ) {
+ if ($digits === '0') {
+ $integer = '0';
+ } // rm minus sign for zero
+ } elseif ($this->positive && $integer[0] === '+') {
$digits = $integer = substr($integer, 1); // rm unnecessary plus
} else {
$digits = $integer;
}
// test if it's numeric
- if (!ctype_digit($digits)) return false;
+ if (!ctype_digit($digits)) {
+ return false;
+ }
// perform scope tests
- if (!$this->zero && $integer == 0) return false;
- if (!$this->positive && $integer > 0) return false;
- if (!$this->negative && $integer < 0) return false;
+ if (!$this->zero && $integer == 0) {
+ return false;
+ }
+ if (!$this->positive && $integer > 0) {
+ return false;
+ }
+ if (!$this->negative && $integer < 0) {
+ return false;
+ }
return $integer;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Lang.php b/library/HTMLPurifier/AttrDef/Lang.php
index 10e6da56d..2a55cea64 100644
--- a/library/HTMLPurifier/AttrDef/Lang.php
+++ b/library/HTMLPurifier/AttrDef/Lang.php
@@ -7,15 +7,25 @@
class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if (!$string) return false;
+ if (!$string) {
+ return false;
+ }
$subtags = explode('-', $string);
$num_subtags = count($subtags);
- if ($num_subtags == 0) return false; // sanity check
+ if ($num_subtags == 0) { // sanity check
+ return false;
+ }
// process primary subtag : $subtags[0]
$length = strlen($subtags[0]);
@@ -23,15 +33,15 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
case 0:
return false;
case 1:
- if (! ($subtags[0] == 'x' || $subtags[0] == 'i') ) {
+ if (!($subtags[0] == 'x' || $subtags[0] == 'i')) {
return false;
}
break;
case 2:
case 3:
- if (! ctype_alpha($subtags[0]) ) {
+ if (!ctype_alpha($subtags[0])) {
return false;
- } elseif (! ctype_lower($subtags[0]) ) {
+ } elseif (!ctype_lower($subtags[0])) {
$subtags[0] = strtolower($subtags[0]);
}
break;
@@ -40,17 +50,23 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
}
$new_string = $subtags[0];
- if ($num_subtags == 1) return $new_string;
+ if ($num_subtags == 1) {
+ return $new_string;
+ }
// process second subtag : $subtags[1]
$length = strlen($subtags[1]);
if ($length == 0 || ($length == 1 && $subtags[1] != 'x') || $length > 8 || !ctype_alnum($subtags[1])) {
return $new_string;
}
- if (!ctype_lower($subtags[1])) $subtags[1] = strtolower($subtags[1]);
+ if (!ctype_lower($subtags[1])) {
+ $subtags[1] = strtolower($subtags[1]);
+ }
$new_string .= '-' . $subtags[1];
- if ($num_subtags == 2) return $new_string;
+ if ($num_subtags == 2) {
+ return $new_string;
+ }
// process all other subtags, index 2 and up
for ($i = 2; $i < $num_subtags; $i++) {
@@ -63,11 +79,8 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
}
$new_string .= '-' . $subtags[$i];
}
-
return $new_string;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Switch.php b/library/HTMLPurifier/AttrDef/Switch.php
index c9e3ed193..c7eb3199a 100644
--- a/library/HTMLPurifier/AttrDef/Switch.php
+++ b/library/HTMLPurifier/AttrDef/Switch.php
@@ -6,21 +6,41 @@
class HTMLPurifier_AttrDef_Switch
{
+ /**
+ * @type string
+ */
protected $tag;
- protected $withTag, $withoutTag;
+
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $withTag;
+
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $withoutTag;
/**
* @param string $tag Tag name to switch upon
* @param HTMLPurifier_AttrDef $with_tag Call if token matches tag
* @param HTMLPurifier_AttrDef $without_tag Call if token doesn't match, or there is no token
*/
- public function __construct($tag, $with_tag, $without_tag) {
+ public function __construct($tag, $with_tag, $without_tag)
+ {
$this->tag = $tag;
$this->withTag = $with_tag;
$this->withoutTag = $without_tag;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$token = $context->get('CurrentToken', true);
if (!$token || $token->name !== $this->tag) {
return $this->withoutTag->validate($string, $config, $context);
@@ -28,7 +48,6 @@ class HTMLPurifier_AttrDef_Switch
return $this->withTag->validate($string, $config, $context);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Text.php b/library/HTMLPurifier/AttrDef/Text.php
index c6216cc53..4553a4ea9 100644
--- a/library/HTMLPurifier/AttrDef/Text.php
+++ b/library/HTMLPurifier/AttrDef/Text.php
@@ -6,10 +6,16 @@
class HTMLPurifier_AttrDef_Text extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
return $this->parseCDATA($string);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI.php b/library/HTMLPurifier/AttrDef/URI.php
index 01a6d83e9..c1cd89772 100644
--- a/library/HTMLPurifier/AttrDef/URI.php
+++ b/library/HTMLPurifier/AttrDef/URI.php
@@ -7,31 +7,54 @@
class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
protected $parser;
+
+ /**
+ * @type bool
+ */
protected $embedsResource;
/**
- * @param $embeds_resource_resource Does the URI here result in an extra HTTP request?
+ * @param bool $embeds_resource Does the URI here result in an extra HTTP request?
*/
- public function __construct($embeds_resource = false) {
+ public function __construct($embeds_resource = false)
+ {
$this->parser = new HTMLPurifier_URIParser();
- $this->embedsResource = (bool) $embeds_resource;
+ $this->embedsResource = (bool)$embeds_resource;
}
- public function make($string) {
- $embeds = (bool) $string;
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef_URI
+ */
+ public function make($string)
+ {
+ $embeds = ($string === 'embedded');
return new HTMLPurifier_AttrDef_URI($embeds);
}
- public function validate($uri, $config, $context) {
-
- if ($config->get('URI.Disable')) return false;
+ /**
+ * @param string $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($uri, $config, $context)
+ {
+ if ($config->get('URI.Disable')) {
+ return false;
+ }
$uri = $this->parseCDATA($uri);
// parse the URI
$uri = $this->parser->parse($uri);
- if ($uri === false) return false;
+ if ($uri === false) {
+ return false;
+ }
// add embedded flag to context for validators
$context->register('EmbeddedURI', $this->embedsResource);
@@ -41,23 +64,35 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
// generic validation
$result = $uri->validate($config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// chained filtering
$uri_def = $config->getDefinition('URI');
$result = $uri_def->filter($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// scheme-specific validation
$scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) break;
- if ($this->embedsResource && !$scheme_obj->browsable) break;
+ if (!$scheme_obj) {
+ break;
+ }
+ if ($this->embedsResource && !$scheme_obj->browsable) {
+ break;
+ }
$result = $scheme_obj->validate($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// Post chained filtering
$result = $uri_def->postFilter($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// survived gauntlet
$ok = true;
@@ -65,13 +100,12 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
} while (false);
$context->destroy('EmbeddedURI');
- if (!$ok) return false;
-
+ if (!$ok) {
+ return false;
+ }
// back to string
return $uri->toString();
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/Email.php b/library/HTMLPurifier/AttrDef/URI/Email.php
index bfee9d166..daf32b764 100644
--- a/library/HTMLPurifier/AttrDef/URI/Email.php
+++ b/library/HTMLPurifier/AttrDef/URI/Email.php
@@ -5,8 +5,11 @@ abstract class HTMLPurifier_AttrDef_URI_Email extends HTMLPurifier_AttrDef
/**
* Unpacks a mailbox into its display-name and address
+ * @param string $string
+ * @return mixed
*/
- function unpack($string) {
+ public function unpack($string)
+ {
// needs to be implemented
}
diff --git a/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php b/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
index 94c715ab4..52c0d5968 100644
--- a/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
+++ b/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
@@ -7,15 +7,23 @@
class HTMLPurifier_AttrDef_URI_Email_SimpleCheck extends HTMLPurifier_AttrDef_URI_Email
{
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// no support for named mailboxes i.e. "Bob <bob@example.com>"
// that needs more percent encoding to be done
- if ($string == '') return false;
+ if ($string == '') {
+ return false;
+ }
$string = trim($string);
$result = preg_match('/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $string);
return $result ? $string : false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/Host.php b/library/HTMLPurifier/AttrDef/URI/Host.php
index 2156c10c6..e7df800b1 100644
--- a/library/HTMLPurifier/AttrDef/URI/Host.php
+++ b/library/HTMLPurifier/AttrDef/URI/Host.php
@@ -7,56 +7,122 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef
{
/**
- * Instance of HTMLPurifier_AttrDef_URI_IPv4 sub-validator
+ * IPv4 sub-validator.
+ * @type HTMLPurifier_AttrDef_URI_IPv4
*/
protected $ipv4;
/**
- * Instance of HTMLPurifier_AttrDef_URI_IPv6 sub-validator
+ * IPv6 sub-validator.
+ * @type HTMLPurifier_AttrDef_URI_IPv6
*/
protected $ipv6;
- public function __construct() {
+ public function __construct()
+ {
$this->ipv4 = new HTMLPurifier_AttrDef_URI_IPv4();
$this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6();
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$length = strlen($string);
- if ($string === '') return '';
- if ($length > 1 && $string[0] === '[' && $string[$length-1] === ']') {
+ // empty hostname is OK; it's usually semantically equivalent:
+ // the default host as defined by a URI scheme is used:
+ //
+ // If the URI scheme defines a default for host, then that
+ // default applies when the host subcomponent is undefined
+ // or when the registered name is empty (zero length).
+ if ($string === '') {
+ return '';
+ }
+ if ($length > 1 && $string[0] === '[' && $string[$length - 1] === ']') {
//IPv6
$ip = substr($string, 1, $length - 2);
$valid = $this->ipv6->validate($ip, $config, $context);
- if ($valid === false) return false;
- return '['. $valid . ']';
+ if ($valid === false) {
+ return false;
+ }
+ return '[' . $valid . ']';
}
// need to do checks on unusual encodings too
$ipv4 = $this->ipv4->validate($string, $config, $context);
- if ($ipv4 !== false) return $ipv4;
+ if ($ipv4 !== false) {
+ return $ipv4;
+ }
// A regular domain name.
- // This breaks I18N domain names, but we don't have proper IRI support,
- // so force users to insert Punycode. If there's complaining we'll
- // try to fix things into an international friendly form.
+ // This doesn't match I18N domain names, but we don't have proper IRI support,
+ // so force users to insert Punycode.
+
+ // There is not a good sense in which underscores should be
+ // allowed, since it's technically not! (And if you go as
+ // far to allow everything as specified by the DNS spec...
+ // well, that's literally everything, modulo some space limits
+ // for the components and the overall name (which, by the way,
+ // we are NOT checking!). So we (arbitrarily) decide this:
+ // let's allow underscores wherever we would have allowed
+ // hyphens, if they are enabled. This is a pretty good match
+ // for browser behavior, for example, a large number of browsers
+ // cannot handle foo_.example.com, but foo_bar.example.com is
+ // fairly well supported.
+ $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : '';
// The productions describing this are:
$a = '[a-z]'; // alpha
$an = '[a-z0-9]'; // alphanum
- $and = '[a-z0-9-]'; // alphanum | "-"
+ $and = "[a-z0-9-$underscore]"; // alphanum | "-"
// domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
- $domainlabel = "$an($and*$an)?";
+ $domainlabel = "$an($and*$an)?";
// toplabel = alpha | alpha *( alphanum | "-" ) alphanum
- $toplabel = "$a($and*$an)?";
+ $toplabel = "$a($and*$an)?";
// hostname = *( domainlabel "." ) toplabel [ "." ]
- $match = preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string);
- if (!$match) return false;
+ if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) {
+ return $string;
+ }
- return $string;
- }
+ // If we have Net_IDNA2 support, we can support IRIs by
+ // punycoding them. (This is the most portable thing to do,
+ // since otherwise we have to assume browsers support
+ if ($config->get('Core.EnableIDNA')) {
+ $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true));
+ // we need to encode each period separately
+ $parts = explode('.', $string);
+ try {
+ $new_parts = array();
+ foreach ($parts as $part) {
+ $encodable = false;
+ for ($i = 0, $c = strlen($part); $i < $c; $i++) {
+ if (ord($part[$i]) > 0x7a) {
+ $encodable = true;
+ break;
+ }
+ }
+ if (!$encodable) {
+ $new_parts[] = $part;
+ } else {
+ $new_parts[] = $idna->encode($part);
+ }
+ }
+ $string = implode('.', $new_parts);
+ if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) {
+ return $string;
+ }
+ } catch (Exception $e) {
+ // XXX error reporting
+ }
+ }
+ return false;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/IPv4.php b/library/HTMLPurifier/AttrDef/URI/IPv4.php
index ec4cf591b..30ac16c9e 100644
--- a/library/HTMLPurifier/AttrDef/URI/IPv4.php
+++ b/library/HTMLPurifier/AttrDef/URI/IPv4.php
@@ -8,32 +8,38 @@ class HTMLPurifier_AttrDef_URI_IPv4 extends HTMLPurifier_AttrDef
{
/**
- * IPv4 regex, protected so that IPv6 can reuse it
+ * IPv4 regex, protected so that IPv6 can reuse it.
+ * @type string
*/
protected $ip4;
- public function validate($aIP, $config, $context) {
-
- if (!$this->ip4) $this->_loadRegex();
-
- if (preg_match('#^' . $this->ip4 . '$#s', $aIP))
- {
- return $aIP;
+ /**
+ * @param string $aIP
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($aIP, $config, $context)
+ {
+ if (!$this->ip4) {
+ $this->_loadRegex();
}
+ if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) {
+ return $aIP;
+ }
return false;
-
}
/**
* Lazy load function to prevent regex from being stuffed in
* cache.
*/
- protected function _loadRegex() {
+ protected function _loadRegex()
+ {
$oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255
$this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/IPv6.php b/library/HTMLPurifier/AttrDef/URI/IPv6.php
index 9454e9be5..f243793ee 100644
--- a/library/HTMLPurifier/AttrDef/URI/IPv6.php
+++ b/library/HTMLPurifier/AttrDef/URI/IPv6.php
@@ -9,91 +9,81 @@
class HTMLPurifier_AttrDef_URI_IPv6 extends HTMLPurifier_AttrDef_URI_IPv4
{
- public function validate($aIP, $config, $context) {
-
- if (!$this->ip4) $this->_loadRegex();
+ /**
+ * @param string $aIP
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($aIP, $config, $context)
+ {
+ if (!$this->ip4) {
+ $this->_loadRegex();
+ }
$original = $aIP;
$hex = '[0-9a-fA-F]';
$blk = '(?:' . $hex . '{1,4})';
- $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128
+ $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128
// prefix check
- if (strpos($aIP, '/') !== false)
- {
- if (preg_match('#' . $pre . '$#s', $aIP, $find))
- {
- $aIP = substr($aIP, 0, 0-strlen($find[0]));
- unset($find);
- }
- else
- {
- return false;
- }
+ if (strpos($aIP, '/') !== false) {
+ if (preg_match('#' . $pre . '$#s', $aIP, $find)) {
+ $aIP = substr($aIP, 0, 0 - strlen($find[0]));
+ unset($find);
+ } else {
+ return false;
+ }
}
// IPv4-compatiblity check
- if (preg_match('#(?<=:'.')' . $this->ip4 . '$#s', $aIP, $find))
- {
- $aIP = substr($aIP, 0, 0-strlen($find[0]));
- $ip = explode('.', $find[0]);
- $ip = array_map('dechex', $ip);
- $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3];
- unset($find, $ip);
+ if (preg_match('#(?<=:' . ')' . $this->ip4 . '$#s', $aIP, $find)) {
+ $aIP = substr($aIP, 0, 0 - strlen($find[0]));
+ $ip = explode('.', $find[0]);
+ $ip = array_map('dechex', $ip);
+ $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3];
+ unset($find, $ip);
}
// compression check
$aIP = explode('::', $aIP);
$c = count($aIP);
- if ($c > 2)
- {
+ if ($c > 2) {
+ return false;
+ } elseif ($c == 2) {
+ list($first, $second) = $aIP;
+ $first = explode(':', $first);
+ $second = explode(':', $second);
+
+ if (count($first) + count($second) > 8) {
return false;
- }
- elseif ($c == 2)
- {
- list($first, $second) = $aIP;
- $first = explode(':', $first);
- $second = explode(':', $second);
-
- if (count($first) + count($second) > 8)
- {
- return false;
- }
+ }
- while(count($first) < 8)
- {
- array_push($first, '0');
- }
+ while (count($first) < 8) {
+ array_push($first, '0');
+ }
- array_splice($first, 8 - count($second), 8, $second);
- $aIP = $first;
- unset($first,$second);
- }
- else
- {
- $aIP = explode(':', $aIP[0]);
+ array_splice($first, 8 - count($second), 8, $second);
+ $aIP = $first;
+ unset($first, $second);
+ } else {
+ $aIP = explode(':', $aIP[0]);
}
$c = count($aIP);
- if ($c != 8)
- {
- return false;
+ if ($c != 8) {
+ return false;
}
// All the pieces should be 16-bit hex strings. Are they?
- foreach ($aIP as $piece)
- {
- if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece)))
- {
- return false;
- }
+ foreach ($aIP as $piece) {
+ if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece))) {
+ return false;
+ }
}
-
return $original;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform.php b/library/HTMLPurifier/AttrTransform.php
index e61d3e01b..b428331f1 100644
--- a/library/HTMLPurifier/AttrTransform.php
+++ b/library/HTMLPurifier/AttrTransform.php
@@ -20,37 +20,41 @@ abstract class HTMLPurifier_AttrTransform
/**
* Abstract: makes changes to the attributes dependent on multiple values.
*
- * @param $attr Assoc array of attributes, usually from
+ * @param array $attr Assoc array of attributes, usually from
* HTMLPurifier_Token_Tag::$attr
- * @param $config Mandatory HTMLPurifier_Config object.
- * @param $context Mandatory HTMLPurifier_Context object
- * @returns Processed attribute array.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
+ * @return array Processed attribute array.
*/
abstract public function transform($attr, $config, $context);
/**
* Prepends CSS properties to the style attribute, creating the
* attribute if it doesn't exist.
- * @param $attr Attribute array to process (passed by reference)
- * @param $css CSS to prepend
+ * @param array &$attr Attribute array to process (passed by reference)
+ * @param string $css CSS to prepend
*/
- public function prependCSS(&$attr, $css) {
+ public function prependCSS(&$attr, $css)
+ {
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
$attr['style'] = $css . $attr['style'];
}
/**
* Retrieves and removes an attribute
- * @param $attr Attribute array to process (passed by reference)
- * @param $key Key of attribute to confiscate
+ * @param array &$attr Attribute array to process (passed by reference)
+ * @param mixed $key Key of attribute to confiscate
+ * @return mixed
*/
- public function confiscateAttr(&$attr, $key) {
- if (!isset($attr[$key])) return null;
+ public function confiscateAttr(&$attr, $key)
+ {
+ if (!isset($attr[$key])) {
+ return null;
+ }
$value = $attr[$key];
unset($attr[$key]);
return $value;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Background.php b/library/HTMLPurifier/AttrTransform/Background.php
index 0e1ff24a3..2f72869a5 100644
--- a/library/HTMLPurifier/AttrTransform/Background.php
+++ b/library/HTMLPurifier/AttrTransform/Background.php
@@ -3,21 +3,26 @@
/**
* Pre-transform that changes proprietary background attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_Background extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
-
- if (!isset($attr['background'])) return $attr;
+class HTMLPurifier_AttrTransform_Background extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['background'])) {
+ return $attr;
+ }
$background = $this->confiscateAttr($attr, 'background');
// some validation should happen here
$this->prependCSS($attr, "background-image:url($background);");
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BdoDir.php b/library/HTMLPurifier/AttrTransform/BdoDir.php
index 4d1a05665..d66c04a5b 100644
--- a/library/HTMLPurifier/AttrTransform/BdoDir.php
+++ b/library/HTMLPurifier/AttrTransform/BdoDir.php
@@ -8,12 +8,20 @@
class HTMLPurifier_AttrTransform_BdoDir extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
- if (isset($attr['dir'])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (isset($attr['dir'])) {
+ return $attr;
+ }
$attr['dir'] = $config->get('Attr.DefaultTextDir');
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BgColor.php b/library/HTMLPurifier/AttrTransform/BgColor.php
index ad3916bb9..0f51fd2ce 100644
--- a/library/HTMLPurifier/AttrTransform/BgColor.php
+++ b/library/HTMLPurifier/AttrTransform/BgColor.php
@@ -3,21 +3,26 @@
/**
* Pre-transform that changes deprecated bgcolor attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_BgColor extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
-
- if (!isset($attr['bgcolor'])) return $attr;
+class HTMLPurifier_AttrTransform_BgColor extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['bgcolor'])) {
+ return $attr;
+ }
$bgcolor = $this->confiscateAttr($attr, 'bgcolor');
// some validation should happen here
$this->prependCSS($attr, "background-color:$bgcolor;");
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BoolToCSS.php b/library/HTMLPurifier/AttrTransform/BoolToCSS.php
index 51159b671..f25cd0195 100644
--- a/library/HTMLPurifier/AttrTransform/BoolToCSS.php
+++ b/library/HTMLPurifier/AttrTransform/BoolToCSS.php
@@ -3,34 +3,45 @@
/**
* Pre-transform that changes converts a boolean attribute to fixed CSS
*/
-class HTMLPurifier_AttrTransform_BoolToCSS extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_BoolToCSS extends HTMLPurifier_AttrTransform
+{
/**
- * Name of boolean attribute that is trigger
+ * Name of boolean attribute that is trigger.
+ * @type string
*/
protected $attr;
/**
- * CSS declarations to add to style, needs trailing semicolon
+ * CSS declarations to add to style, needs trailing semicolon.
+ * @type string
*/
protected $css;
/**
- * @param $attr string attribute name to convert from
- * @param $css string CSS declarations to add to style (needs semicolon)
+ * @param string $attr attribute name to convert from
+ * @param string $css CSS declarations to add to style (needs semicolon)
*/
- public function __construct($attr, $css) {
+ public function __construct($attr, $css)
+ {
$this->attr = $attr;
- $this->css = $css;
+ $this->css = $css;
}
- public function transform($attr, $config, $context) {
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
unset($attr[$this->attr]);
$this->prependCSS($attr, $this->css);
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Border.php b/library/HTMLPurifier/AttrTransform/Border.php
index 476b0b079..057dc017f 100644
--- a/library/HTMLPurifier/AttrTransform/Border.php
+++ b/library/HTMLPurifier/AttrTransform/Border.php
@@ -3,16 +3,24 @@
/**
* Pre-transform that changes deprecated border attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_Border extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
- if (!isset($attr['border'])) return $attr;
+class HTMLPurifier_AttrTransform_Border extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['border'])) {
+ return $attr;
+ }
$border_width = $this->confiscateAttr($attr, 'border');
// some validation should happen here
$this->prependCSS($attr, "border:{$border_width}px solid;");
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/EnumToCSS.php b/library/HTMLPurifier/AttrTransform/EnumToCSS.php
index 2a5b4514a..7ccd0e3fb 100644
--- a/library/HTMLPurifier/AttrTransform/EnumToCSS.php
+++ b/library/HTMLPurifier/AttrTransform/EnumToCSS.php
@@ -4,55 +4,65 @@
* Generic pre-transform that converts an attribute with a fixed number of
* values (enumerated) to CSS.
*/
-class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform
+{
/**
- * Name of attribute to transform from
+ * Name of attribute to transform from.
+ * @type string
*/
protected $attr;
/**
- * Lookup array of attribute values to CSS
+ * Lookup array of attribute values to CSS.
+ * @type array
*/
protected $enumToCSS = array();
/**
- * Case sensitivity of the matching
+ * Case sensitivity of the matching.
+ * @type bool
* @warning Currently can only be guaranteed to work with ASCII
* values.
*/
protected $caseSensitive = false;
/**
- * @param $attr String attribute name to transform from
- * @param $enumToCSS Lookup array of attribute values to CSS
- * @param $case_sensitive Boolean case sensitivity indicator, default false
+ * @param string $attr Attribute name to transform from
+ * @param array $enum_to_css Lookup array of attribute values to CSS
+ * @param bool $case_sensitive Case sensitivity indicator, default false
*/
- public function __construct($attr, $enum_to_css, $case_sensitive = false) {
+ public function __construct($attr, $enum_to_css, $case_sensitive = false)
+ {
$this->attr = $attr;
$this->enumToCSS = $enum_to_css;
- $this->caseSensitive = (bool) $case_sensitive;
+ $this->caseSensitive = (bool)$case_sensitive;
}
- public function transform($attr, $config, $context) {
-
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
$value = trim($attr[$this->attr]);
unset($attr[$this->attr]);
- if (!$this->caseSensitive) $value = strtolower($value);
+ if (!$this->caseSensitive) {
+ $value = strtolower($value);
+ }
if (!isset($this->enumToCSS[$value])) {
return $attr;
}
-
$this->prependCSS($attr, $this->enumToCSS[$value]);
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/ImgRequired.php b/library/HTMLPurifier/AttrTransform/ImgRequired.php
index 7f0e4b7a5..7df6cb3e1 100644
--- a/library/HTMLPurifier/AttrTransform/ImgRequired.php
+++ b/library/HTMLPurifier/AttrTransform/ImgRequired.php
@@ -11,11 +11,19 @@
class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
-
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
$src = true;
if (!isset($attr['src'])) {
- if ($config->get('Core.RemoveInvalidImg')) return $attr;
+ if ($config->get('Core.RemoveInvalidImg')) {
+ return $attr;
+ }
$attr['src'] = $config->get('Attr.DefaultInvalidImage');
$src = false;
}
@@ -25,7 +33,7 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
$alt = $config->get('Attr.DefaultImageAlt');
if ($alt === null) {
// truncate if the alt is too long
- $attr['alt'] = substr(basename($attr['src']),0,40);
+ $attr['alt'] = substr(basename($attr['src']), 0, 40);
} else {
$attr['alt'] = $alt;
}
@@ -33,11 +41,8 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
$attr['alt'] = $config->get('Attr.DefaultInvalidImageAlt');
}
}
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/ImgSpace.php b/library/HTMLPurifier/AttrTransform/ImgSpace.php
index fd84c10c3..350b3358f 100644
--- a/library/HTMLPurifier/AttrTransform/ImgSpace.php
+++ b/library/HTMLPurifier/AttrTransform/ImgSpace.php
@@ -3,42 +3,59 @@
/**
* Pre-transform that changes deprecated hspace and vspace attributes to CSS
*/
-class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type string
+ */
protected $attr;
+
+ /**
+ * @type array
+ */
protected $css = array(
'hspace' => array('left', 'right'),
'vspace' => array('top', 'bottom')
);
- public function __construct($attr) {
+ /**
+ * @param string $attr
+ */
+ public function __construct($attr)
+ {
$this->attr = $attr;
if (!isset($this->css[$attr])) {
trigger_error(htmlspecialchars($attr) . ' is not valid space attribute');
}
}
- public function transform($attr, $config, $context) {
-
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
$width = $this->confiscateAttr($attr, $this->attr);
// some validation could happen here
- if (!isset($this->css[$this->attr])) return $attr;
+ if (!isset($this->css[$this->attr])) {
+ return $attr;
+ }
$style = '';
foreach ($this->css[$this->attr] as $suffix) {
$property = "margin-$suffix";
$style .= "$property:{$width}px;";
}
-
$this->prependCSS($attr, $style);
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Input.php b/library/HTMLPurifier/AttrTransform/Input.php
index 16829552d..3ab47ed8c 100644
--- a/library/HTMLPurifier/AttrTransform/Input.php
+++ b/library/HTMLPurifier/AttrTransform/Input.php
@@ -4,17 +4,31 @@
* Performs miscellaneous cross attribute validation and filtering for
* input elements. This is meant to be a post-transform.
*/
-class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_AttrDef_HTML_Pixels
+ */
protected $pixels;
- public function __construct() {
+ public function __construct()
+ {
$this->pixels = new HTMLPurifier_AttrDef_HTML_Pixels();
}
- public function transform($attr, $config, $context) {
- if (!isset($attr['type'])) $t = 'text';
- else $t = strtolower($attr['type']);
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['type'])) {
+ $t = 'text';
+ } else {
+ $t = strtolower($attr['type']);
+ }
if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') {
unset($attr['checked']);
}
@@ -23,8 +37,11 @@ class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
}
if (isset($attr['size']) && $t !== 'text' && $t !== 'password') {
$result = $this->pixels->validate($attr['size'], $config, $context);
- if ($result === false) unset($attr['size']);
- else $attr['size'] = $result;
+ if ($result === false) {
+ unset($attr['size']);
+ } else {
+ $attr['size'] = $result;
+ }
}
if (isset($attr['src']) && $t !== 'image') {
unset($attr['src']);
@@ -34,7 +51,6 @@ class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
}
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Lang.php b/library/HTMLPurifier/AttrTransform/Lang.php
index 5869e7f82..5b0aff0e4 100644
--- a/library/HTMLPurifier/AttrTransform/Lang.php
+++ b/library/HTMLPurifier/AttrTransform/Lang.php
@@ -8,9 +8,15 @@
class HTMLPurifier_AttrTransform_Lang extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
-
- $lang = isset($attr['lang']) ? $attr['lang'] : false;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ $lang = isset($attr['lang']) ? $attr['lang'] : false;
$xml_lang = isset($attr['xml:lang']) ? $attr['xml:lang'] : false;
if ($lang !== false && $xml_lang === false) {
@@ -18,11 +24,8 @@ class HTMLPurifier_AttrTransform_Lang extends HTMLPurifier_AttrTransform
} elseif ($xml_lang !== false) {
$attr['lang'] = $xml_lang;
}
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Length.php b/library/HTMLPurifier/AttrTransform/Length.php
index ea2f30473..853f33549 100644
--- a/library/HTMLPurifier/AttrTransform/Length.php
+++ b/library/HTMLPurifier/AttrTransform/Length.php
@@ -6,22 +6,40 @@
class HTMLPurifier_AttrTransform_Length extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
protected $name;
+
+ /**
+ * @type string
+ */
protected $cssName;
- public function __construct($name, $css_name = null) {
+ public function __construct($name, $css_name = null)
+ {
$this->name = $name;
$this->cssName = $css_name ? $css_name : $name;
}
- public function transform($attr, $config, $context) {
- if (!isset($attr[$this->name])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->name])) {
+ return $attr;
+ }
$length = $this->confiscateAttr($attr, $this->name);
- if(ctype_digit($length)) $length .= 'px';
+ if (ctype_digit($length)) {
+ $length .= 'px';
+ }
$this->prependCSS($attr, $this->cssName . ":$length;");
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Name.php b/library/HTMLPurifier/AttrTransform/Name.php
index 15315bc73..63cce6837 100644
--- a/library/HTMLPurifier/AttrTransform/Name.php
+++ b/library/HTMLPurifier/AttrTransform/Name.php
@@ -6,16 +6,28 @@
class HTMLPurifier_AttrTransform_Name extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// Abort early if we're using relaxed definition of name
- if ($config->get('HTML.Attr.Name.UseCDATA')) return $attr;
- if (!isset($attr['name'])) return $attr;
+ if ($config->get('HTML.Attr.Name.UseCDATA')) {
+ return $attr;
+ }
+ if (!isset($attr['name'])) {
+ return $attr;
+ }
$id = $this->confiscateAttr($attr, 'name');
- if ( isset($attr['id'])) return $attr;
+ if (isset($attr['id'])) {
+ return $attr;
+ }
$attr['id'] = $id;
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/NameSync.php b/library/HTMLPurifier/AttrTransform/NameSync.php
index a95638c14..36079b786 100644
--- a/library/HTMLPurifier/AttrTransform/NameSync.php
+++ b/library/HTMLPurifier/AttrTransform/NameSync.php
@@ -8,20 +8,34 @@
class HTMLPurifier_AttrTransform_NameSync extends HTMLPurifier_AttrTransform
{
- public function __construct() {
+ public function __construct()
+ {
$this->idDef = new HTMLPurifier_AttrDef_HTML_ID();
}
- public function transform($attr, $config, $context) {
- if (!isset($attr['name'])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['name'])) {
+ return $attr;
+ }
$name = $attr['name'];
- if (isset($attr['id']) && $attr['id'] === $name) return $attr;
+ if (isset($attr['id']) && $attr['id'] === $name) {
+ return $attr;
+ }
$result = $this->idDef->validate($name, $config, $context);
- if ($result === false) unset($attr['name']);
- else $attr['name'] = $result;
+ if ($result === false) {
+ unset($attr['name']);
+ } else {
+ $attr['name'] = $result;
+ }
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Nofollow.php b/library/HTMLPurifier/AttrTransform/Nofollow.php
new file mode 100644
index 000000000..1057ebee1
--- /dev/null
+++ b/library/HTMLPurifier/AttrTransform/Nofollow.php
@@ -0,0 +1,52 @@
+<?php
+
+// must be called POST validation
+
+/**
+ * Adds rel="nofollow" to all outbound links. This transform is
+ * only attached if Attr.Nofollow is TRUE.
+ */
+class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ public function __construct()
+ {
+ $this->parser = new HTMLPurifier_URIParser();
+ }
+
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['href'])) {
+ return $attr;
+ }
+
+ // XXX Kind of inefficient
+ $url = $this->parser->parse($attr['href']);
+ $scheme = $url->getSchemeObj($config, $context);
+
+ if ($scheme->browsable && !$url->isLocal($config, $context)) {
+ if (isset($attr['rel'])) {
+ $rels = explode(' ', $attr['rel']);
+ if (!in_array('nofollow', $rels)) {
+ $rels[] = 'nofollow';
+ }
+ $attr['rel'] = implode(' ', $rels);
+ } else {
+ $attr['rel'] = 'nofollow';
+ }
+ }
+ return $attr;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/SafeEmbed.php b/library/HTMLPurifier/AttrTransform/SafeEmbed.php
index 4da449981..231c81a3f 100644
--- a/library/HTMLPurifier/AttrTransform/SafeEmbed.php
+++ b/library/HTMLPurifier/AttrTransform/SafeEmbed.php
@@ -2,9 +2,19 @@
class HTMLPurifier_AttrTransform_SafeEmbed extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeEmbed";
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
$attr['allowscriptaccess'] = 'never';
$attr['allownetworking'] = 'internal';
$attr['type'] = 'application/x-shockwave-flash';
diff --git a/library/HTMLPurifier/AttrTransform/SafeObject.php b/library/HTMLPurifier/AttrTransform/SafeObject.php
index 1ed74898b..d1f3a4d2e 100644
--- a/library/HTMLPurifier/AttrTransform/SafeObject.php
+++ b/library/HTMLPurifier/AttrTransform/SafeObject.php
@@ -5,10 +5,22 @@
*/
class HTMLPurifier_AttrTransform_SafeObject extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeObject";
- function transform($attr, $config, $context) {
- if (!isset($attr['type'])) $attr['type'] = 'application/x-shockwave-flash';
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['type'])) {
+ $attr['type'] = 'application/x-shockwave-flash';
+ }
return $attr;
}
}
diff --git a/library/HTMLPurifier/AttrTransform/SafeParam.php b/library/HTMLPurifier/AttrTransform/SafeParam.php
index 3f992ec31..1143b4b49 100644
--- a/library/HTMLPurifier/AttrTransform/SafeParam.php
+++ b/library/HTMLPurifier/AttrTransform/SafeParam.php
@@ -14,14 +14,30 @@
*/
class HTMLPurifier_AttrTransform_SafeParam extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeParam";
+
+ /**
+ * @type HTMLPurifier_AttrDef_URI
+ */
private $uri;
- public function __construct() {
+ public function __construct()
+ {
$this->uri = new HTMLPurifier_AttrDef_URI(true); // embedded
+ $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent'));
}
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// If we add support for other objects, we'll need to alter the
// transforms.
switch ($attr['name']) {
@@ -33,8 +49,15 @@ class HTMLPurifier_AttrTransform_SafeParam extends HTMLPurifier_AttrTransform
case 'allowNetworking':
$attr['value'] = 'internal';
break;
+ case 'allowFullScreen':
+ if ($config->get('HTML.FlashAllowFullScreen')) {
+ $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false';
+ } else {
+ $attr['value'] = 'false';
+ }
+ break;
case 'wmode':
- $attr['value'] = 'window';
+ $attr['value'] = $this->wmode->validate($attr['value'], $config, $context);
break;
case 'movie':
case 'src':
diff --git a/library/HTMLPurifier/AttrTransform/ScriptRequired.php b/library/HTMLPurifier/AttrTransform/ScriptRequired.php
index 4499050a2..b7057bbf8 100644
--- a/library/HTMLPurifier/AttrTransform/ScriptRequired.php
+++ b/library/HTMLPurifier/AttrTransform/ScriptRequired.php
@@ -5,7 +5,14 @@
*/
class HTMLPurifier_AttrTransform_ScriptRequired extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
if (!isset($attr['type'])) {
$attr['type'] = 'text/javascript';
}
diff --git a/library/HTMLPurifier/AttrTransform/TargetBlank.php b/library/HTMLPurifier/AttrTransform/TargetBlank.php
new file mode 100644
index 000000000..dd63ea89c
--- /dev/null
+++ b/library/HTMLPurifier/AttrTransform/TargetBlank.php
@@ -0,0 +1,45 @@
+<?php
+
+// must be called POST validation
+
+/**
+ * Adds target="blank" to all outbound links. This transform is
+ * only attached if Attr.TargetBlank is TRUE. This works regardless
+ * of whether or not Attr.AllowedFrameTargets
+ */
+class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ public function __construct()
+ {
+ $this->parser = new HTMLPurifier_URIParser();
+ }
+
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['href'])) {
+ return $attr;
+ }
+
+ // XXX Kind of inefficient
+ $url = $this->parser->parse($attr['href']);
+ $scheme = $url->getSchemeObj($config, $context);
+
+ if ($scheme->browsable && !$url->isBenign($config, $context)) {
+ $attr['target'] = '_blank';
+ }
+ return $attr;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Textarea.php b/library/HTMLPurifier/AttrTransform/Textarea.php
index 81ac3488b..6a9f33a0c 100644
--- a/library/HTMLPurifier/AttrTransform/Textarea.php
+++ b/library/HTMLPurifier/AttrTransform/Textarea.php
@@ -5,14 +5,23 @@
*/
class HTMLPurifier_AttrTransform_Textarea extends HTMLPurifier_AttrTransform
{
-
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// Calculated from Firefox
- if (!isset($attr['cols'])) $attr['cols'] = '22';
- if (!isset($attr['rows'])) $attr['rows'] = '3';
+ if (!isset($attr['cols'])) {
+ $attr['cols'] = '22';
+ }
+ if (!isset($attr['rows'])) {
+ $attr['rows'] = '3';
+ }
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTypes.php b/library/HTMLPurifier/AttrTypes.php
index fc2ea4e58..3b70520b6 100644
--- a/library/HTMLPurifier/AttrTypes.php
+++ b/library/HTMLPurifier/AttrTypes.php
@@ -6,7 +6,8 @@
class HTMLPurifier_AttrTypes
{
/**
- * Lookup array of attribute string identifiers to concrete implementations
+ * Lookup array of attribute string identifiers to concrete implementations.
+ * @type HTMLPurifier_AttrDef[]
*/
protected $info = array();
@@ -14,7 +15,15 @@ class HTMLPurifier_AttrTypes
* Constructs the info array, supplying default implementations for attribute
* types.
*/
- public function __construct() {
+ public function __construct()
+ {
+ // XXX This is kind of poor, since we don't actually /clone/
+ // instances; instead, we use the supplied make() attribute. So,
+ // the underlying class must know how to deal with arguments.
+ // With the old implementation of Enum, that ignored its
+ // arguments when handling a make dispatch, the IAlign
+ // definition wouldn't work.
+
// pseudo-types, must be instantiated via shorthand
$this->info['Enum'] = new HTMLPurifier_AttrDef_Enum();
$this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool();
@@ -29,6 +38,9 @@ class HTMLPurifier_AttrTypes
$this->info['URI'] = new HTMLPurifier_AttrDef_URI();
$this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang();
$this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color();
+ $this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right');
+ $this->info['LAlign'] = self::makeEnum('top,bottom,left,right');
+ $this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget();
// unimplemented aliases
$this->info['ContentType'] = new HTMLPurifier_AttrDef_Text();
@@ -44,32 +56,39 @@ class HTMLPurifier_AttrTypes
$this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true);
}
+ private static function makeEnum($in)
+ {
+ return new HTMLPurifier_AttrDef_Clone(new HTMLPurifier_AttrDef_Enum(explode(',', $in)));
+ }
+
/**
* Retrieves a type
- * @param $type String type name
- * @return Object AttrDef for type
+ * @param string $type String type name
+ * @return HTMLPurifier_AttrDef Object AttrDef for type
*/
- public function get($type) {
-
+ public function get($type)
+ {
// determine if there is any extra info tacked on
- if (strpos($type, '#') !== false) list($type, $string) = explode('#', $type, 2);
- else $string = '';
+ if (strpos($type, '#') !== false) {
+ list($type, $string) = explode('#', $type, 2);
+ } else {
+ $string = '';
+ }
if (!isset($this->info[$type])) {
trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR);
return;
}
-
return $this->info[$type]->make($string);
-
}
/**
* Sets a new implementation for a type
- * @param $type String type name
- * @param $impl Object AttrDef for type
+ * @param string $type String type name
+ * @param HTMLPurifier_AttrDef $impl Object AttrDef for type
*/
- public function set($type, $impl) {
+ public function set($type, $impl)
+ {
$this->info[$type] = $impl;
}
}
diff --git a/library/HTMLPurifier/AttrValidator.php b/library/HTMLPurifier/AttrValidator.php
index 829a0f8f2..f97dc93ed 100644
--- a/library/HTMLPurifier/AttrValidator.php
+++ b/library/HTMLPurifier/AttrValidator.php
@@ -9,17 +9,14 @@ class HTMLPurifier_AttrValidator
{
/**
- * Validates the attributes of a token, returning a modified token
+ * Validates the attributes of a token, mutating it as necessary.
* that has valid tokens
- * @param $token Reference to token to validate. We require a reference
- * because the operation this class performs on the token are
- * not atomic, so the context CurrentToken to be updated
- * throughout
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_Token $token Token to validate.
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context
*/
- public function validateToken(&$token, &$config, $context) {
-
+ public function validateToken($token, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
$e =& $context->get('ErrorCollector', true);
@@ -32,12 +29,15 @@ class HTMLPurifier_AttrValidator
// initialize CurrentToken if necessary
$current_token =& $context->get('CurrentToken', true);
- if (!$current_token) $context->register('CurrentToken', $token);
+ if (!$current_token) {
+ $context->register('CurrentToken', $token);
+ }
- if (
- !$token instanceof HTMLPurifier_Token_Start &&
+ if (!$token instanceof HTMLPurifier_Token_Start &&
!$token instanceof HTMLPurifier_Token_Empty
- ) return $token;
+ ) {
+ return;
+ }
// create alias to global definition array, see also $defs
// DEFINITION CALL
@@ -51,7 +51,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info_attr_transform_pre as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -60,7 +62,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info[$token->name]->attr_transform_pre as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -77,7 +81,7 @@ class HTMLPurifier_AttrValidator
foreach ($attr as $attr_key => $value) {
// call the definition
- if ( isset($defs[$attr_key]) ) {
+ if (isset($defs[$attr_key])) {
// there is a local definition defined
if ($defs[$attr_key] === false) {
// We've explicitly been told not to allow this element.
@@ -89,15 +93,19 @@ class HTMLPurifier_AttrValidator
} else {
// validate according to the element's definition
$result = $defs[$attr_key]->validate(
- $value, $config, $context
- );
+ $value,
+ $config,
+ $context
+ );
}
- } elseif ( isset($d_defs[$attr_key]) ) {
+ } elseif (isset($d_defs[$attr_key])) {
// there is a global definition defined, validate according
// to the global definition
$result = $d_defs[$attr_key]->validate(
- $value, $config, $context
- );
+ $value,
+ $config,
+ $context
+ );
} else {
// system never heard of the attribute? DELETE!
$result = false;
@@ -107,7 +115,9 @@ class HTMLPurifier_AttrValidator
if ($result === false || $result === null) {
// this is a generic error message that should replaced
// with more specific ones when possible
- if ($e) $e->send(E_ERROR, 'AttrValidator: Attribute removed');
+ if ($e) {
+ $e->send(E_ERROR, 'AttrValidator: Attribute removed');
+ }
// remove the attribute
unset($attr[$attr_key]);
@@ -137,7 +147,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info_attr_transform_post as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -145,14 +157,18 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info[$token->name]->attr_transform_post as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
$token->attr = $attr;
// destroy CurrentToken if we made it ourselves
- if (!$current_token) $context->destroy('CurrentToken');
+ if (!$current_token) {
+ $context->destroy('CurrentToken');
+ }
}
diff --git a/library/HTMLPurifier/Bootstrap.php b/library/HTMLPurifier/Bootstrap.php
index 559f61a23..707122bb2 100644
--- a/library/HTMLPurifier/Bootstrap.php
+++ b/library/HTMLPurifier/Bootstrap.php
@@ -32,20 +32,34 @@ class HTMLPurifier_Bootstrap
/**
* Autoload function for HTML Purifier
- * @param $class Class to load
+ * @param string $class Class to load
+ * @return bool
*/
- public static function autoload($class) {
+ public static function autoload($class)
+ {
$file = HTMLPurifier_Bootstrap::getPath($class);
- if (!$file) return false;
- require HTMLPURIFIER_PREFIX . '/' . $file;
+ if (!$file) {
+ return false;
+ }
+ // Technically speaking, it should be ok and more efficient to
+ // just do 'require', but Antonio Parraga reports that with
+ // Zend extensions such as Zend debugger and APC, this invariant
+ // may be broken. Since we have efficient alternatives, pay
+ // the cost here and avoid the bug.
+ require_once HTMLPURIFIER_PREFIX . '/' . $file;
return true;
}
/**
* Returns the path for a specific class.
+ * @param string $class Class path to get
+ * @return string
*/
- public static function getPath($class) {
- if (strncmp('HTMLPurifier', $class, 12) !== 0) return false;
+ public static function getPath($class)
+ {
+ if (strncmp('HTMLPurifier', $class, 12) !== 0) {
+ return false;
+ }
// Custom implementations
if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {
$code = str_replace('_', '-', substr($class, 22));
@@ -53,46 +67,58 @@ class HTMLPurifier_Bootstrap
} else {
$file = str_replace('_', '/', $class) . '.php';
}
- if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) return false;
+ if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) {
+ return false;
+ }
return $file;
}
/**
* "Pre-registers" our autoloader on the SPL stack.
*/
- public static function registerAutoload() {
+ public static function registerAutoload()
+ {
$autoload = array('HTMLPurifier_Bootstrap', 'autoload');
- if ( ($funcs = spl_autoload_functions()) === false ) {
+ if (($funcs = spl_autoload_functions()) === false) {
spl_autoload_register($autoload);
} elseif (function_exists('spl_autoload_unregister')) {
- $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
- version_compare(PHP_VERSION, '5.1.0', '>=');
- foreach ($funcs as $func) {
- if (is_array($func)) {
- // :TRICKY: There are some compatibility issues and some
- // places where we need to error out
- $reflector = new ReflectionMethod($func[0], $func[1]);
- if (!$reflector->isStatic()) {
- throw new Exception('
- HTML Purifier autoloader registrar is not compatible
- with non-static object methods due to PHP Bug #44144;
- Please do not use HTMLPurifier.autoload.php (or any
- file that includes this file); instead, place the code:
- spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
- after your own autoloaders.
- ');
+ if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+ // prepend flag exists, no need for shenanigans
+ spl_autoload_register($autoload, true, true);
+ } else {
+ $buggy = version_compare(PHP_VERSION, '5.2.11', '<');
+ $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
+ version_compare(PHP_VERSION, '5.1.0', '>=');
+ foreach ($funcs as $func) {
+ if ($buggy && is_array($func)) {
+ // :TRICKY: There are some compatibility issues and some
+ // places where we need to error out
+ $reflector = new ReflectionMethod($func[0], $func[1]);
+ if (!$reflector->isStatic()) {
+ throw new Exception(
+ 'HTML Purifier autoloader registrar is not compatible
+ with non-static object methods due to PHP Bug #44144;
+ Please do not use HTMLPurifier.autoload.php (or any
+ file that includes this file); instead, place the code:
+ spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
+ after your own autoloaders.'
+ );
+ }
+ // Suprisingly, spl_autoload_register supports the
+ // Class::staticMethod callback format, although call_user_func doesn't
+ if ($compat) {
+ $func = implode('::', $func);
+ }
}
- // Suprisingly, spl_autoload_register supports the
- // Class::staticMethod callback format, although call_user_func doesn't
- if ($compat) $func = implode('::', $func);
+ spl_autoload_unregister($func);
+ }
+ spl_autoload_register($autoload);
+ foreach ($funcs as $func) {
+ spl_autoload_register($func);
}
- spl_autoload_unregister($func);
}
- spl_autoload_register($autoload);
- foreach ($funcs as $func) spl_autoload_register($func);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/CSSDefinition.php b/library/HTMLPurifier/CSSDefinition.php
index 6a2e6f56d..0acdee2d9 100644
--- a/library/HTMLPurifier/CSSDefinition.php
+++ b/library/HTMLPurifier/CSSDefinition.php
@@ -11,35 +11,59 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
/**
* Assoc array of attribute name to definition object.
+ * @type HTMLPurifier_AttrDef[]
*/
public $info = array();
/**
* Constructs the info array. The meat of this class.
+ * @param HTMLPurifier_Config $config
*/
- protected function doSetup($config) {
-
+ protected function doSetup($config)
+ {
$this->info['text-align'] = new HTMLPurifier_AttrDef_Enum(
- array('left', 'right', 'center', 'justify'), false);
+ array('left', 'right', 'center', 'justify'),
+ false
+ );
$border_style =
- $this->info['border-bottom-style'] =
- $this->info['border-right-style'] =
- $this->info['border-left-style'] =
- $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'hidden', 'dotted', 'dashed', 'solid', 'double',
- 'groove', 'ridge', 'inset', 'outset'), false);
+ $this->info['border-bottom-style'] =
+ $this->info['border-right-style'] =
+ $this->info['border-left-style'] =
+ $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'none',
+ 'hidden',
+ 'dotted',
+ 'dashed',
+ 'solid',
+ 'double',
+ 'groove',
+ 'ridge',
+ 'inset',
+ 'outset'
+ ),
+ false
+ );
$this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style);
$this->info['clear'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right', 'both'), false);
+ array('none', 'left', 'right', 'both'),
+ false
+ );
$this->info['float'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right'), false);
+ array('none', 'left', 'right'),
+ false
+ );
$this->info['font-style'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'italic', 'oblique'), false);
+ array('normal', 'italic', 'oblique'),
+ false
+ );
$this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'small-caps'), false);
+ array('normal', 'small-caps'),
+ false
+ );
$uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite(
array(
@@ -49,16 +73,31 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
);
$this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum(
- array('inside', 'outside'), false);
+ array('inside', 'outside'),
+ false
+ );
$this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum(
- array('disc', 'circle', 'square', 'decimal', 'lower-roman',
- 'upper-roman', 'lower-alpha', 'upper-alpha', 'none'), false);
+ array(
+ 'disc',
+ 'circle',
+ 'square',
+ 'decimal',
+ 'lower-roman',
+ 'upper-roman',
+ 'lower-alpha',
+ 'upper-alpha',
+ 'none'
+ ),
+ false
+ );
$this->info['list-style-image'] = $uri_or_none;
$this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
$this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum(
- array('capitalize', 'uppercase', 'lowercase', 'none'), false);
+ array('capitalize', 'uppercase', 'lowercase', 'none'),
+ false
+ );
$this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color();
$this->info['background-image'] = $uri_or_none;
@@ -71,104 +110,137 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
$border_color =
- $this->info['border-top-color'] =
- $this->info['border-bottom-color'] =
- $this->info['border-left-color'] =
- $this->info['border-right-color'] =
- $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('transparent')),
- new HTMLPurifier_AttrDef_CSS_Color()
- ));
+ $this->info['border-top-color'] =
+ $this->info['border-bottom-color'] =
+ $this->info['border-left-color'] =
+ $this->info['border-right-color'] =
+ $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('transparent')),
+ new HTMLPurifier_AttrDef_CSS_Color()
+ )
+ );
$this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config);
$this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color);
$border_width =
- $this->info['border-top-width'] =
- $this->info['border-bottom-width'] =
- $this->info['border-left-width'] =
- $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
- new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
- ));
+ $this->info['border-top-width'] =
+ $this->info['border-bottom-width'] =
+ $this->info['border-left-width'] =
+ $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
+ new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
+ )
+ );
$this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width);
- $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('xx-small', 'x-small',
- 'small', 'medium', 'large', 'x-large', 'xx-large',
- 'larger', 'smaller')),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- ));
+ $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'xx-small',
+ 'x-small',
+ 'small',
+ 'medium',
+ 'large',
+ 'x-large',
+ 'xx-large',
+ 'larger',
+ 'smaller'
+ )
+ ),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true)
+ )
+ );
$margin =
- $this->info['margin-top'] =
- $this->info['margin-bottom'] =
- $this->info['margin-left'] =
- $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- ));
+ $this->info['margin-top'] =
+ $this->info['margin-bottom'] =
+ $this->info['margin-left'] =
+ $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ );
$this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin);
// non-negative
$padding =
- $this->info['padding-top'] =
- $this->info['padding-bottom'] =
- $this->info['padding-left'] =
- $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- ));
+ $this->info['padding-top'] =
+ $this->info['padding-bottom'] =
+ $this->info['padding-left'] =
+ $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true)
+ )
+ );
$this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding);
- $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- ));
+ $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage()
+ )
+ );
- $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- ));
+ $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ );
$max = $config->get('CSS.MaxImgLength');
$this->info['width'] =
$this->info['height'] =
$max === null ?
- $trusted_wh :
- new HTMLPurifier_AttrDef_Switch('img',
- // For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- )),
- // For everyone else:
- $trusted_wh
- );
+ $trusted_wh :
+ new HTMLPurifier_AttrDef_Switch(
+ 'img',
+ // For img tags:
+ new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0', $max),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ ),
+ // For everyone else:
+ $trusted_wh
+ );
$this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration();
@@ -176,8 +248,23 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
// this could use specialized code
$this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'bold', 'bolder', 'lighter', '100', '200', '300',
- '400', '500', '600', '700', '800', '900'), false);
+ array(
+ 'normal',
+ 'bold',
+ 'bolder',
+ 'lighter',
+ '100',
+ '200',
+ '300',
+ '400',
+ '500',
+ '600',
+ '700',
+ '800',
+ '900'
+ ),
+ false
+ );
// MUST be called after other font properties, as it references
// a CSSDefinition object
@@ -190,26 +277,44 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->info['border-left'] =
$this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config);
- $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(array(
- 'collapse', 'separate'));
+ $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(
+ array('collapse', 'separate')
+ );
- $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(array(
- 'top', 'bottom'));
+ $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(
+ array('top', 'bottom')
+ );
- $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(array(
- 'auto', 'fixed'));
+ $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(
+ array('auto', 'fixed')
+ );
- $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('baseline', 'sub', 'super',
- 'top', 'text-top', 'middle', 'bottom', 'text-bottom')),
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- ));
+ $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'baseline',
+ 'sub',
+ 'super',
+ 'top',
+ 'text-top',
+ 'middle',
+ 'bottom',
+ 'text-bottom'
+ )
+ ),
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage()
+ )
+ );
$this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2);
- // partial support
- $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(array('nowrap'));
+ // These CSS properties don't work on many browsers, but we live
+ // in THE FUTURE!
+ $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(
+ array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line')
+ );
if ($config->get('CSS.Proprietary')) {
$this->doSetupProprietary($config);
@@ -219,6 +324,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->doSetupTricky($config);
}
+ if ($config->get('CSS.Trusted')) {
+ $this->doSetupTrusted($config);
+ }
+
$allow_important = $config->get('CSS.AllowImportant');
// wrap all attr-defs with decorator that handles !important
foreach ($this->info as $k => $v) {
@@ -228,64 +337,137 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->setupConfigStuff($config);
}
- protected function doSetupProprietary($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupProprietary($config)
+ {
// Internet Explorer only scrollbar colors
- $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
// technically not proprietary, but CSS3, and no one supports it
- $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
// only opacity, for now
$this->info['filter'] = new HTMLPurifier_AttrDef_CSS_Filter();
+ // more CSS3
+ $this->info['page-break-after'] =
+ $this->info['page-break-before'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'auto',
+ 'always',
+ 'avoid',
+ 'left',
+ 'right'
+ )
+ );
+ $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid'));
+
}
- protected function doSetupTricky($config) {
- $this->info['display'] = new HTMLPurifier_AttrDef_Enum(array(
- 'inline', 'block', 'list-item', 'run-in', 'compact',
- 'marker', 'table', 'inline-table', 'table-row-group',
- 'table-header-group', 'table-footer-group', 'table-row',
- 'table-column-group', 'table-column', 'table-cell', 'table-caption', 'none'
- ));
- $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(array(
- 'visible', 'hidden', 'collapse'
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupTricky($config)
+ {
+ $this->info['display'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'inline',
+ 'block',
+ 'list-item',
+ 'run-in',
+ 'compact',
+ 'marker',
+ 'table',
+ 'inline-block',
+ 'inline-table',
+ 'table-row-group',
+ 'table-header-group',
+ 'table-footer-group',
+ 'table-row',
+ 'table-column-group',
+ 'table-column',
+ 'table-cell',
+ 'table-caption',
+ 'none'
+ )
+ );
+ $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(
+ array('visible', 'hidden', 'collapse')
+ );
$this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll'));
}
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupTrusted($config)
+ {
+ $this->info['position'] = new HTMLPurifier_AttrDef_Enum(
+ array('static', 'relative', 'absolute', 'fixed')
+ );
+ $this->info['top'] =
+ $this->info['left'] =
+ $this->info['right'] =
+ $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_Enum(array('auto')),
+ )
+ );
+ $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Integer(),
+ new HTMLPurifier_AttrDef_Enum(array('auto')),
+ )
+ );
+ }
/**
* Performs extra config-based processing. Based off of
* HTMLPurifier_HTMLDefinition.
+ * @param HTMLPurifier_Config $config
* @todo Refactor duplicate elements into common class (probably using
* composition, not inheritance).
*/
- protected function setupConfigStuff($config) {
-
+ protected function setupConfigStuff($config)
+ {
// setup allowed elements
- $support = "(for information on implementing this, see the ".
- "support forums) ";
- $allowed_attributes = $config->get('CSS.AllowedProperties');
- if ($allowed_attributes !== null) {
+ $support = "(for information on implementing this, see the " .
+ "support forums) ";
+ $allowed_properties = $config->get('CSS.AllowedProperties');
+ if ($allowed_properties !== null) {
foreach ($this->info as $name => $d) {
- if(!isset($allowed_attributes[$name])) unset($this->info[$name]);
- unset($allowed_attributes[$name]);
+ if (!isset($allowed_properties[$name])) {
+ unset($this->info[$name]);
+ }
+ unset($allowed_properties[$name]);
}
// emit errors
- foreach ($allowed_attributes as $name => $d) {
+ foreach ($allowed_properties as $name => $d) {
// :TODO: Is this htmlspecialchars() call really necessary?
$name = htmlspecialchars($name);
trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING);
}
}
+ $forbidden_properties = $config->get('CSS.ForbiddenProperties');
+ if ($forbidden_properties !== null) {
+ foreach ($this->info as $name => $d) {
+ if (isset($forbidden_properties[$name])) {
+ unset($this->info[$name]);
+ }
+ }
+ }
}
}
diff --git a/library/HTMLPurifier/ChildDef.php b/library/HTMLPurifier/ChildDef.php
index c5d5216da..8eb17b82e 100644
--- a/library/HTMLPurifier/ChildDef.php
+++ b/library/HTMLPurifier/ChildDef.php
@@ -1,48 +1,52 @@
<?php
/**
- * Defines allowed child nodes and validates tokens against it.
+ * Defines allowed child nodes and validates nodes against it.
*/
abstract class HTMLPurifier_ChildDef
{
/**
* Type of child definition, usually right-most part of class name lowercase.
* Used occasionally in terms of context.
+ * @type string
*/
public $type;
/**
- * Bool that indicates whether or not an empty array of children is okay
+ * Indicates whether or not an empty array of children is okay.
*
* This is necessary for redundant checking when changes affecting
* a child node may cause a parent node to now be disallowed.
+ * @type bool
*/
public $allow_empty;
/**
- * Lookup array of all elements that this definition could possibly allow
+ * Lookup array of all elements that this definition could possibly allow.
+ * @type array
*/
public $elements = array();
/**
* Get lookup of tag names that should not close this element automatically.
* All other elements will do so.
+ * @param HTMLPurifier_Config $config HTMLPurifier_Config object
+ * @return array
*/
- public function getAllowedElements($config) {
+ public function getAllowedElements($config)
+ {
return $this->elements;
}
/**
* Validates nodes according to definition and returns modification.
*
- * @param $tokens_of_children Array of HTMLPurifier_Token
- * @param $config HTMLPurifier_Config object
- * @param $context HTMLPurifier_Context object
- * @return bool true to leave nodes as is
- * @return bool false to remove parent node
- * @return array of replacement child tokens
+ * @param HTMLPurifier_Node[] $children Array of HTMLPurifier_Node
+ * @param HTMLPurifier_Config $config HTMLPurifier_Config object
+ * @param HTMLPurifier_Context $context HTMLPurifier_Context object
+ * @return bool|array true to leave nodes as is, false to remove parent node, array of replacement children
*/
- abstract public function validateChildren($tokens_of_children, $config, $context);
+ abstract public function validateChildren($children, $config, $context);
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ChildDef/Chameleon.php b/library/HTMLPurifier/ChildDef/Chameleon.php
index 15c364ee3..7439be26b 100644
--- a/library/HTMLPurifier/ChildDef/Chameleon.php
+++ b/library/HTMLPurifier/ChildDef/Chameleon.php
@@ -14,33 +14,52 @@ class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
/**
* Instance of the definition object to use when inline. Usually stricter.
+ * @type HTMLPurifier_ChildDef_Optional
*/
public $inline;
/**
* Instance of the definition object to use when block.
+ * @type HTMLPurifier_ChildDef_Optional
*/
public $block;
+ /**
+ * @type string
+ */
public $type = 'chameleon';
/**
- * @param $inline List of elements to allow when inline.
- * @param $block List of elements to allow when block.
+ * @param array $inline List of elements to allow when inline.
+ * @param array $block List of elements to allow when block.
*/
- public function __construct($inline, $block) {
+ public function __construct($inline, $block)
+ {
$this->inline = new HTMLPurifier_ChildDef_Optional($inline);
- $this->block = new HTMLPurifier_ChildDef_Optional($block);
+ $this->block = new HTMLPurifier_ChildDef_Optional($block);
$this->elements = $this->block->elements;
}
- public function validateChildren($tokens_of_children, $config, $context) {
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function validateChildren($children, $config, $context)
+ {
if ($context->get('IsInline') === false) {
return $this->block->validateChildren(
- $tokens_of_children, $config, $context);
+ $children,
+ $config,
+ $context
+ );
} else {
return $this->inline->validateChildren(
- $tokens_of_children, $config, $context);
+ $children,
+ $config,
+ $context
+ );
}
}
}
diff --git a/library/HTMLPurifier/ChildDef/Custom.php b/library/HTMLPurifier/ChildDef/Custom.php
index b68047b4b..128132e96 100644
--- a/library/HTMLPurifier/ChildDef/Custom.php
+++ b/library/HTMLPurifier/ChildDef/Custom.php
@@ -8,28 +8,42 @@
*/
class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef
{
+ /**
+ * @type string
+ */
public $type = 'custom';
+
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
/**
- * Allowed child pattern as defined by the DTD
+ * Allowed child pattern as defined by the DTD.
+ * @type string
*/
public $dtd_regex;
+
/**
- * PCRE regex derived from $dtd_regex
- * @private
+ * PCRE regex derived from $dtd_regex.
+ * @type string
*/
private $_pcre_regex;
+
/**
* @param $dtd_regex Allowed child pattern from the DTD
*/
- public function __construct($dtd_regex) {
+ public function __construct($dtd_regex)
+ {
$this->dtd_regex = $dtd_regex;
$this->_compileRegex();
}
+
/**
* Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex)
*/
- protected function _compileRegex() {
+ protected function _compileRegex()
+ {
$raw = str_replace(' ', '', $this->dtd_regex);
if ($raw{0} != '(') {
$raw = "($raw)";
@@ -57,33 +71,31 @@ class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef
$this->_pcre_regex = $reg;
}
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function validateChildren($children, $config, $context)
+ {
$list_of_children = '';
$nesting = 0; // depth into the nest
- foreach ($tokens_of_children as $token) {
- if (!empty($token->is_whitespace)) continue;
-
- $is_child = ($nesting == 0); // direct
-
- if ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
-
- if ($is_child) {
- $list_of_children .= $token->name . ',';
+ foreach ($children as $node) {
+ if (!empty($node->is_whitespace)) {
+ continue;
}
+ $list_of_children .= $node->name . ',';
}
// add leading comma to deal with stray comma declarations
$list_of_children = ',' . rtrim($list_of_children, ',');
$okay =
preg_match(
- '/^,?'.$this->_pcre_regex.'$/',
+ '/^,?' . $this->_pcre_regex . '$/',
$list_of_children
);
-
- return (bool) $okay;
+ return (bool)$okay;
}
}
diff --git a/library/HTMLPurifier/ChildDef/Empty.php b/library/HTMLPurifier/ChildDef/Empty.php
index 13171f665..a8a6cbdd2 100644
--- a/library/HTMLPurifier/ChildDef/Empty.php
+++ b/library/HTMLPurifier/ChildDef/Empty.php
@@ -9,10 +9,28 @@
*/
class HTMLPurifier_ChildDef_Empty extends HTMLPurifier_ChildDef
{
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'empty';
- public function __construct() {}
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ public function __construct()
+ {
+ }
+
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
return array();
}
}
diff --git a/library/HTMLPurifier/ChildDef/List.php b/library/HTMLPurifier/ChildDef/List.php
new file mode 100644
index 000000000..891b9f6f5
--- /dev/null
+++ b/library/HTMLPurifier/ChildDef/List.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Definition for list containers ul and ol.
+ *
+ * What does this do? The big thing is to handle ol/ul at the top
+ * level of list nodes, which should be handled specially by /folding/
+ * them into the previous list node. We generally shouldn't ever
+ * see other disallowed elements, because the autoclose behavior
+ * in MakeWellFormed handles it.
+ */
+class HTMLPurifier_ChildDef_List extends HTMLPurifier_ChildDef
+{
+ /**
+ * @type string
+ */
+ public $type = 'list';
+ /**
+ * @type array
+ */
+ // lying a little bit, so that we can handle ul and ol ourselves
+ // XXX: This whole business with 'wrap' is all a bit unsatisfactory
+ public $elements = array('li' => true, 'ul' => true, 'ol' => true);
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ // Flag for subclasses
+ $this->whitespace = false;
+
+ // if there are no tokens, delete parent node
+ if (empty($children)) {
+ return false;
+ }
+
+ // the new set of children
+ $result = array();
+
+ // a little sanity check to make sure it's not ALL whitespace
+ $all_whitespace = true;
+
+ $current_li = false;
+
+ foreach ($children as $node) {
+ if (!empty($node->is_whitespace)) {
+ $result[] = $node;
+ continue;
+ }
+ $all_whitespace = false; // phew, we're not talking about whitespace
+
+ if ($node->name === 'li') {
+ // good
+ $current_li = $node;
+ $result[] = $node;
+ } else {
+ // we want to tuck this into the previous li
+ // Invariant: we expect the node to be ol/ul
+ // ToDo: Make this more robust in the case of not ol/ul
+ // by distinguishing between existing li and li created
+ // to handle non-list elements; non-list elements should
+ // not be appended to an existing li; only li created
+ // for non-list. This distinction is not currently made.
+ if ($current_li === false) {
+ $current_li = new HTMLPurifier_Node_Element('li');
+ $result[] = $current_li;
+ }
+ $current_li->children[] = $node;
+ $current_li->empty = false; // XXX fascinating! Check for this error elsewhere ToDo
+ }
+ }
+ if (empty($result)) {
+ return false;
+ }
+ if ($all_whitespace) {
+ return false;
+ }
+ return $result;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ChildDef/Optional.php b/library/HTMLPurifier/ChildDef/Optional.php
index 32bcb9898..b9468063b 100644
--- a/library/HTMLPurifier/ChildDef/Optional.php
+++ b/library/HTMLPurifier/ChildDef/Optional.php
@@ -9,15 +9,34 @@
*/
class HTMLPurifier_ChildDef_Optional extends HTMLPurifier_ChildDef_Required
{
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'optional';
- public function validateChildren($tokens_of_children, $config, $context) {
- $result = parent::validateChildren($tokens_of_children, $config, $context);
- // we assume that $tokens_of_children is not modified
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ $result = parent::validateChildren($children, $config, $context);
+ // we assume that $children is not modified
if ($result === false) {
- if (empty($tokens_of_children)) return true;
- elseif ($this->whitespace) return $tokens_of_children;
- else return array();
+ if (empty($children)) {
+ return true;
+ } elseif ($this->whitespace) {
+ return $children;
+ } else {
+ return array();
+ }
}
return $result;
}
diff --git a/library/HTMLPurifier/ChildDef/Required.php b/library/HTMLPurifier/ChildDef/Required.php
index 4889f249b..0d1c8f5f3 100644
--- a/library/HTMLPurifier/ChildDef/Required.php
+++ b/library/HTMLPurifier/ChildDef/Required.php
@@ -7,17 +7,21 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
{
/**
* Lookup table of allowed elements.
- * @public
+ * @type array
*/
public $elements = array();
+
/**
* Whether or not the last passed node was all whitespace.
+ * @type bool
*/
protected $whitespace = false;
+
/**
- * @param $elements List of allowed element names (lowercase).
+ * @param array|string $elements List of allowed element names (lowercase).
*/
- public function __construct($elements) {
+ public function __construct($elements)
+ {
if (is_string($elements)) {
$elements = str_replace(' ', '', $elements);
$elements = explode('|', $elements);
@@ -27,29 +31,43 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
$elements = array_flip($elements);
foreach ($elements as $i => $x) {
$elements[$i] = true;
- if (empty($i)) unset($elements[$i]); // remove blank
+ if (empty($i)) {
+ unset($elements[$i]);
+ } // remove blank
}
}
$this->elements = $elements;
}
+
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
+ /**
+ * @type string
+ */
public $type = 'required';
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
// Flag for subclasses
$this->whitespace = false;
// if there are no tokens, delete parent node
- if (empty($tokens_of_children)) return false;
+ if (empty($children)) {
+ return false;
+ }
// the new set of children
$result = array();
- // current depth into the nest
- $nesting = 0;
-
- // whether or not we're deleting a node
- $is_deleting = false;
-
// whether or not parsed character data is allowed
// this controls whether or not we silently drop a tag
// or generate escaped HTML from it
@@ -58,58 +76,41 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
// a little sanity check to make sure it's not ALL whitespace
$all_whitespace = true;
- // some configuration
- $escape_invalid_children = $config->get('Core.EscapeInvalidChildren');
-
- // generator
- $gen = new HTMLPurifier_Generator($config, $context);
-
- foreach ($tokens_of_children as $token) {
- if (!empty($token->is_whitespace)) {
- $result[] = $token;
+ $stack = array_reverse($children);
+ while (!empty($stack)) {
+ $node = array_pop($stack);
+ if (!empty($node->is_whitespace)) {
+ $result[] = $node;
continue;
}
$all_whitespace = false; // phew, we're not talking about whitespace
- $is_child = ($nesting == 0);
-
- if ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
-
- if ($is_child) {
- $is_deleting = false;
- if (!isset($this->elements[$token->name])) {
- $is_deleting = true;
- if ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text) {
- $result[] = $token;
- } elseif ($pcdata_allowed && $escape_invalid_children) {
- $result[] = new HTMLPurifier_Token_Text(
- $gen->generateFromToken($token)
- );
+ if (!isset($this->elements[$node->name])) {
+ // special case text
+ // XXX One of these ought to be redundant or something
+ if ($pcdata_allowed && $node instanceof HTMLPurifier_Node_Text) {
+ $result[] = $node;
+ continue;
+ }
+ // spill the child contents in
+ // ToDo: Make configurable
+ if ($node instanceof HTMLPurifier_Node_Element) {
+ for ($i = count($node->children) - 1; $i >= 0; $i--) {
+ $stack[] = $node->children[$i];
}
continue;
}
+ continue;
}
- if (!$is_deleting || ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text)) {
- $result[] = $token;
- } elseif ($pcdata_allowed && $escape_invalid_children) {
- $result[] =
- new HTMLPurifier_Token_Text(
- $gen->generateFromToken($token)
- );
- } else {
- // drop silently
- }
+ $result[] = $node;
+ }
+ if (empty($result)) {
+ return false;
}
- if (empty($result)) return false;
if ($all_whitespace) {
$this->whitespace = true;
return false;
}
- if ($tokens_of_children == $result) return true;
return $result;
}
}
diff --git a/library/HTMLPurifier/ChildDef/StrictBlockquote.php b/library/HTMLPurifier/ChildDef/StrictBlockquote.php
index dfae8a6e5..3270a46e1 100644
--- a/library/HTMLPurifier/ChildDef/StrictBlockquote.php
+++ b/library/HTMLPurifier/ChildDef/StrictBlockquote.php
@@ -5,75 +5,97 @@
*/
class HTMLPurifier_ChildDef_StrictBlockquote extends HTMLPurifier_ChildDef_Required
{
+ /**
+ * @type array
+ */
protected $real_elements;
+
+ /**
+ * @type array
+ */
protected $fake_elements;
+
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'strictblockquote';
+
+ /**
+ * @type bool
+ */
protected $init = false;
/**
+ * @param HTMLPurifier_Config $config
+ * @return array
* @note We don't want MakeWellFormed to auto-close inline elements since
* they might be allowed.
*/
- public function getAllowedElements($config) {
+ public function getAllowedElements($config)
+ {
$this->init($config);
return $this->fake_elements;
}
- public function validateChildren($tokens_of_children, $config, $context) {
-
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
$this->init($config);
// trick the parent class into thinking it allows more
$this->elements = $this->fake_elements;
- $result = parent::validateChildren($tokens_of_children, $config, $context);
+ $result = parent::validateChildren($children, $config, $context);
$this->elements = $this->real_elements;
- if ($result === false) return array();
- if ($result === true) $result = $tokens_of_children;
+ if ($result === false) {
+ return array();
+ }
+ if ($result === true) {
+ $result = $children;
+ }
$def = $config->getHTMLDefinition();
- $block_wrap_start = new HTMLPurifier_Token_Start($def->info_block_wrapper);
- $block_wrap_end = new HTMLPurifier_Token_End( $def->info_block_wrapper);
- $is_inline = false;
- $depth = 0;
+ $block_wrap_name = $def->info_block_wrapper;
+ $block_wrap = false;
$ret = array();
- // assuming that there are no comment tokens
- foreach ($result as $i => $token) {
- $token = $result[$i];
- // ifs are nested for readability
- if (!$is_inline) {
- if (!$depth) {
- if (
- ($token instanceof HTMLPurifier_Token_Text && !$token->is_whitespace) ||
- (!$token instanceof HTMLPurifier_Token_Text && !isset($this->elements[$token->name]))
- ) {
- $is_inline = true;
- $ret[] = $block_wrap_start;
- }
+ foreach ($result as $node) {
+ if ($block_wrap === false) {
+ if (($node instanceof HTMLPurifier_Node_Text && !$node->is_whitespace) ||
+ ($node instanceof HTMLPurifier_Node_Element && !isset($this->elements[$node->name]))) {
+ $block_wrap = new HTMLPurifier_Node_Element($def->info_block_wrapper);
+ $ret[] = $block_wrap;
}
} else {
- if (!$depth) {
- // starting tokens have been inline text / empty
- if ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) {
- if (isset($this->elements[$token->name])) {
- // ended
- $ret[] = $block_wrap_end;
- $is_inline = false;
- }
- }
+ if ($node instanceof HTMLPurifier_Node_Element && isset($this->elements[$node->name])) {
+ $block_wrap = false;
+
}
}
- $ret[] = $token;
- if ($token instanceof HTMLPurifier_Token_Start) $depth++;
- if ($token instanceof HTMLPurifier_Token_End) $depth--;
+ if ($block_wrap) {
+ $block_wrap->children[] = $node;
+ } else {
+ $ret[] = $node;
+ }
}
- if ($is_inline) $ret[] = $block_wrap_end;
return $ret;
}
- private function init($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ private function init($config)
+ {
if (!$this->init) {
$def = $config->getHTMLDefinition();
// allow all inline elements
diff --git a/library/HTMLPurifier/ChildDef/Table.php b/library/HTMLPurifier/ChildDef/Table.php
index 34f0227dd..3e4a0f218 100644
--- a/library/HTMLPurifier/ChildDef/Table.php
+++ b/library/HTMLPurifier/ChildDef/Table.php
@@ -1,140 +1,222 @@
<?php
/**
- * Definition for tables
+ * Definition for tables. The general idea is to extract out all of the
+ * essential bits, and then reconstruct it later.
+ *
+ * This is a bit confusing, because the DTDs and the W3C
+ * validators seem to disagree on the appropriate definition. The
+ * DTD claims:
+ *
+ * (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)
+ *
+ * But actually, the HTML4 spec then has this to say:
+ *
+ * The TBODY start tag is always required except when the table
+ * contains only one table body and no table head or foot sections.
+ * The TBODY end tag may always be safely omitted.
+ *
+ * So the DTD is kind of wrong. The validator is, unfortunately, kind
+ * of on crack.
+ *
+ * The definition changed again in XHTML1.1; and in my opinion, this
+ * formulation makes the most sense.
+ *
+ * caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ ))
+ *
+ * Essentially, we have two modes: thead/tfoot/tbody mode, and tr mode.
+ * If we encounter a thead, tfoot or tbody, we are placed in the former
+ * mode, and we *must* wrap any stray tr segments with a tbody. But if
+ * we don't run into any of them, just have tr tags is OK.
*/
class HTMLPurifier_ChildDef_Table extends HTMLPurifier_ChildDef
{
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
+ /**
+ * @type string
+ */
public $type = 'table';
- public $elements = array('tr' => true, 'tbody' => true, 'thead' => true,
- 'tfoot' => true, 'caption' => true, 'colgroup' => true, 'col' => true);
- public function __construct() {}
- public function validateChildren($tokens_of_children, $config, $context) {
- if (empty($tokens_of_children)) return false;
- // this ensures that the loop gets run one last time before closing
- // up. It's a little bit of a hack, but it works! Just make sure you
- // get rid of the token later.
- $tokens_of_children[] = false;
+ /**
+ * @type array
+ */
+ public $elements = array(
+ 'tr' => true,
+ 'tbody' => true,
+ 'thead' => true,
+ 'tfoot' => true,
+ 'caption' => true,
+ 'colgroup' => true,
+ 'col' => true
+ );
+
+ public function __construct()
+ {
+ }
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ if (empty($children)) {
+ return false;
+ }
// only one of these elements is allowed in a table
$caption = false;
- $thead = false;
- $tfoot = false;
+ $thead = false;
+ $tfoot = false;
+
+ // whitespace
+ $initial_ws = array();
+ $after_caption_ws = array();
+ $after_thead_ws = array();
+ $after_tfoot_ws = array();
// as many of these as you want
- $cols = array();
+ $cols = array();
$content = array();
- $nesting = 0; // current depth so we can determine nodes
- $is_collecting = false; // are we globbing together tokens to package
- // into one of the collectors?
- $collection = array(); // collected nodes
- $tag_index = 0; // the first node might be whitespace,
- // so this tells us where the start tag is
-
- foreach ($tokens_of_children as $token) {
- $is_child = ($nesting == 0);
-
- if ($token === false) {
- // terminating sequence started
- } elseif ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
+ $tbody_mode = false; // if true, then we need to wrap any stray
+ // <tr>s with a <tbody>.
- // handle node collection
- if ($is_collecting) {
- if ($is_child) {
- // okay, let's stash the tokens away
- // first token tells us the type of the collection
- switch ($collection[$tag_index]->name) {
- case 'tr':
- case 'tbody':
- $content[] = $collection;
- break;
- case 'caption':
- if ($caption !== false) break;
- $caption = $collection;
- break;
- case 'thead':
- case 'tfoot':
- // access the appropriate variable, $thead or $tfoot
- $var = $collection[$tag_index]->name;
- if ($$var === false) {
- $$var = $collection;
- } else {
- // transmutate the first and less entries into
- // tbody tags, and then put into content
- $collection[$tag_index]->name = 'tbody';
- $collection[count($collection)-1]->name = 'tbody';
- $content[] = $collection;
- }
- break;
- case 'colgroup':
- $cols[] = $collection;
- break;
- }
- $collection = array();
- $is_collecting = false;
- $tag_index = 0;
+ $ws_accum =& $initial_ws;
+
+ foreach ($children as $node) {
+ if ($node instanceof HTMLPurifier_Node_Comment) {
+ $ws_accum[] = $node;
+ continue;
+ }
+ switch ($node->name) {
+ case 'tbody':
+ $tbody_mode = true;
+ // fall through
+ case 'tr':
+ $content[] = $node;
+ $ws_accum =& $content;
+ break;
+ case 'caption':
+ // there can only be one caption!
+ if ($caption !== false) break;
+ $caption = $node;
+ $ws_accum =& $after_caption_ws;
+ break;
+ case 'thead':
+ $tbody_mode = true;
+ // XXX This breaks rendering properties with
+ // Firefox, which never floats a <thead> to
+ // the top. Ever. (Our scheme will float the
+ // first <thead> to the top.) So maybe
+ // <thead>s that are not first should be
+ // turned into <tbody>? Very tricky, indeed.
+ if ($thead === false) {
+ $thead = $node;
+ $ws_accum =& $after_thead_ws;
} else {
- // add the node to the collection
- $collection[] = $token;
+ // Oops, there's a second one! What
+ // should we do? Current behavior is to
+ // transmutate the first and last entries into
+ // tbody tags, and then put into content.
+ // Maybe a better idea is to *attach
+ // it* to the existing thead or tfoot?
+ // We don't do this, because Firefox
+ // doesn't float an extra tfoot to the
+ // bottom like it does for the first one.
+ $node->name = 'tbody';
+ $content[] = $node;
+ $ws_accum =& $content;
}
- }
-
- // terminate
- if ($token === false) break;
-
- if ($is_child) {
- // determine what we're dealing with
- if ($token->name == 'col') {
- // the only empty tag in the possie, we can handle it
- // immediately
- $cols[] = array_merge($collection, array($token));
- $collection = array();
- $tag_index = 0;
- continue;
+ break;
+ case 'tfoot':
+ // see above for some aveats
+ $tbody_mode = true;
+ if ($tfoot === false) {
+ $tfoot = $node;
+ $ws_accum =& $after_tfoot_ws;
+ } else {
+ $node->name = 'tbody';
+ $content[] = $node;
+ $ws_accum =& $content;
}
- switch($token->name) {
- case 'caption':
- case 'colgroup':
- case 'thead':
- case 'tfoot':
- case 'tbody':
- case 'tr':
- $is_collecting = true;
- $collection[] = $token;
- continue;
- default:
- if (!empty($token->is_whitespace)) {
- $collection[] = $token;
- $tag_index++;
- }
- continue;
+ break;
+ case 'colgroup':
+ case 'col':
+ $cols[] = $node;
+ $ws_accum =& $cols;
+ break;
+ case '#PCDATA':
+ // How is whitespace handled? We treat is as sticky to
+ // the *end* of the previous element. So all of the
+ // nonsense we have worked on is to keep things
+ // together.
+ if (!empty($node->is_whitespace)) {
+ $ws_accum[] = $node;
}
+ break;
}
}
- if (empty($content)) return false;
-
- $ret = array();
- if ($caption !== false) $ret = array_merge($ret, $caption);
- if ($cols !== false) foreach ($cols as $token_array) $ret = array_merge($ret, $token_array);
- if ($thead !== false) $ret = array_merge($ret, $thead);
- if ($tfoot !== false) $ret = array_merge($ret, $tfoot);
- foreach ($content as $token_array) $ret = array_merge($ret, $token_array);
- if (!empty($collection) && $is_collecting == false){
- // grab the trailing space
- $ret = array_merge($ret, $collection);
+ if (empty($content)) {
+ return false;
+ }
+
+ $ret = $initial_ws;
+ if ($caption !== false) {
+ $ret[] = $caption;
+ $ret = array_merge($ret, $after_caption_ws);
+ }
+ if ($cols !== false) {
+ $ret = array_merge($ret, $cols);
+ }
+ if ($thead !== false) {
+ $ret[] = $thead;
+ $ret = array_merge($ret, $after_thead_ws);
+ }
+ if ($tfoot !== false) {
+ $ret[] = $tfoot;
+ $ret = array_merge($ret, $after_tfoot_ws);
}
- array_pop($tokens_of_children); // remove phantom token
+ if ($tbody_mode) {
+ // we have to shuffle tr into tbody
+ $current_tr_tbody = null;
+
+ foreach($content as $node) {
+ switch ($node->name) {
+ case 'tbody':
+ $current_tr_tbody = null;
+ $ret[] = $node;
+ break;
+ case 'tr':
+ if ($current_tr_tbody === null) {
+ $current_tr_tbody = new HTMLPurifier_Node_Element('tbody');
+ $ret[] = $current_tr_tbody;
+ }
+ $current_tr_tbody->children[] = $node;
+ break;
+ case '#PCDATA':
+ assert($node->is_whitespace);
+ if ($current_tr_tbody === null) {
+ $ret[] = $node;
+ } else {
+ $current_tr_tbody->children[] = $node;
+ }
+ break;
+ }
+ }
+ } else {
+ $ret = array_merge($ret, $content);
+ }
- return ($ret === $tokens_of_children) ? true : $ret;
+ return $ret;
}
}
diff --git a/library/HTMLPurifier/Config.php b/library/HTMLPurifier/Config.php
index 2a334b0d8..7ada59b94 100644
--- a/library/HTMLPurifier/Config.php
+++ b/library/HTMLPurifier/Config.php
@@ -19,77 +19,92 @@ class HTMLPurifier_Config
/**
* HTML Purifier's version
+ * @type string
*/
- public $version = '4.1.1';
+ public $version = '4.6.0';
/**
- * Bool indicator whether or not to automatically finalize
- * the object if a read operation is done
+ * Whether or not to automatically finalize
+ * the object if a read operation is done.
+ * @type bool
*/
public $autoFinalize = true;
// protected member variables
/**
- * Namespace indexed array of serials for specific namespaces (see
- * getSerial() for more info).
+ * Namespace indexed array of serials for specific namespaces.
+ * @see getSerial() for more info.
+ * @type string[]
*/
protected $serials = array();
/**
- * Serial for entire configuration object
+ * Serial for entire configuration object.
+ * @type string
*/
protected $serial;
/**
- * Parser for variables
+ * Parser for variables.
+ * @type HTMLPurifier_VarParser_Flexible
*/
- protected $parser;
+ protected $parser = null;
/**
- * Reference HTMLPurifier_ConfigSchema for value checking
+ * Reference HTMLPurifier_ConfigSchema for value checking.
+ * @type HTMLPurifier_ConfigSchema
* @note This is public for introspective purposes. Please don't
* abuse!
*/
public $def;
/**
- * Indexed array of definitions
+ * Indexed array of definitions.
+ * @type HTMLPurifier_Definition[]
*/
protected $definitions;
/**
- * Bool indicator whether or not config is finalized
+ * Whether or not config is finalized.
+ * @type bool
*/
protected $finalized = false;
/**
* Property list containing configuration directives.
+ * @type array
*/
protected $plist;
/**
- * Whether or not a set is taking place due to an
- * alias lookup.
+ * Whether or not a set is taking place due to an alias lookup.
+ * @type bool
*/
private $aliasMode;
/**
- * Set to false if you do not want line and file numbers in errors
- * (useful when unit testing)
+ * Set to false if you do not want line and file numbers in errors.
+ * (useful when unit testing). This will also compress some errors
+ * and exceptions.
+ * @type bool
*/
public $chatty = true;
/**
* Current lock; only gets to this namespace are allowed.
+ * @type string
*/
private $lock;
/**
- * @param $definition HTMLPurifier_ConfigSchema that defines what directives
- * are allowed.
+ * Constructor
+ * @param HTMLPurifier_ConfigSchema $definition ConfigSchema that defines
+ * what directives are allowed.
+ * @param HTMLPurifier_PropertyList $parent
*/
- public function __construct($definition, $parent = null) {
+ public function __construct($definition, $parent = null)
+ {
$parent = $parent ? $parent : $definition->defaultPlist;
$this->plist = new HTMLPurifier_PropertyList($parent);
$this->def = $definition; // keep a copy around for checking
@@ -102,10 +117,11 @@ class HTMLPurifier_Config
* object. Can be: a HTMLPurifier_Config() object,
* an array of directives based on loadArray(),
* or a string filename of an ini file.
- * @param HTMLPurifier_ConfigSchema Schema object
- * @return Configured HTMLPurifier_Config object
+ * @param HTMLPurifier_ConfigSchema $schema Schema object
+ * @return HTMLPurifier_Config Configured object
*/
- public static function create($config, $schema = null) {
+ public static function create($config, $schema = null)
+ {
if ($config instanceof HTMLPurifier_Config) {
// pass-through
return $config;
@@ -115,57 +131,79 @@ class HTMLPurifier_Config
} else {
$ret = new HTMLPurifier_Config($schema);
}
- if (is_string($config)) $ret->loadIni($config);
- elseif (is_array($config)) $ret->loadArray($config);
+ if (is_string($config)) {
+ $ret->loadIni($config);
+ } elseif (is_array($config)) $ret->loadArray($config);
return $ret;
}
/**
* Creates a new config object that inherits from a previous one.
- * @param HTMLPurifier_Config $config Configuration object to inherit
- * from.
+ * @param HTMLPurifier_Config $config Configuration object to inherit from.
* @return HTMLPurifier_Config object with $config as its parent.
*/
- public static function inherit(HTMLPurifier_Config $config) {
+ public static function inherit(HTMLPurifier_Config $config)
+ {
return new HTMLPurifier_Config($config->def, $config->plist);
}
/**
* Convenience constructor that creates a default configuration object.
- * @return Default HTMLPurifier_Config object.
+ * @return HTMLPurifier_Config default object.
*/
- public static function createDefault() {
+ public static function createDefault()
+ {
$definition = HTMLPurifier_ConfigSchema::instance();
$config = new HTMLPurifier_Config($definition);
return $config;
}
/**
- * Retreives a value from the configuration.
- * @param $key String key
+ * Retrieves a value from the configuration.
+ *
+ * @param string $key String key
+ * @param mixed $a
+ *
+ * @return mixed
*/
- public function get($key, $a = null) {
+ public function get($key, $a = null)
+ {
if ($a !== null) {
- $this->triggerError("Using deprecated API: use \$config->get('$key.$a') instead", E_USER_WARNING);
+ $this->triggerError(
+ "Using deprecated API: use \$config->get('$key.$a') instead",
+ E_USER_WARNING
+ );
$key = "$key.$a";
}
- if (!$this->finalized) $this->autoFinalize();
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
if (!isset($this->def->info[$key])) {
// can't add % due to SimpleTest bug
- $this->triggerError('Cannot retrieve value of undefined directive ' . htmlspecialchars($key),
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot retrieve value of undefined directive ' . htmlspecialchars($key),
+ E_USER_WARNING
+ );
return;
}
if (isset($this->def->info[$key]->isAlias)) {
$d = $this->def->info[$key];
- $this->triggerError('Cannot get value from aliased directive, use real name ' . $d->key,
- E_USER_ERROR);
+ $this->triggerError(
+ 'Cannot get value from aliased directive, use real name ' . $d->key,
+ E_USER_ERROR
+ );
return;
}
if ($this->lock) {
list($ns) = explode('.', $key);
if ($ns !== $this->lock) {
- $this->triggerError('Cannot get value of namespace ' . $ns . ' when lock for ' . $this->lock . ' is active, this probably indicates a Definition setup method is accessing directives that are not within its namespace', E_USER_ERROR);
+ $this->triggerError(
+ 'Cannot get value of namespace ' . $ns . ' when lock for ' .
+ $this->lock .
+ ' is active, this probably indicates a Definition setup method ' .
+ 'is accessing directives that are not within its namespace',
+ E_USER_ERROR
+ );
return;
}
}
@@ -173,53 +211,73 @@ class HTMLPurifier_Config
}
/**
- * Retreives an array of directives to values from a given namespace
- * @param $namespace String namespace
+ * Retrieves an array of directives to values from a given namespace
+ *
+ * @param string $namespace String namespace
+ *
+ * @return array
*/
- public function getBatch($namespace) {
- if (!$this->finalized) $this->autoFinalize();
+ public function getBatch($namespace)
+ {
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
$full = $this->getAll();
if (!isset($full[$namespace])) {
- $this->triggerError('Cannot retrieve undefined namespace ' . htmlspecialchars($namespace),
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot retrieve undefined namespace ' .
+ htmlspecialchars($namespace),
+ E_USER_WARNING
+ );
return;
}
return $full[$namespace];
}
/**
- * Returns a md5 signature of a segment of the configuration object
+ * Returns a SHA-1 signature of a segment of the configuration object
* that uniquely identifies that particular configuration
+ *
+ * @param string $namespace Namespace to get serial for
+ *
+ * @return string
* @note Revision is handled specially and is removed from the batch
* before processing!
- * @param $namespace Namespace to get serial for
*/
- public function getBatchSerial($namespace) {
+ public function getBatchSerial($namespace)
+ {
if (empty($this->serials[$namespace])) {
$batch = $this->getBatch($namespace);
unset($batch['DefinitionRev']);
- $this->serials[$namespace] = md5(serialize($batch));
+ $this->serials[$namespace] = sha1(serialize($batch));
}
return $this->serials[$namespace];
}
/**
- * Returns a md5 signature for the entire configuration object
+ * Returns a SHA-1 signature for the entire configuration object
* that uniquely identifies that particular configuration
+ *
+ * @return string
*/
- public function getSerial() {
+ public function getSerial()
+ {
if (empty($this->serial)) {
- $this->serial = md5(serialize($this->getAll()));
+ $this->serial = sha1(serialize($this->getAll()));
}
return $this->serial;
}
/**
* Retrieves all directives, organized by namespace
+ *
* @warning This is a pretty inefficient function, avoid if you can
*/
- public function getAll() {
- if (!$this->finalized) $this->autoFinalize();
+ public function getAll()
+ {
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
$ret = array();
foreach ($this->plist->squash() as $name => $value) {
list($ns, $key) = explode('.', $name, 2);
@@ -230,10 +288,13 @@ class HTMLPurifier_Config
/**
* Sets a value to configuration.
- * @param $key String key
- * @param $value Mixed value
+ *
+ * @param string $key key
+ * @param mixed $value value
+ * @param mixed $a
*/
- public function set($key, $value, $a = null) {
+ public function set($key, $value, $a = null)
+ {
if (strpos($key, '.') === false) {
$namespace = $key;
$directive = $value;
@@ -243,18 +304,25 @@ class HTMLPurifier_Config
} else {
list($namespace) = explode('.', $key);
}
- if ($this->isFinalized('Cannot set directive after finalization')) return;
+ if ($this->isFinalized('Cannot set directive after finalization')) {
+ return;
+ }
if (!isset($this->def->info[$key])) {
- $this->triggerError('Cannot set undefined directive ' . htmlspecialchars($key) . ' to value',
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot set undefined directive ' . htmlspecialchars($key) . ' to value',
+ E_USER_WARNING
+ );
return;
}
$def = $this->def->info[$key];
if (isset($def->isAlias)) {
if ($this->aliasMode) {
- $this->triggerError('Double-aliases not allowed, please fix '.
- 'ConfigSchema bug with' . $key, E_USER_ERROR);
+ $this->triggerError(
+ 'Double-aliases not allowed, please fix '.
+ 'ConfigSchema bug with' . $key,
+ E_USER_ERROR
+ );
return;
}
$this->aliasMode = true;
@@ -278,7 +346,11 @@ class HTMLPurifier_Config
try {
$value = $this->parser->parse($value, $type, $allow_null);
} catch (HTMLPurifier_VarParserException $e) {
- $this->triggerError('Value for ' . $key . ' is of invalid type, should be ' . HTMLPurifier_VarParser::getTypeName($type), E_USER_WARNING);
+ $this->triggerError(
+ 'Value for ' . $key . ' is of invalid type, should be ' .
+ HTMLPurifier_VarParser::getTypeName($type),
+ E_USER_WARNING
+ );
return;
}
if (is_string($value) && is_object($def)) {
@@ -288,8 +360,11 @@ class HTMLPurifier_Config
}
// check to see if the value is allowed
if (isset($def->allowed) && !isset($def->allowed[$value])) {
- $this->triggerError('Value not supported, valid values are: ' .
- $this->_listify($def->allowed), E_USER_WARNING);
+ $this->triggerError(
+ 'Value not supported, valid values are: ' .
+ $this->_listify($def->allowed),
+ E_USER_WARNING
+ );
return;
}
}
@@ -307,38 +382,102 @@ class HTMLPurifier_Config
/**
* Convenience function for error reporting
+ *
+ * @param array $lookup
+ *
+ * @return string
*/
- private function _listify($lookup) {
+ private function _listify($lookup)
+ {
$list = array();
- foreach ($lookup as $name => $b) $list[] = $name;
+ foreach ($lookup as $name => $b) {
+ $list[] = $name;
+ }
return implode(', ', $list);
}
/**
* Retrieves object reference to the HTML definition.
- * @param $raw Return a copy that has not been setup yet. Must be
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
* called before it's been setup, otherwise won't work.
- */
- public function getHTMLDefinition($raw = false) {
- return $this->getDefinition('HTML', $raw);
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawHTMLDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_HTMLDefinition
+ */
+ public function getHTMLDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('HTML', $raw, $optimized);
}
/**
* Retrieves object reference to the CSS definition
- * @param $raw Return a copy that has not been setup yet. Must be
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
* called before it's been setup, otherwise won't work.
- */
- public function getCSSDefinition($raw = false) {
- return $this->getDefinition('CSS', $raw);
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawCSSDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_CSSDefinition
+ */
+ public function getCSSDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('CSS', $raw, $optimized);
+ }
+
+ /**
+ * Retrieves object reference to the URI definition
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
+ * called before it's been setup, otherwise won't work.
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawURIDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_URIDefinition
+ */
+ public function getURIDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('URI', $raw, $optimized);
}
/**
* Retrieves a definition
- * @param $type Type of definition: HTML, CSS, etc
- * @param $raw Whether or not definition should be returned raw
- */
- public function getDefinition($type, $raw = false) {
- if (!$this->finalized) $this->autoFinalize();
+ *
+ * @param string $type Type of definition: HTML, CSS, etc
+ * @param bool $raw Whether or not definition should be returned raw
+ * @param bool $optimized Only has an effect when $raw is true. Whether
+ * or not to return null if the result is already present in
+ * the cache. This is off by default for backwards
+ * compatibility reasons, but you need to do things this
+ * way in order to ensure that caching is done properly.
+ * Check out enduser-customize.html for more details.
+ * We probably won't ever change this default, as much as the
+ * maybe semantics is the "right thing to do."
+ *
+ * @throws HTMLPurifier_Exception
+ * @return HTMLPurifier_Definition
+ */
+ public function getDefinition($type, $raw = false, $optimized = false)
+ {
+ if ($optimized && !$raw) {
+ throw new HTMLPurifier_Exception("Cannot set optimized = true when raw = false");
+ }
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
// temporarily suspend locks, so we can handle recursive definition calls
$lock = $this->lock;
$this->lock = null;
@@ -346,61 +485,193 @@ class HTMLPurifier_Config
$cache = $factory->create($type, $this);
$this->lock = $lock;
if (!$raw) {
- // see if we can quickly supply a definition
+ // full definition
+ // ---------------
+ // check if definition is in memory
+ if (!empty($this->definitions[$type])) {
+ $def = $this->definitions[$type];
+ // check if the definition is setup
+ if ($def->setup) {
+ return $def;
+ } else {
+ $def->setup($this);
+ if ($def->optimized) {
+ $cache->add($def, $this);
+ }
+ return $def;
+ }
+ }
+ // check if definition is in cache
+ $def = $cache->get($this);
+ if ($def) {
+ // definition in cache, save to memory and return it
+ $this->definitions[$type] = $def;
+ return $def;
+ }
+ // initialize it
+ $def = $this->initDefinition($type);
+ // set it up
+ $this->lock = $type;
+ $def->setup($this);
+ $this->lock = null;
+ // save in cache
+ $cache->add($def, $this);
+ // return it
+ return $def;
+ } else {
+ // raw definition
+ // --------------
+ // check preconditions
+ $def = null;
+ if ($optimized) {
+ if (is_null($this->get($type . '.DefinitionID'))) {
+ // fatally error out if definition ID not set
+ throw new HTMLPurifier_Exception(
+ "Cannot retrieve raw version without specifying %$type.DefinitionID"
+ );
+ }
+ }
if (!empty($this->definitions[$type])) {
- if (!$this->definitions[$type]->setup) {
- $this->definitions[$type]->setup($this);
- $cache->set($this->definitions[$type], $this);
+ $def = $this->definitions[$type];
+ if ($def->setup && !$optimized) {
+ $extra = $this->chatty ?
+ " (try moving this code block earlier in your initialization)" :
+ "";
+ throw new HTMLPurifier_Exception(
+ "Cannot retrieve raw definition after it has already been setup" .
+ $extra
+ );
+ }
+ if ($def->optimized === null) {
+ $extra = $this->chatty ? " (try flushing your cache)" : "";
+ throw new HTMLPurifier_Exception(
+ "Optimization status of definition is unknown" . $extra
+ );
+ }
+ if ($def->optimized !== $optimized) {
+ $msg = $optimized ? "optimized" : "unoptimized";
+ $extra = $this->chatty ?
+ " (this backtrace is for the first inconsistent call, which was for a $msg raw definition)"
+ : "";
+ throw new HTMLPurifier_Exception(
+ "Inconsistent use of optimized and unoptimized raw definition retrievals" . $extra
+ );
}
- return $this->definitions[$type];
}
- // memory check missed, try cache
- $this->definitions[$type] = $cache->get($this);
- if ($this->definitions[$type]) {
- // definition in cache, return it
- return $this->definitions[$type];
+ // check if definition was in memory
+ if ($def) {
+ if ($def->setup) {
+ // invariant: $optimized === true (checked above)
+ return null;
+ } else {
+ return $def;
+ }
}
- } elseif (
- !empty($this->definitions[$type]) &&
- !$this->definitions[$type]->setup
- ) {
- // raw requested, raw in memory, quick return
- return $this->definitions[$type];
+ // if optimized, check if definition was in cache
+ // (because we do the memory check first, this formulation
+ // is prone to cache slamming, but I think
+ // guaranteeing that either /all/ of the raw
+ // setup code or /none/ of it is run is more important.)
+ if ($optimized) {
+ // This code path only gets run once; once we put
+ // something in $definitions (which is guaranteed by the
+ // trailing code), we always short-circuit above.
+ $def = $cache->get($this);
+ if ($def) {
+ // save the full definition for later, but don't
+ // return it yet
+ $this->definitions[$type] = $def;
+ return null;
+ }
+ }
+ // check invariants for creation
+ if (!$optimized) {
+ if (!is_null($this->get($type . '.DefinitionID'))) {
+ if ($this->chatty) {
+ $this->triggerError(
+ 'Due to a documentation error in previous version of HTML Purifier, your ' .
+ 'definitions are not being cached. If this is OK, you can remove the ' .
+ '%$type.DefinitionRev and %$type.DefinitionID declaration. Otherwise, ' .
+ 'modify your code to use maybeGetRawDefinition, and test if the returned ' .
+ 'value is null before making any edits (if it is null, that means that a ' .
+ 'cached version is available, and no raw operations are necessary). See ' .
+ '<a href="http://htmlpurifier.org/docs/enduser-customize.html#optimized">' .
+ 'Customize</a> for more details',
+ E_USER_WARNING
+ );
+ } else {
+ $this->triggerError(
+ "Useless DefinitionID declaration",
+ E_USER_WARNING
+ );
+ }
+ }
+ }
+ // initialize it
+ $def = $this->initDefinition($type);
+ $def->optimized = $optimized;
+ return $def;
}
+ throw new HTMLPurifier_Exception("The impossible happened!");
+ }
+
+ /**
+ * Initialise definition
+ *
+ * @param string $type What type of definition to create
+ *
+ * @return HTMLPurifier_CSSDefinition|HTMLPurifier_HTMLDefinition|HTMLPurifier_URIDefinition
+ * @throws HTMLPurifier_Exception
+ */
+ private function initDefinition($type)
+ {
// quick checks failed, let's create the object
if ($type == 'HTML') {
- $this->definitions[$type] = new HTMLPurifier_HTMLDefinition();
+ $def = new HTMLPurifier_HTMLDefinition();
} elseif ($type == 'CSS') {
- $this->definitions[$type] = new HTMLPurifier_CSSDefinition();
+ $def = new HTMLPurifier_CSSDefinition();
} elseif ($type == 'URI') {
- $this->definitions[$type] = new HTMLPurifier_URIDefinition();
+ $def = new HTMLPurifier_URIDefinition();
} else {
- throw new HTMLPurifier_Exception("Definition of $type type not supported");
+ throw new HTMLPurifier_Exception(
+ "Definition of $type type not supported"
+ );
}
- // quick abort if raw
- if ($raw) {
- if (is_null($this->get($type . '.DefinitionID'))) {
- // fatally error out if definition ID not set
- throw new HTMLPurifier_Exception("Cannot retrieve raw version without specifying %$type.DefinitionID");
- }
- return $this->definitions[$type];
- }
- // set it up
- $this->lock = $type;
- $this->definitions[$type]->setup($this);
- $this->lock = null;
- // save in cache
- $cache->set($this->definitions[$type], $this);
- return $this->definitions[$type];
+ $this->definitions[$type] = $def;
+ return $def;
+ }
+
+ public function maybeGetRawDefinition($name)
+ {
+ return $this->getDefinition($name, true, true);
+ }
+
+ public function maybeGetRawHTMLDefinition()
+ {
+ return $this->getDefinition('HTML', true, true);
+ }
+
+ public function maybeGetRawCSSDefinition()
+ {
+ return $this->getDefinition('CSS', true, true);
+ }
+
+ public function maybeGetRawURIDefinition()
+ {
+ return $this->getDefinition('URI', true, true);
}
/**
* Loads configuration values from an array with the following structure:
* Namespace.Directive => Value
- * @param $config_array Configuration associative array
+ *
+ * @param array $config_array Configuration associative array
*/
- public function loadArray($config_array) {
- if ($this->isFinalized('Cannot load directives after finalization')) return;
+ public function loadArray($config_array)
+ {
+ if ($this->isFinalized('Cannot load directives after finalization')) {
+ return;
+ }
foreach ($config_array as $key => $value) {
$key = str_replace('_', '.', $key);
if (strpos($key, '.') !== false) {
@@ -408,8 +679,8 @@ class HTMLPurifier_Config
} else {
$namespace = $key;
$namespace_values = $value;
- foreach ($namespace_values as $directive => $value) {
- $this->set($namespace .'.'. $directive, $value);
+ foreach ($namespace_values as $directive => $value2) {
+ $this->set($namespace .'.'. $directive, $value2);
}
}
}
@@ -419,40 +690,55 @@ class HTMLPurifier_Config
* Returns a list of array(namespace, directive) for all directives
* that are allowed in a web-form context as per an allowed
* namespaces/directives list.
- * @param $allowed List of allowed namespaces/directives
- */
- public static function getAllowedDirectivesForForm($allowed, $schema = null) {
+ *
+ * @param array $allowed List of allowed namespaces/directives
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return array
+ */
+ public static function getAllowedDirectivesForForm($allowed, $schema = null)
+ {
if (!$schema) {
$schema = HTMLPurifier_ConfigSchema::instance();
}
if ($allowed !== true) {
- if (is_string($allowed)) $allowed = array($allowed);
- $allowed_ns = array();
- $allowed_directives = array();
- $blacklisted_directives = array();
- foreach ($allowed as $ns_or_directive) {
- if (strpos($ns_or_directive, '.') !== false) {
- // directive
- if ($ns_or_directive[0] == '-') {
- $blacklisted_directives[substr($ns_or_directive, 1)] = true;
- } else {
- $allowed_directives[$ns_or_directive] = true;
- }
- } else {
- // namespace
- $allowed_ns[$ns_or_directive] = true;
- }
- }
+ if (is_string($allowed)) {
+ $allowed = array($allowed);
+ }
+ $allowed_ns = array();
+ $allowed_directives = array();
+ $blacklisted_directives = array();
+ foreach ($allowed as $ns_or_directive) {
+ if (strpos($ns_or_directive, '.') !== false) {
+ // directive
+ if ($ns_or_directive[0] == '-') {
+ $blacklisted_directives[substr($ns_or_directive, 1)] = true;
+ } else {
+ $allowed_directives[$ns_or_directive] = true;
+ }
+ } else {
+ // namespace
+ $allowed_ns[$ns_or_directive] = true;
+ }
+ }
}
$ret = array();
foreach ($schema->info as $key => $def) {
list($ns, $directive) = explode('.', $key, 2);
if ($allowed !== true) {
- if (isset($blacklisted_directives["$ns.$directive"])) continue;
- if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) continue;
+ if (isset($blacklisted_directives["$ns.$directive"])) {
+ continue;
+ }
+ if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) {
+ continue;
+ }
+ }
+ if (isset($def->isAlias)) {
+ continue;
+ }
+ if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') {
+ continue;
}
- if (isset($def->isAlias)) continue;
- if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') continue;
$ret[] = array($ns, $directive);
}
return $ret;
@@ -461,13 +747,17 @@ class HTMLPurifier_Config
/**
* Loads configuration values from $_GET/$_POST that were posted
* via ConfigForm
- * @param $array $_GET or $_POST array to import
- * @param $index Index/name that the config variables are in
- * @param $allowed List of allowed namespaces/directives
- * @param $mq_fix Boolean whether or not to enable magic quotes fix
- * @param $schema Instance of HTMLPurifier_ConfigSchema to use, if not global copy
- */
- public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) {
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return mixed
+ */
+ public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
+ {
$ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $schema);
$config = HTMLPurifier_Config::create($ret, $schema);
return $config;
@@ -475,9 +765,14 @@ class HTMLPurifier_Config
/**
* Merges in configuration values from $_GET/$_POST to object. NOT STATIC.
- * @note Same parameters as loadArrayFromForm
- */
- public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true) {
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ */
+ public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true)
+ {
$ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $this->def);
$this->loadArray($ret);
}
@@ -485,9 +780,20 @@ class HTMLPurifier_Config
/**
* Prepares an array from a form into something usable for the more
* strict parts of HTMLPurifier_Config
- */
- public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) {
- if ($index !== false) $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return array
+ */
+ public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
+ {
+ if ($index !== false) {
+ $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
+ }
$mq = $mq_fix && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();
$allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema);
@@ -499,7 +805,9 @@ class HTMLPurifier_Config
$ret[$ns][$directive] = null;
continue;
}
- if (!isset($array[$skey])) continue;
+ if (!isset($array[$skey])) {
+ continue;
+ }
$value = $mq ? stripslashes($array[$skey]) : $array[$skey];
$ret[$ns][$directive] = $value;
}
@@ -508,19 +816,27 @@ class HTMLPurifier_Config
/**
* Loads configuration values from an ini file
- * @param $filename Name of ini file
+ *
+ * @param string $filename Name of ini file
*/
- public function loadIni($filename) {
- if ($this->isFinalized('Cannot load directives after finalization')) return;
+ public function loadIni($filename)
+ {
+ if ($this->isFinalized('Cannot load directives after finalization')) {
+ return;
+ }
$array = parse_ini_file($filename, true);
$this->loadArray($array);
}
/**
* Checks whether or not the configuration object is finalized.
- * @param $error String error message, or false for no error
+ *
+ * @param string|bool $error String error message, or false for no error
+ *
+ * @return bool
*/
- public function isFinalized($error = false) {
+ public function isFinalized($error = false)
+ {
if ($this->finalized && $error) {
$this->triggerError($error, E_USER_ERROR);
}
@@ -531,7 +847,8 @@ class HTMLPurifier_Config
* Finalizes configuration only if auto finalize is on and not
* already finalized
*/
- public function autoFinalize() {
+ public function autoFinalize()
+ {
if ($this->autoFinalize) {
$this->finalize();
} else {
@@ -542,24 +859,35 @@ class HTMLPurifier_Config
/**
* Finalizes a configuration object, prohibiting further change
*/
- public function finalize() {
+ public function finalize()
+ {
$this->finalized = true;
- unset($this->parser);
+ $this->parser = null;
}
/**
* Produces a nicely formatted error message by supplying the
- * stack frame information from two levels up and OUTSIDE of
- * HTMLPurifier_Config.
+ * stack frame information OUTSIDE of HTMLPurifier_Config.
+ *
+ * @param string $msg An error message
+ * @param int $no An error number
*/
- protected function triggerError($msg, $no) {
+ protected function triggerError($msg, $no)
+ {
// determine previous stack frame
- $backtrace = debug_backtrace();
- if ($this->chatty && isset($backtrace[1])) {
- $frame = $backtrace[1];
- $extra = " on line {$frame['line']} in file {$frame['file']}";
- } else {
- $extra = '';
+ $extra = '';
+ if ($this->chatty) {
+ $trace = debug_backtrace();
+ // zip(tail(trace), trace) -- but PHP is not Haskell har har
+ for ($i = 0, $c = count($trace); $i < $c - 1; $i++) {
+ // XXX this is not correct on some versions of HTML Purifier
+ if ($trace[$i + 1]['class'] === 'HTMLPurifier_Config') {
+ continue;
+ }
+ $frame = $trace[$i];
+ $extra = " invoked on line {$frame['line']} in file {$frame['file']}";
+ break;
+ }
}
trigger_error($msg . $extra, $no);
}
@@ -567,8 +895,11 @@ class HTMLPurifier_Config
/**
* Returns a serialized form of the configuration object that can
* be reconstituted.
+ *
+ * @return string
*/
- public function serialize() {
+ public function serialize()
+ {
$this->getDefinition('HTML');
$this->getDefinition('CSS');
$this->getDefinition('URI');
diff --git a/library/HTMLPurifier/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema.php
index 67be5c71f..bfbb0f92f 100644
--- a/library/HTMLPurifier/ConfigSchema.php
+++ b/library/HTMLPurifier/ConfigSchema.php
@@ -3,21 +3,24 @@
/**
* Configuration definition, defines directives and their defaults.
*/
-class HTMLPurifier_ConfigSchema {
-
+class HTMLPurifier_ConfigSchema
+{
/**
* Defaults of the directives and namespaces.
+ * @type array
* @note This shares the exact same structure as HTMLPurifier_Config::$conf
*/
public $defaults = array();
/**
* The default property list. Do not edit this property list.
+ * @type array
*/
public $defaultPlist;
/**
- * Definition of the directives. The structure of this is:
+ * Definition of the directives.
+ * The structure of this is:
*
* array(
* 'Namespace' => array(
@@ -44,29 +47,43 @@ class HTMLPurifier_ConfigSchema {
* This class is friendly with HTMLPurifier_Config. If you need introspection
* about the schema, you're better of using the ConfigSchema_Interchange,
* which uses more memory but has much richer information.
+ * @type array
*/
public $info = array();
/**
* Application-wide singleton
+ * @type HTMLPurifier_ConfigSchema
*/
- static protected $singleton;
+ protected static $singleton;
- public function __construct() {
+ public function __construct()
+ {
$this->defaultPlist = new HTMLPurifier_PropertyList();
}
/**
* Unserializes the default ConfigSchema.
+ * @return HTMLPurifier_ConfigSchema
*/
- public static function makeFromSerial() {
- return unserialize(file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser'));
+ public static function makeFromSerial()
+ {
+ $contents = file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser');
+ $r = unserialize($contents);
+ if (!$r) {
+ $hash = sha1($contents);
+ trigger_error("Unserialization of configuration schema failed, sha1 of file was $hash", E_USER_ERROR);
+ }
+ return $r;
}
/**
* Retrieves an instance of the application-wide configuration definition.
+ * @param HTMLPurifier_ConfigSchema $prototype
+ * @return HTMLPurifier_ConfigSchema
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
if ($prototype !== null) {
HTMLPurifier_ConfigSchema::$singleton = $prototype;
} elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) {
@@ -80,17 +97,19 @@ class HTMLPurifier_ConfigSchema {
* @warning Will fail of directive's namespace is defined.
* @warning This method's signature is slightly different from the legacy
* define() static method! Beware!
- * @param $namespace Namespace the directive is in
- * @param $name Key of directive
- * @param $default Default value of directive
- * @param $type Allowed type of the directive. See
+ * @param string $key Name of directive
+ * @param mixed $default Default value of directive
+ * @param string $type Allowed type of the directive. See
* HTMLPurifier_DirectiveDef::$type for allowed values
- * @param $allow_null Whether or not to allow null values
+ * @param bool $allow_null Whether or not to allow null values
*/
- public function add($key, $default, $type, $allow_null) {
+ public function add($key, $default, $type, $allow_null)
+ {
$obj = new stdclass();
$obj->type = is_int($type) ? $type : HTMLPurifier_VarParser::$types[$type];
- if ($allow_null) $obj->allow_null = true;
+ if ($allow_null) {
+ $obj->allow_null = true;
+ }
$this->info[$key] = $obj;
$this->defaults[$key] = $default;
$this->defaultPlist->set($key, $default);
@@ -101,11 +120,11 @@ class HTMLPurifier_ConfigSchema {
*
* Directive value aliases are convenient for developers because it lets
* them set a directive to several values and get the same result.
- * @param $namespace Directive's namespace
- * @param $name Name of Directive
- * @param $aliases Hash of aliased values to the real alias
+ * @param string $key Name of Directive
+ * @param array $aliases Hash of aliased values to the real alias
*/
- public function addValueAliases($key, $aliases) {
+ public function addValueAliases($key, $aliases)
+ {
if (!isset($this->info[$key]->aliases)) {
$this->info[$key]->aliases = array();
}
@@ -118,22 +137,21 @@ class HTMLPurifier_ConfigSchema {
* Defines a set of allowed values for a directive.
* @warning This is slightly different from the corresponding static
* method definition.
- * @param $namespace Namespace of directive
- * @param $name Name of directive
- * @param $allowed Lookup array of allowed values
+ * @param string $key Name of directive
+ * @param array $allowed Lookup array of allowed values
*/
- public function addAllowedValues($key, $allowed) {
+ public function addAllowedValues($key, $allowed)
+ {
$this->info[$key]->allowed = $allowed;
}
/**
* Defines a directive alias for backwards compatibility
- * @param $namespace
- * @param $name Directive that will be aliased
- * @param $new_namespace
- * @param $new_name Directive that the alias will be to
+ * @param string $key Directive that will be aliased
+ * @param string $new_key Directive that the alias will be to
*/
- public function addAlias($key, $new_key) {
+ public function addAlias($key, $new_key)
+ {
$obj = new stdclass;
$obj->key = $new_key;
$obj->isAlias = true;
@@ -143,7 +161,8 @@ class HTMLPurifier_ConfigSchema {
/**
* Replaces any stdclass that only has the type property with type integer.
*/
- public function postProcess() {
+ public function postProcess()
+ {
foreach ($this->info as $key => $v) {
if (count((array) $v) == 1) {
$this->info[$key] = $v->type;
@@ -152,7 +171,6 @@ class HTMLPurifier_ConfigSchema {
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
index c05668a70..d5906cd46 100644
--- a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
+++ b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
@@ -7,7 +7,12 @@
class HTMLPurifier_ConfigSchema_Builder_ConfigSchema
{
- public function build($interchange) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @return HTMLPurifier_ConfigSchema
+ */
+ public function build($interchange)
+ {
$schema = new HTMLPurifier_ConfigSchema();
foreach ($interchange->directives as $d) {
$schema->add(
@@ -38,7 +43,6 @@ class HTMLPurifier_ConfigSchema_Builder_ConfigSchema
$schema->postProcess();
return $schema;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Builder/Xml.php b/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
index 244561a37..5fa56f7dd 100644
--- a/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
+++ b/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
@@ -7,10 +7,21 @@
class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
{
+ /**
+ * @type HTMLPurifier_ConfigSchema_Interchange
+ */
protected $interchange;
+
+ /**
+ * @type string
+ */
private $namespace;
- protected function writeHTMLDiv($html) {
+ /**
+ * @param string $html
+ */
+ protected function writeHTMLDiv($html)
+ {
$this->startElement('div');
$purifier = HTMLPurifier::getInstance();
@@ -21,12 +32,23 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->endElement(); // div
}
- protected function export($var) {
- if ($var === array()) return 'array()';
+ /**
+ * @param mixed $var
+ * @return string
+ */
+ protected function export($var)
+ {
+ if ($var === array()) {
+ return 'array()';
+ }
return var_export($var, true);
}
- public function build($interchange) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ */
+ public function build($interchange)
+ {
// global access, only use as last resort
$this->interchange = $interchange;
@@ -39,19 +61,26 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->buildDirective($directive);
}
- if ($this->namespace) $this->endElement(); // namespace
+ if ($this->namespace) {
+ $this->endElement();
+ } // namespace
$this->endElement(); // configdoc
$this->flush();
}
- public function buildDirective($directive) {
-
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
+ */
+ public function buildDirective($directive)
+ {
// Kludge, although I suppose having a notion of a "root namespace"
// certainly makes things look nicer when documentation is built.
// Depends on things being sorted.
if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) {
- if ($this->namespace) $this->endElement(); // namespace
+ if ($this->namespace) {
+ $this->endElement();
+ } // namespace
$this->namespace = $directive->id->getRootNamespace();
$this->startElement('namespace');
$this->writeAttribute('id', $this->namespace);
@@ -64,43 +93,52 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->writeElement('name', $directive->id->getDirective());
$this->startElement('aliases');
- foreach ($directive->aliases as $alias) $this->writeElement('alias', $alias->toString());
+ foreach ($directive->aliases as $alias) {
+ $this->writeElement('alias', $alias->toString());
+ }
$this->endElement(); // aliases
$this->startElement('constraints');
- if ($directive->version) $this->writeElement('version', $directive->version);
- $this->startElement('type');
- if ($directive->typeAllowsNull) $this->writeAttribute('allow-null', 'yes');
- $this->text($directive->type);
- $this->endElement(); // type
- if ($directive->allowed) {
- $this->startElement('allowed');
- foreach ($directive->allowed as $value => $x) $this->writeElement('value', $value);
- $this->endElement(); // allowed
+ if ($directive->version) {
+ $this->writeElement('version', $directive->version);
+ }
+ $this->startElement('type');
+ if ($directive->typeAllowsNull) {
+ $this->writeAttribute('allow-null', 'yes');
+ }
+ $this->text($directive->type);
+ $this->endElement(); // type
+ if ($directive->allowed) {
+ $this->startElement('allowed');
+ foreach ($directive->allowed as $value => $x) {
+ $this->writeElement('value', $value);
}
- $this->writeElement('default', $this->export($directive->default));
- $this->writeAttribute('xml:space', 'preserve');
- if ($directive->external) {
- $this->startElement('external');
- foreach ($directive->external as $project) $this->writeElement('project', $project);
- $this->endElement();
+ $this->endElement(); // allowed
+ }
+ $this->writeElement('default', $this->export($directive->default));
+ $this->writeAttribute('xml:space', 'preserve');
+ if ($directive->external) {
+ $this->startElement('external');
+ foreach ($directive->external as $project) {
+ $this->writeElement('project', $project);
}
+ $this->endElement();
+ }
$this->endElement(); // constraints
if ($directive->deprecatedVersion) {
$this->startElement('deprecated');
- $this->writeElement('version', $directive->deprecatedVersion);
- $this->writeElement('use', $directive->deprecatedUse->toString());
+ $this->writeElement('version', $directive->deprecatedVersion);
+ $this->writeElement('use', $directive->deprecatedUse->toString());
$this->endElement(); // deprecated
}
$this->startElement('description');
- $this->writeHTMLDiv($directive->description);
+ $this->writeHTMLDiv($directive->description);
$this->endElement(); // description
$this->endElement(); // directive
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange.php b/library/HTMLPurifier/ConfigSchema/Interchange.php
index 91a5aa730..0e08ae8fe 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange.php
@@ -10,18 +10,23 @@ class HTMLPurifier_ConfigSchema_Interchange
/**
* Name of the application this schema is describing.
+ * @type string
*/
public $name;
/**
* Array of Directive ID => array(directive info)
+ * @type HTMLPurifier_ConfigSchema_Interchange_Directive[]
*/
public $directives = array();
/**
* Adds a directive array to $directives
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- public function addDirective($directive) {
+ public function addDirective($directive)
+ {
if (isset($this->directives[$i = $directive->id->toString()])) {
throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'");
}
@@ -32,11 +37,11 @@ class HTMLPurifier_ConfigSchema_Interchange
* Convenience function to perform standard validation. Throws exception
* on failed validation.
*/
- public function validate() {
+ public function validate()
+ {
$validator = new HTMLPurifier_ConfigSchema_Validator();
return $validator->validate($this);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php b/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
index ac8be0d97..127a39a67 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
@@ -7,71 +7,83 @@ class HTMLPurifier_ConfigSchema_Interchange_Directive
{
/**
- * ID of directive, instance of HTMLPurifier_ConfigSchema_Interchange_Id.
+ * ID of directive.
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id
*/
public $id;
/**
- * String type, e.g. 'integer' or 'istring'.
+ * Type, e.g. 'integer' or 'istring'.
+ * @type string
*/
public $type;
/**
* Default value, e.g. 3 or 'DefaultVal'.
+ * @type mixed
*/
public $default;
/**
* HTML description.
+ * @type string
*/
public $description;
/**
- * Boolean whether or not null is allowed as a value.
+ * Whether or not null is allowed as a value.
+ * @type bool
*/
public $typeAllowsNull = false;
/**
- * Lookup table of allowed scalar values, e.g. array('allowed' => true).
+ * Lookup table of allowed scalar values.
+ * e.g. array('allowed' => true).
* Null if all values are allowed.
+ * @type array
*/
public $allowed;
/**
- * List of aliases for the directive,
+ * List of aliases for the directive.
* e.g. array(new HTMLPurifier_ConfigSchema_Interchange_Id('Ns', 'Dir'))).
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id[]
*/
public $aliases = array();
/**
* Hash of value aliases, e.g. array('alt' => 'real'). Null if value
* aliasing is disabled (necessary for non-scalar types).
+ * @type array
*/
public $valueAliases;
/**
* Version of HTML Purifier the directive was introduced, e.g. '1.3.1'.
* Null if the directive has always existed.
+ * @type string
*/
public $version;
/**
- * ID of directive that supercedes this old directive, is an instance
- * of HTMLPurifier_ConfigSchema_Interchange_Id. Null if not deprecated.
+ * ID of directive that supercedes this old directive.
+ * Null if not deprecated.
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id
*/
public $deprecatedUse;
/**
* Version of HTML Purifier this directive was deprecated. Null if not
* deprecated.
+ * @type string
*/
public $deprecatedVersion;
/**
* List of external projects this directive depends on, e.g. array('CSSTidy').
+ * @type array
*/
public $external = array();
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange/Id.php b/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
index b9b3c6f5c..126f09d95 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
@@ -6,32 +6,53 @@
class HTMLPurifier_ConfigSchema_Interchange_Id
{
+ /**
+ * @type string
+ */
public $key;
- public function __construct($key) {
+ /**
+ * @param string $key
+ */
+ public function __construct($key)
+ {
$this->key = $key;
}
/**
+ * @return string
* @warning This is NOT magic, to ensure that people don't abuse SPL and
* cause problems for PHP 5.0 support.
*/
- public function toString() {
+ public function toString()
+ {
return $this->key;
}
- public function getRootNamespace() {
+ /**
+ * @return string
+ */
+ public function getRootNamespace()
+ {
return substr($this->key, 0, strpos($this->key, "."));
}
- public function getDirective() {
+ /**
+ * @return string
+ */
+ public function getDirective()
+ {
return substr($this->key, strpos($this->key, ".") + 1);
}
- public static function make($id) {
+ /**
+ * @param string $id
+ * @return HTMLPurifier_ConfigSchema_Interchange_Id
+ */
+ public static function make($id)
+ {
return new HTMLPurifier_ConfigSchema_Interchange_Id($id);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php b/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
index 785b72ce8..655e6dd1b 100644
--- a/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
+++ b/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
@@ -5,21 +5,39 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
/**
* Used for processing DEFAULT, nothing else.
+ * @type HTMLPurifier_VarParser
*/
protected $varParser;
- public function __construct($varParser = null) {
+ /**
+ * @param HTMLPurifier_VarParser $varParser
+ */
+ public function __construct($varParser = null)
+ {
$this->varParser = $varParser ? $varParser : new HTMLPurifier_VarParser_Native();
}
- public static function buildFromDirectory($dir = null) {
- $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
+ /**
+ * @param string $dir
+ * @return HTMLPurifier_ConfigSchema_Interchange
+ */
+ public static function buildFromDirectory($dir = null)
+ {
+ $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
$interchange = new HTMLPurifier_ConfigSchema_Interchange();
return $builder->buildDir($interchange, $dir);
}
- public function buildDir($interchange, $dir = null) {
- if (!$dir) $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema';
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param string $dir
+ * @return HTMLPurifier_ConfigSchema_Interchange
+ */
+ public function buildDir($interchange, $dir = null)
+ {
+ if (!$dir) {
+ $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema';
+ }
if (file_exists($dir . '/info.ini')) {
$info = parse_ini_file($dir . '/info.ini');
$interchange->name = $info['name'];
@@ -39,24 +57,30 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
foreach ($files as $file) {
$this->buildFile($interchange, $dir . '/' . $file);
}
-
return $interchange;
}
- public function buildFile($interchange, $file) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param string $file
+ */
+ public function buildFile($interchange, $file)
+ {
$parser = new HTMLPurifier_StringHashParser();
$this->build(
$interchange,
- new HTMLPurifier_StringHash( $parser->parseFile($file) )
+ new HTMLPurifier_StringHash($parser->parseFile($file))
);
}
/**
* Builds an interchange object based on a hash.
- * @param $interchange HTMLPurifier_ConfigSchema_Interchange object to build
- * @param $hash HTMLPurifier_ConfigSchema_StringHash source data
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange HTMLPurifier_ConfigSchema_Interchange object to build
+ * @param HTMLPurifier_StringHash $hash source data
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- public function build($interchange, $hash) {
+ public function build($interchange, $hash)
+ {
if (!$hash instanceof HTMLPurifier_StringHash) {
$hash = new HTMLPurifier_StringHash($hash);
}
@@ -75,7 +99,13 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
$this->_findUnused($hash);
}
- public function buildDirective($interchange, $hash) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param HTMLPurifier_StringHash $hash
+ * @throws HTMLPurifier_ConfigSchema_Exception
+ */
+ public function buildDirective($interchange, $hash)
+ {
$directive = new HTMLPurifier_ConfigSchema_Interchange_Directive();
// These are required elements:
@@ -84,7 +114,9 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
if (isset($hash['TYPE'])) {
$type = explode('/', $hash->offsetGet('TYPE'));
- if (isset($type[1])) $directive->typeAllowsNull = true;
+ if (isset($type[1])) {
+ $directive->typeAllowsNull = true;
+ }
$directive->type = $type[0];
} else {
throw new HTMLPurifier_ConfigSchema_Exception("TYPE in directive hash '$id' not defined");
@@ -92,7 +124,11 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
if (isset($hash['DEFAULT'])) {
try {
- $directive->default = $this->varParser->parse($hash->offsetGet('DEFAULT'), $directive->type, $directive->typeAllowsNull);
+ $directive->default = $this->varParser->parse(
+ $hash->offsetGet('DEFAULT'),
+ $directive->type,
+ $directive->typeAllowsNull
+ );
} catch (HTMLPurifier_VarParserException $e) {
throw new HTMLPurifier_ConfigSchema_Exception($e->getMessage() . " in DEFAULT in directive hash '$id'");
}
@@ -139,34 +175,45 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
/**
* Evaluates an array PHP code string without array() wrapper
+ * @param string $contents
*/
- protected function evalArray($contents) {
- return eval('return array('. $contents .');');
+ protected function evalArray($contents)
+ {
+ return eval('return array(' . $contents . ');');
}
/**
* Converts an array list into a lookup array.
+ * @param array $array
+ * @return array
*/
- protected function lookup($array) {
+ protected function lookup($array)
+ {
$ret = array();
- foreach ($array as $val) $ret[$val] = true;
+ foreach ($array as $val) {
+ $ret[$val] = true;
+ }
return $ret;
}
/**
* Convenience function that creates an HTMLPurifier_ConfigSchema_Interchange_Id
* object based on a string Id.
+ * @param string $id
+ * @return HTMLPurifier_ConfigSchema_Interchange_Id
*/
- protected function id($id) {
+ protected function id($id)
+ {
return HTMLPurifier_ConfigSchema_Interchange_Id::make($id);
}
/**
* Triggers errors for any unused keys passed in the hash; such keys
* may indicate typos, missing values, etc.
- * @param $hash Instance of ConfigSchema_StringHash to check.
+ * @param HTMLPurifier_StringHash $hash Hash to check.
*/
- protected function _findUnused($hash) {
+ protected function _findUnused($hash)
+ {
$accessed = $hash->getAccessed();
foreach ($hash as $k => $v) {
if (!isset($accessed[$k])) {
@@ -174,7 +221,6 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Validator.php b/library/HTMLPurifier/ConfigSchema/Validator.php
index f374f6a02..fb3127788 100644
--- a/library/HTMLPurifier/ConfigSchema/Validator.php
+++ b/library/HTMLPurifier/ConfigSchema/Validator.php
@@ -12,36 +12,48 @@ class HTMLPurifier_ConfigSchema_Validator
{
/**
- * Easy to access global objects.
+ * @type HTMLPurifier_ConfigSchema_Interchange
*/
- protected $interchange, $aliases;
+ protected $interchange;
+
+ /**
+ * @type array
+ */
+ protected $aliases;
/**
* Context-stack to provide easy to read error messages.
+ * @type array
*/
protected $context = array();
/**
- * HTMLPurifier_VarParser to test default's type.
+ * to test default's type.
+ * @type HTMLPurifier_VarParser
*/
protected $parser;
- public function __construct() {
+ public function __construct()
+ {
$this->parser = new HTMLPurifier_VarParser();
}
/**
- * Validates a fully-formed interchange object. Throws an
- * HTMLPurifier_ConfigSchema_Exception if there's a problem.
+ * Validates a fully-formed interchange object.
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @return bool
*/
- public function validate($interchange) {
+ public function validate($interchange)
+ {
$this->interchange = $interchange;
$this->aliases = array();
// PHP is a bit lax with integer <=> string conversions in
// arrays, so we don't use the identical !== comparison
foreach ($interchange->directives as $i => $directive) {
$id = $directive->id->toString();
- if ($i != $id) $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'");
+ if ($i != $id) {
+ $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'");
+ }
$this->validateDirective($directive);
}
return true;
@@ -49,8 +61,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Validates a HTMLPurifier_ConfigSchema_Interchange_Id object.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Id $id
*/
- public function validateId($id) {
+ public function validateId($id)
+ {
$id_string = $id->toString();
$this->context[] = "id '$id_string'";
if (!$id instanceof HTMLPurifier_ConfigSchema_Interchange_Id) {
@@ -67,8 +81,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Validates a HTMLPurifier_ConfigSchema_Interchange_Directive object.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirective($d) {
+ public function validateDirective($d)
+ {
$id = $d->id->toString();
$this->context[] = "directive '$id'";
$this->validateId($d->id);
@@ -108,9 +124,13 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $allowed member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveAllowed($d) {
- if (is_null($d->allowed)) return;
+ public function validateDirectiveAllowed($d)
+ {
+ if (is_null($d->allowed)) {
+ return;
+ }
$this->with($d, 'allowed')
->assertNotEmpty()
->assertIsLookup(); // handled by InterchangeBuilder
@@ -119,7 +139,9 @@ class HTMLPurifier_ConfigSchema_Validator
}
$this->context[] = 'allowed';
foreach ($d->allowed as $val => $x) {
- if (!is_string($val)) $this->error("value $val", 'must be a string');
+ if (!is_string($val)) {
+ $this->error("value $val", 'must be a string');
+ }
}
array_pop($this->context);
}
@@ -127,15 +149,23 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $valueAliases member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveValueAliases($d) {
- if (is_null($d->valueAliases)) return;
+ public function validateDirectiveValueAliases($d)
+ {
+ if (is_null($d->valueAliases)) {
+ return;
+ }
$this->with($d, 'valueAliases')
->assertIsArray(); // handled by InterchangeBuilder
$this->context[] = 'valueAliases';
foreach ($d->valueAliases as $alias => $real) {
- if (!is_string($alias)) $this->error("alias $alias", 'must be a string');
- if (!is_string($real)) $this->error("alias target $real from alias '$alias'", 'must be a string');
+ if (!is_string($alias)) {
+ $this->error("alias $alias", 'must be a string');
+ }
+ if (!is_string($real)) {
+ $this->error("alias target $real from alias '$alias'", 'must be a string');
+ }
if ($alias === $real) {
$this->error("alias '$alias'", "must not be an alias to itself");
}
@@ -155,8 +185,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $aliases member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveAliases($d) {
+ public function validateDirectiveAliases($d)
+ {
$this->with($d, 'aliases')
->assertIsArray(); // handled by InterchangeBuilder
$this->context[] = 'aliases';
@@ -180,27 +212,37 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Convenience function for generating HTMLPurifier_ConfigSchema_ValidatorAtom
* for validating simple member variables of objects.
+ * @param $obj
+ * @param $member
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
*/
- protected function with($obj, $member) {
+ protected function with($obj, $member)
+ {
return new HTMLPurifier_ConfigSchema_ValidatorAtom($this->getFormattedContext(), $obj, $member);
}
/**
* Emits an error, providing helpful context.
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- protected function error($target, $msg) {
- if ($target !== false) $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext();
- else $prefix = ucfirst($this->getFormattedContext());
+ protected function error($target, $msg)
+ {
+ if ($target !== false) {
+ $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext();
+ } else {
+ $prefix = ucfirst($this->getFormattedContext());
+ }
throw new HTMLPurifier_ConfigSchema_Exception(trim($prefix . ' ' . $msg));
}
/**
* Returns a formatted context string.
+ * @return string
*/
- protected function getFormattedContext() {
+ protected function getFormattedContext()
+ {
return implode(' in ', array_reverse($this->context));
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php b/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
index b95aea18c..c9aa3644a 100644
--- a/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
+++ b/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
@@ -8,59 +8,123 @@
*/
class HTMLPurifier_ConfigSchema_ValidatorAtom
{
+ /**
+ * @type string
+ */
+ protected $context;
- protected $context, $obj, $member, $contents;
+ /**
+ * @type object
+ */
+ protected $obj;
- public function __construct($context, $obj, $member) {
- $this->context = $context;
- $this->obj = $obj;
- $this->member = $member;
- $this->contents =& $obj->$member;
+ /**
+ * @type string
+ */
+ protected $member;
+
+ /**
+ * @type mixed
+ */
+ protected $contents;
+
+ public function __construct($context, $obj, $member)
+ {
+ $this->context = $context;
+ $this->obj = $obj;
+ $this->member = $member;
+ $this->contents =& $obj->$member;
}
- public function assertIsString() {
- if (!is_string($this->contents)) $this->error('must be a string');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsString()
+ {
+ if (!is_string($this->contents)) {
+ $this->error('must be a string');
+ }
return $this;
}
- public function assertIsBool() {
- if (!is_bool($this->contents)) $this->error('must be a boolean');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsBool()
+ {
+ if (!is_bool($this->contents)) {
+ $this->error('must be a boolean');
+ }
return $this;
}
- public function assertIsArray() {
- if (!is_array($this->contents)) $this->error('must be an array');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsArray()
+ {
+ if (!is_array($this->contents)) {
+ $this->error('must be an array');
+ }
return $this;
}
- public function assertNotNull() {
- if ($this->contents === null) $this->error('must not be null');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertNotNull()
+ {
+ if ($this->contents === null) {
+ $this->error('must not be null');
+ }
return $this;
}
- public function assertAlnum() {
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertAlnum()
+ {
$this->assertIsString();
- if (!ctype_alnum($this->contents)) $this->error('must be alphanumeric');
+ if (!ctype_alnum($this->contents)) {
+ $this->error('must be alphanumeric');
+ }
return $this;
}
- public function assertNotEmpty() {
- if (empty($this->contents)) $this->error('must not be empty');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertNotEmpty()
+ {
+ if (empty($this->contents)) {
+ $this->error('must not be empty');
+ }
return $this;
}
- public function assertIsLookup() {
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsLookup()
+ {
$this->assertIsArray();
foreach ($this->contents as $v) {
- if ($v !== true) $this->error('must be a lookup array');
+ if ($v !== true) {
+ $this->error('must be a lookup array');
+ }
}
return $this;
}
- protected function error($msg) {
+ /**
+ * @param string $msg
+ * @throws HTMLPurifier_ConfigSchema_Exception
+ */
+ protected function error($msg)
+ {
throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema.ser b/library/HTMLPurifier/ConfigSchema/schema.ser
index 22b8d54a5..22ea32185 100644
--- a/library/HTMLPurifier/ConfigSchema/schema.ser
+++ b/library/HTMLPurifier/ConfigSchema/schema.ser
Binary files differ
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
new file mode 100644
index 000000000..3fd465406
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
@@ -0,0 +1,12 @@
+CSS.AllowedFonts
+TYPE: lookup/null
+VERSION: 4.3.0
+DEFAULT: NULL
+--DESCRIPTION--
+<p>
+ Allows you to manually specify a set of allowed fonts. If
+ <code>NULL</code>, all fonts are allowed. This directive
+ affects generic names (serif, sans-serif, monospace, cursive,
+ fantasy) as well as specific font families.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
new file mode 100644
index 000000000..f1f5c5f12
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
@@ -0,0 +1,13 @@
+CSS.ForbiddenProperties
+TYPE: lookup
+VERSION: 4.2.0
+DEFAULT: array()
+--DESCRIPTION--
+<p>
+ This is the logical inverse of %CSS.AllowedProperties, and it will
+ override that directive or any other directive. If possible,
+ %CSS.AllowedProperties is recommended over this directive,
+ because it can sometimes be difficult to tell whether or not you've
+ forbidden all of the CSS properties you truly would like to disallow.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
new file mode 100644
index 000000000..e733a61e8
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
@@ -0,0 +1,9 @@
+CSS.Trusted
+TYPE: bool
+VERSION: 4.2.1
+DEFAULT: false
+--DESCRIPTION--
+Indicates whether or not the user's CSS input is trusted or not. If the
+input is trusted, a more expansive set of allowed properties. See
+also %HTML.Trusted.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt b/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
new file mode 100644
index 000000000..b2b83d9ab
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
@@ -0,0 +1,11 @@
+Cache.SerializerPermissions
+TYPE: int
+VERSION: 4.3.0
+DEFAULT: 0755
+--DESCRIPTION--
+
+<p>
+ Directory permissions of the files and directories created inside
+ the DefinitionCache/Serializer or other custom serializer path.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
new file mode 100644
index 000000000..2c910cc7d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
@@ -0,0 +1,16 @@
+Core.AllowHostnameUnderscore
+TYPE: bool
+VERSION: 4.6.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ By RFC 1123, underscores are not permitted in host names.
+ (This is in contrast to the specification for DNS, RFC
+ 2181, which allows underscores.)
+ However, most browsers do the right thing when faced with
+ an underscore in the host name, and so some poorly written
+ websites are written with the expectation this should work.
+ Setting this parameter to true relaxes our allowed character
+ check so that underscores are permitted.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
index 08b381d34..c572c14ec 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
@@ -24,5 +24,6 @@ array (
--DESCRIPTION--
Lookup array of color names to six digit hexadecimal number corresponding
-to color, with preceding hash mark. Used when parsing colors.
+to color, with preceding hash mark. Used when parsing colors. The lookup
+is done in a case-insensitive manner.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
new file mode 100644
index 000000000..1cd4c2c96
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
@@ -0,0 +1,14 @@
+Core.DisableExcludes
+TYPE: bool
+DEFAULT: false
+VERSION: 4.5.0
+--DESCRIPTION--
+<p>
+ This directive disables SGML-style exclusions, e.g. the exclusion of
+ <code>&lt;object&gt;</code> in any descendant of a
+ <code>&lt;pre&gt;</code> tag. Disabling excludes will allow some
+ invalid documents to pass through HTML Purifier, but HTML Purifier
+ will also be less likely to accidentally remove large documents during
+ processing.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
new file mode 100644
index 000000000..ce243c35d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
@@ -0,0 +1,9 @@
+Core.EnableIDNA
+TYPE: bool
+DEFAULT: false
+VERSION: 4.4.0
+--DESCRIPTION--
+Allows international domain names in URLs. This configuration option
+requires the PEAR Net_IDNA2 module to be installed. It operates by
+punycoding any internationalized host names for maximum portability.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
index 4d5b5055c..a3881be75 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
@@ -2,9 +2,11 @@ Core.EscapeInvalidChildren
TYPE: bool
DEFAULT: false
--DESCRIPTION--
-When true, a child is found that is not allowed in the context of the
+<p><strong>Warning:</strong> this configuration option is no longer does anything as of 4.6.0.</p>
+
+<p>When true, a child is found that is not allowed in the context of the
parent element will be transformed into text as if it were ASCII. When
false, that element and all internal tags will be dropped, though text will
be preserved. There is no option for dropping the element but preserving
-child nodes.
+child nodes.</p>
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
new file mode 100644
index 000000000..d77f5360d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
@@ -0,0 +1,11 @@
+Core.NormalizeNewlines
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: true
+--DESCRIPTION--
+<p>
+ Whether or not to normalize newlines to the operating
+ system default. When <code>false</code>, HTML Purifier
+ will attempt to preserve mixed newline files.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
new file mode 100644
index 000000000..3397d9f71
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
@@ -0,0 +1,11 @@
+Core.RemoveProcessingInstructions
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: false
+--DESCRIPTION--
+Instead of escaping processing instructions in the form <code>&lt;? ...
+?&gt;</code>, remove it out-right. This may be useful if the HTML
+you are validating contains XML processing instruction gunk, however,
+it can also be user-unfriendly for people attempting to post PHP
+snippets.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt b/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
index 7fa6536b2..321eaa2d8 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
@@ -4,6 +4,11 @@ VERSION: 3.1.0
DEFAULT: false
--DESCRIPTION--
<p>
+ <strong>Warning:</strong> Deprecated in favor of %HTML.SafeObject and
+ %Output.FlashCompat (turn both on to allow YouTube videos and other
+ Flash content).
+</p>
+<p>
This directive enables YouTube video embedding in HTML Purifier. Check
<a href="http://htmlpurifier.org/docs/enduser-youtube.html">this document
on embedding videos</a> for more information on what this filter does.
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
index 3e231d2d1..0b2c106da 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
@@ -5,11 +5,14 @@ DEFAULT: NULL
--DESCRIPTION--
<p>
- This is a convenience directive that rolls the functionality of
- %HTML.AllowedElements and %HTML.AllowedAttributes into one directive.
+ This is a preferred convenience directive that combines
+ %HTML.AllowedElements and %HTML.AllowedAttributes.
Specify elements and attributes that are allowed using:
- <code>element1[attr1|attr2],element2...</code>. You can also use
- newlines instead of commas to separate elements.
+ <code>element1[attr1|attr2],element2...</code>. For example,
+ if you would like to only allow paragraphs and links, specify
+ <code>a[href],p</code>. You can specify attributes that apply
+ to all elements using an asterisk, e.g. <code>*[lang]</code>.
+ You can also use newlines instead of commas to separate elements.
</p>
<p>
<strong>Warning</strong>:
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
new file mode 100644
index 000000000..140e21423
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
@@ -0,0 +1,10 @@
+HTML.AllowedComments
+TYPE: lookup
+VERSION: 4.4.0
+DEFAULT: array()
+--DESCRIPTION--
+A whitelist which indicates what explicit comment bodies should be
+allowed, modulo leading and trailing whitespace. See also %HTML.AllowedCommentsRegexp
+(these directives are union'ed together, so a comment is considered
+valid if any directive deems it valid.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
new file mode 100644
index 000000000..f22e977d4
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
@@ -0,0 +1,15 @@
+HTML.AllowedCommentsRegexp
+TYPE: string/null
+VERSION: 4.4.0
+DEFAULT: NULL
+--DESCRIPTION--
+A regexp, which if it matches the body of a comment, indicates that
+it should be allowed. Trailing and leading spaces are removed prior
+to running this regular expression.
+<strong>Warning:</strong> Make sure you specify
+correct anchor metacharacters <code>^regex$</code>, otherwise you may accept
+comments that you did not mean to! In particular, the regex <code>/foo|bar/</code>
+is probably not sufficiently strict, since it also allows <code>foobar</code>.
+See also %HTML.AllowedComments (these directives are union'ed together,
+so a comment is considered valid if any directive deems it valid.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
index 888d55819..1d3fa7907 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
@@ -4,12 +4,17 @@ VERSION: 1.3.0
DEFAULT: NULL
--DESCRIPTION--
<p>
- If HTML Purifier's tag set is unsatisfactory for your needs, you
- can overload it with your own list of tags to allow. Note that this
- method is subtractive: it does its job by taking away from HTML Purifier
- usual feature set, so you cannot add a tag that HTML Purifier never
- supported in the first place (like embed, form or head). If you
- change this, you probably also want to change %HTML.AllowedAttributes.
+ If HTML Purifier's tag set is unsatisfactory for your needs, you can
+ overload it with your own list of tags to allow. If you change
+ this, you probably also want to change %HTML.AllowedAttributes; see
+ also %HTML.Allowed which lets you set allowed elements and
+ attributes at the same time.
+</p>
+<p>
+ If you attempt to allow an element that HTML Purifier does not know
+ about, HTML Purifier will raise an error. You will need to manually
+ tell HTML Purifier about this element by using the
+ <a href="http://htmlpurifier.org/docs/enduser-customize.html">advanced customization features.</a>
</p>
<p>
<strong>Warning:</strong> If another directive conflicts with the
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
new file mode 100644
index 000000000..7878dc0bf
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
@@ -0,0 +1,11 @@
+HTML.FlashAllowFullScreen
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ Whether or not to permit embedded Flash content from
+ %HTML.SafeObject to expand to the full screen. Corresponds to
+ the <code>allowFullScreen</code> parameter.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
new file mode 100644
index 000000000..700b30924
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
@@ -0,0 +1,7 @@
+HTML.Nofollow
+TYPE: bool
+VERSION: 4.3.0
+DEFAULT: FALSE
+--DESCRIPTION--
+If enabled, nofollow rel attributes are added to all outgoing links.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
new file mode 100644
index 000000000..5eb6ec2b5
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
@@ -0,0 +1,13 @@
+HTML.SafeIframe
+TYPE: bool
+VERSION: 4.4.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ Whether or not to permit iframe tags in untrusted documents. This
+ directive must be accompanied by a whitelist of permitted iframes,
+ such as %URI.SafeIframeRegexp, otherwise it will fatally error.
+ This directive has no effect on strict doctypes, as iframes are not
+ valid.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
new file mode 100644
index 000000000..5ebc7a19d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
@@ -0,0 +1,10 @@
+HTML.SafeScripting
+TYPE: lookup
+VERSION: 4.5.0
+DEFAULT: array()
+--DESCRIPTION--
+<p>
+ Whether or not to permit script tags to external scripts in documents.
+ Inline scripting is not allowed, and the script must match an explicit whitelist.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
new file mode 100644
index 000000000..587a16778
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
@@ -0,0 +1,8 @@
+HTML.TargetBlank
+TYPE: bool
+VERSION: 4.4.0
+DEFAULT: FALSE
+--DESCRIPTION--
+If enabled, <code>target=blank</code> attributes are added to all outgoing links.
+(This includes links from an HTTPS version of a page to an HTTP version.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
index 89133b1a3..1db9237e9 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
@@ -5,4 +5,5 @@ DEFAULT: false
--DESCRIPTION--
Indicates whether or not the user input is trusted or not. If the input is
trusted, a more expansive set of allowed tags and attributes will be used.
+See also %CSS.Trusted.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt b/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
new file mode 100644
index 000000000..d6f0d9f29
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
@@ -0,0 +1,15 @@
+Output.FixInnerHTML
+TYPE: bool
+VERSION: 4.3.0
+DEFAULT: true
+--DESCRIPTION--
+<p>
+ If true, HTML Purifier will protect against Internet Explorer's
+ mishandling of the <code>innerHTML</code> attribute by appending
+ a space to any attribute that does not contain angled brackets, spaces
+ or quotes, but contains a backtick. This slightly changes the
+ semantics of any given attribute, so if this is unacceptable and
+ you do not use <code>innerHTML</code> on any of your pages, you can
+ turn this directive off.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
index ae3a913f2..666635a5f 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
@@ -12,6 +12,6 @@ array (
--DESCRIPTION--
Whitelist that defines the schemes that a URI is allowed to have. This
prevents XSS attacks from using pseudo-schemes like javascript or mocha.
-There is also support for the <code>data</code> URI scheme, but it is not
-enabled by default.
+There is also support for the <code>data</code> and <code>file</code>
+URI schemes, but they are not enabled by default.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
index 51e6ea91f..f891de499 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
@@ -1,12 +1,15 @@
URI.DisableResources
TYPE: bool
-VERSION: 1.3.0
+VERSION: 4.2.0
DEFAULT: false
--DESCRIPTION--
-
<p>
Disables embedding resources, essentially meaning no pictures. You can
still link to them though. See %URI.DisableExternalResources for why
this might be a good idea.
</p>
+<p>
+ <em>Note:</em> While this directive has been available since 1.3.0,
+ it didn't actually start doing anything until 4.2.0.
+</p>
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
index 0d00f62ea..1e17c1d46 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
@@ -11,7 +11,7 @@ DEFAULT: NULL
to check if a URI has passed through HTML Purifier with this line:
</p>
-<pre>$checksum === sha1($secret_key . ':' . $url)</pre>
+<pre>$checksum === hash_hmac("sha256", $url, $secret_key)</pre>
<p>
If the output is TRUE, the redirector script should accept the URI.
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
new file mode 100644
index 000000000..79084832b
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
@@ -0,0 +1,22 @@
+URI.SafeIframeRegexp
+TYPE: string/null
+VERSION: 4.4.0
+DEFAULT: NULL
+--DESCRIPTION--
+<p>
+ A PCRE regular expression that will be matched against an iframe URI. This is
+ a relatively inflexible scheme, but works well enough for the most common
+ use-case of iframes: embedded video. This directive only has an effect if
+ %HTML.SafeIframe is enabled. Here are some example values:
+</p>
+<ul>
+ <li><code>%^http://www.youtube.com/embed/%</code> - Allow YouTube videos</li>
+ <li><code>%^http://player.vimeo.com/video/%</code> - Allow Vimeo videos</li>
+ <li><code>%^http://(www.youtube.com/embed/|player.vimeo.com/video/)%</code> - Allow both</li>
+</ul>
+<p>
+ Note that this directive does not give you enough granularity to, say, disable
+ all <code>autoplay</code> videos. Pipe up on the HTML Purifier forums if this
+ is a capability you want.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ContentSets.php b/library/HTMLPurifier/ContentSets.php
index 3b6e96f5f..543e3f8f1 100644
--- a/library/HTMLPurifier/ContentSets.php
+++ b/library/HTMLPurifier/ContentSets.php
@@ -7,35 +7,42 @@ class HTMLPurifier_ContentSets
{
/**
- * List of content set strings (pipe seperators) indexed by name.
+ * List of content set strings (pipe separators) indexed by name.
+ * @type array
*/
public $info = array();
/**
* List of content set lookups (element => true) indexed by name.
+ * @type array
* @note This is in HTMLPurifier_HTMLDefinition->info_content_sets
*/
public $lookup = array();
/**
- * Synchronized list of defined content sets (keys of info)
+ * Synchronized list of defined content sets (keys of info).
+ * @type array
*/
protected $keys = array();
/**
- * Synchronized list of defined content values (values of info)
+ * Synchronized list of defined content values (values of info).
+ * @type array
*/
protected $values = array();
/**
* Merges in module's content sets, expands identifiers in the content
* sets and populates the keys, values and lookup member variables.
- * @param $modules List of HTMLPurifier_HTMLModule
+ * @param HTMLPurifier_HTMLModule[] $modules List of HTMLPurifier_HTMLModule
*/
- public function __construct($modules) {
- if (!is_array($modules)) $modules = array($modules);
+ public function __construct($modules)
+ {
+ if (!is_array($modules)) {
+ $modules = array($modules);
+ }
// populate content_sets based on module hints
// sorry, no way of overloading
- foreach ($modules as $module_i => $module) {
+ foreach ($modules as $module) {
foreach ($module->content_sets as $key => $value) {
$temp = $this->convertToLookup($value);
if (isset($this->lookup[$key])) {
@@ -70,11 +77,14 @@ class HTMLPurifier_ContentSets
/**
* Accepts a definition; generates and assigns a ChildDef for it
- * @param $def HTMLPurifier_ElementDef reference
- * @param $module Module that defined the ElementDef
+ * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef reference
+ * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
*/
- public function generateChildDef(&$def, $module) {
- if (!empty($def->child)) return; // already done!
+ public function generateChildDef(&$def, $module)
+ {
+ if (!empty($def->child)) { // already done!
+ return;
+ }
$content_model = $def->content_model;
if (is_string($content_model)) {
// Assume that $this->keys is alphanumeric
@@ -89,7 +99,8 @@ class HTMLPurifier_ContentSets
$def->child = $this->getChildDef($def, $module);
}
- public function generateChildDefCallback($matches) {
+ public function generateChildDefCallback($matches)
+ {
return $this->info[$matches[0]];
}
@@ -98,10 +109,12 @@ class HTMLPurifier_ContentSets
* member variables in HTMLPurifier_ElementDef
* @note This will also defer to modules for custom HTMLPurifier_ChildDef
* subclasses that need content set expansion
- * @param $def HTMLPurifier_ElementDef to have ChildDef extracted
+ * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef to have ChildDef extracted
+ * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
* @return HTMLPurifier_ChildDef corresponding to ElementDef
*/
- public function getChildDef($def, $module) {
+ public function getChildDef($def, $module)
+ {
$value = $def->content_model;
if (is_object($value)) {
trigger_error(
@@ -126,7 +139,9 @@ class HTMLPurifier_ContentSets
if ($module->defines_child_def) { // save a func call
$return = $module->getChildDef($def);
}
- if ($return !== false) return $return;
+ if ($return !== false) {
+ return $return;
+ }
// error-out
trigger_error(
'Could not determine which ChildDef class to instantiate',
@@ -138,18 +153,18 @@ class HTMLPurifier_ContentSets
/**
* Converts a string list of elements separated by pipes into
* a lookup array.
- * @param $string List of elements
- * @return Lookup array of elements
+ * @param string $string List of elements
+ * @return array Lookup array of elements
*/
- protected function convertToLookup($string) {
+ protected function convertToLookup($string)
+ {
$array = explode('|', str_replace(' ', '', $string));
$ret = array();
- foreach ($array as $i => $k) {
+ foreach ($array as $k) {
$ret[$k] = true;
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Context.php b/library/HTMLPurifier/Context.php
index 9ddf0c547..00e509c85 100644
--- a/library/HTMLPurifier/Context.php
+++ b/library/HTMLPurifier/Context.php
@@ -12,18 +12,22 @@ class HTMLPurifier_Context
/**
* Private array that stores the references.
+ * @type array
*/
private $_storage = array();
/**
* Registers a variable into the context.
- * @param $name String name
- * @param $ref Reference to variable to be registered
+ * @param string $name String name
+ * @param mixed $ref Reference to variable to be registered
*/
- public function register($name, &$ref) {
- if (isset($this->_storage[$name])) {
- trigger_error("Name $name produces collision, cannot re-register",
- E_USER_ERROR);
+ public function register($name, &$ref)
+ {
+ if (array_key_exists($name, $this->_storage)) {
+ trigger_error(
+ "Name $name produces collision, cannot re-register",
+ E_USER_ERROR
+ );
return;
}
$this->_storage[$name] =& $ref;
@@ -31,14 +35,18 @@ class HTMLPurifier_Context
/**
* Retrieves a variable reference from the context.
- * @param $name String name
- * @param $ignore_error Boolean whether or not to ignore error
+ * @param string $name String name
+ * @param bool $ignore_error Boolean whether or not to ignore error
+ * @return mixed
*/
- public function &get($name, $ignore_error = false) {
- if (!isset($this->_storage[$name])) {
+ public function &get($name, $ignore_error = false)
+ {
+ if (!array_key_exists($name, $this->_storage)) {
if (!$ignore_error) {
- trigger_error("Attempted to retrieve non-existent variable $name",
- E_USER_ERROR);
+ trigger_error(
+ "Attempted to retrieve non-existent variable $name",
+ E_USER_ERROR
+ );
}
$var = null; // so we can return by reference
return $var;
@@ -47,13 +55,16 @@ class HTMLPurifier_Context
}
/**
- * Destorys a variable in the context.
- * @param $name String name
+ * Destroys a variable in the context.
+ * @param string $name String name
*/
- public function destroy($name) {
- if (!isset($this->_storage[$name])) {
- trigger_error("Attempted to destroy non-existent variable $name",
- E_USER_ERROR);
+ public function destroy($name)
+ {
+ if (!array_key_exists($name, $this->_storage)) {
+ trigger_error(
+ "Attempted to destroy non-existent variable $name",
+ E_USER_ERROR
+ );
return;
}
unset($this->_storage[$name]);
@@ -61,22 +72,24 @@ class HTMLPurifier_Context
/**
* Checks whether or not the variable exists.
- * @param $name String name
+ * @param string $name String name
+ * @return bool
*/
- public function exists($name) {
- return isset($this->_storage[$name]);
+ public function exists($name)
+ {
+ return array_key_exists($name, $this->_storage);
}
/**
* Loads a series of variables from an associative array
- * @param $context_array Assoc array of variables to load
+ * @param array $context_array Assoc array of variables to load
*/
- public function loadArray($context_array) {
+ public function loadArray($context_array)
+ {
foreach ($context_array as $key => $discard) {
$this->register($key, $context_array[$key]);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Definition.php b/library/HTMLPurifier/Definition.php
index a7408c974..bc6d43364 100644
--- a/library/HTMLPurifier/Definition.php
+++ b/library/HTMLPurifier/Definition.php
@@ -9,31 +9,47 @@ abstract class HTMLPurifier_Definition
/**
* Has setup() been called yet?
+ * @type bool
*/
public $setup = false;
/**
+ * If true, write out the final definition object to the cache after
+ * setup. This will be true only if all invocations to get a raw
+ * definition object are also optimized. This does not cause file
+ * system thrashing because on subsequent calls the cached object
+ * is used and any writes to the raw definition object are short
+ * circuited. See enduser-customize.html for the high-level
+ * picture.
+ * @type bool
+ */
+ public $optimized = null;
+
+ /**
* What type of definition is it?
+ * @type string
*/
public $type;
/**
* Sets up the definition object into the final form, something
* not done by the constructor
- * @param $config HTMLPurifier_Config instance
+ * @param HTMLPurifier_Config $config
*/
abstract protected function doSetup($config);
/**
* Setup function that aborts if already setup
- * @param $config HTMLPurifier_Config instance
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {
- if ($this->setup) return;
+ public function setup($config)
+ {
+ if ($this->setup) {
+ return;
+ }
$this->setup = true;
$this->doSetup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache.php b/library/HTMLPurifier/DefinitionCache.php
index c6e1e388c..67bb5b1e6 100644
--- a/library/HTMLPurifier/DefinitionCache.php
+++ b/library/HTMLPurifier/DefinitionCache.php
@@ -10,22 +10,27 @@
*/
abstract class HTMLPurifier_DefinitionCache
{
-
+ /**
+ * @type string
+ */
public $type;
/**
- * @param $name Type of definition objects this instance of the
+ * @param string $type Type of definition objects this instance of the
* cache will handle.
*/
- public function __construct($type) {
+ public function __construct($type)
+ {
$this->type = $type;
}
/**
* Generates a unique identifier for a particular configuration
- * @param Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @return string
*/
- public function generateKey($config) {
+ public function generateKey($config)
+ {
return $config->version . ',' . // possibly replace with function calls
$config->getBatchSerial($this->type) . ',' .
$config->get($this->type . '.DefinitionRev');
@@ -34,30 +39,37 @@ abstract class HTMLPurifier_DefinitionCache
/**
* Tests whether or not a key is old with respect to the configuration's
* version and revision number.
- * @param $key Key to test
- * @param $config Instance of HTMLPurifier_Config to test against
+ * @param string $key Key to test
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config to test against
+ * @return bool
*/
- public function isOld($key, $config) {
- if (substr_count($key, ',') < 2) return true;
+ public function isOld($key, $config)
+ {
+ if (substr_count($key, ',') < 2) {
+ return true;
+ }
list($version, $hash, $revision) = explode(',', $key, 3);
$compare = version_compare($version, $config->version);
// version mismatch, is always old
- if ($compare != 0) return true;
+ if ($compare != 0) {
+ return true;
+ }
// versions match, ids match, check revision number
- if (
- $hash == $config->getBatchSerial($this->type) &&
- $revision < $config->get($this->type . '.DefinitionRev')
- ) return true;
+ if ($hash == $config->getBatchSerial($this->type) &&
+ $revision < $config->get($this->type . '.DefinitionRev')) {
+ return true;
+ }
return false;
}
/**
* Checks if a definition's type jives with the cache's type
* @note Throws an error on failure
- * @param $def Definition object to check
- * @return Boolean true if good, false if not
+ * @param HTMLPurifier_Definition $def Definition object to check
+ * @return bool true if good, false if not
*/
- public function checkDefType($def) {
+ public function checkDefType($def)
+ {
if ($def->type !== $this->type) {
trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}");
return false;
@@ -67,31 +79,40 @@ abstract class HTMLPurifier_DefinitionCache
/**
* Adds a definition object to the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function add($def, $config);
/**
* Unconditionally saves a definition object to the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function set($def, $config);
/**
* Replace an object in the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function replace($def, $config);
/**
* Retrieves a definition object from the cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function get($config);
/**
* Removes a definition object to the cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function remove($config);
/**
* Clears all objects from cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function flush($config);
@@ -100,9 +121,9 @@ abstract class HTMLPurifier_DefinitionCache
* @note Be carefuly implementing this method as flush. Flush must
* not interfere with other Definition types, and cleanup()
* should not be repeatedly called by userland code.
+ * @param HTMLPurifier_Config $config
*/
abstract public function cleanup($config);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator.php b/library/HTMLPurifier/DefinitionCache/Decorator.php
index b0fb6d0cd..b57a51b6c 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator.php
@@ -5,58 +5,108 @@ class HTMLPurifier_DefinitionCache_Decorator extends HTMLPurifier_DefinitionCach
/**
* Cache object we are decorating
+ * @type HTMLPurifier_DefinitionCache
*/
public $cache;
- public function __construct() {}
+ /**
+ * The name of the decorator
+ * @var string
+ */
+ public $name;
+
+ public function __construct()
+ {
+ }
/**
* Lazy decorator function
- * @param $cache Reference to cache object to decorate
+ * @param HTMLPurifier_DefinitionCache $cache Reference to cache object to decorate
+ * @return HTMLPurifier_DefinitionCache_Decorator
*/
- public function decorate(&$cache) {
+ public function decorate(&$cache)
+ {
$decorator = $this->copy();
// reference is necessary for mocks in PHP 4
$decorator->cache =& $cache;
- $decorator->type = $cache->type;
+ $decorator->type = $cache->type;
return $decorator;
}
/**
* Cross-compatible clone substitute
+ * @return HTMLPurifier_DefinitionCache_Decorator
*/
- public function copy() {
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
return $this->cache->add($def, $config);
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
return $this->cache->set($def, $config);
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
return $this->cache->replace($def, $config);
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
return $this->cache->get($config);
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function remove($config)
+ {
return $this->cache->remove($config);
}
- public function flush($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function flush($config)
+ {
return $this->cache->flush($config);
}
- public function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function cleanup($config)
+ {
return $this->cache->cleanup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php b/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
index d4cc35c4b..4991777ce 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
@@ -4,40 +4,75 @@
* Definition cache decorator class that cleans up the cache
* whenever there is a cache miss.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Cleanup extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Cleanup extends HTMLPurifier_DefinitionCache_Decorator
{
-
+ /**
+ * @type string
+ */
public $name = 'Cleanup';
- public function copy() {
+ /**
+ * @return HTMLPurifier_DefinitionCache_Decorator_Cleanup
+ */
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator_Cleanup();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
$status = parent::add($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
$status = parent::set($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
$status = parent::replace($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
$ret = parent::get($config);
- if (!$ret) parent::cleanup($config);
+ if (!$ret) {
+ parent::cleanup($config);
+ }
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php b/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
index 18f16d32b..d529dce48 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
@@ -5,42 +5,81 @@
* to PHP's memory; good for unit tests or circumstances where
* there are lots of configuration objects floating around.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Memory extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Memory extends HTMLPurifier_DefinitionCache_Decorator
{
-
+ /**
+ * @type array
+ */
protected $definitions;
+
+ /**
+ * @type string
+ */
public $name = 'Memory';
- public function copy() {
+ /**
+ * @return HTMLPurifier_DefinitionCache_Decorator_Memory
+ */
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator_Memory();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
$status = parent::add($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
$status = parent::set($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
$status = parent::replace($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
$key = $this->generateKey($config);
- if (isset($this->definitions[$key])) return $this->definitions[$key];
+ if (isset($this->definitions[$key])) {
+ return $this->definitions[$key];
+ }
$this->definitions[$key] = parent::get($config);
return $this->definitions[$key];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in b/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
index 21a8fcfda..b1fec8d36 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
@@ -5,43 +5,78 @@ require_once 'HTMLPurifier/DefinitionCache/Decorator.php';
/**
* Definition cache decorator template.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Template extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Template extends HTMLPurifier_DefinitionCache_Decorator
{
- var $name = 'Template'; // replace this
+ /**
+ * @type string
+ */
+ public $name = 'Template'; // replace this
- function copy() {
+ public function copy()
+ {
// replace class name with yours
return new HTMLPurifier_DefinitionCache_Decorator_Template();
}
// remove methods you don't need
- function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
return parent::add($def, $config);
}
- function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
return parent::set($def, $config);
}
- function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
return parent::replace($def, $config);
}
- function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
return parent::get($config);
}
- function flush() {
- return parent::flush();
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function flush($config)
+ {
+ return parent::flush($config);
}
- function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function cleanup($config)
+ {
return parent::cleanup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Null.php b/library/HTMLPurifier/DefinitionCache/Null.php
index 41d97e734..d9a75ce22 100644
--- a/library/HTMLPurifier/DefinitionCache/Null.php
+++ b/library/HTMLPurifier/DefinitionCache/Null.php
@@ -6,34 +6,71 @@
class HTMLPurifier_DefinitionCache_Null extends HTMLPurifier_DefinitionCache
{
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function add($def, $config)
+ {
return false;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function set($def, $config)
+ {
return false;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function replace($def, $config)
+ {
return false;
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function remove($config)
+ {
return false;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function get($config)
+ {
return false;
}
- public function flush($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function flush($config)
+ {
return false;
}
- public function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function cleanup($config)
+ {
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Serializer.php b/library/HTMLPurifier/DefinitionCache/Serializer.php
index 7a6aa93f0..ecacb88fe 100644
--- a/library/HTMLPurifier/DefinitionCache/Serializer.php
+++ b/library/HTMLPurifier/DefinitionCache/Serializer.php
@@ -1,83 +1,160 @@
<?php
-class HTMLPurifier_DefinitionCache_Serializer extends
- HTMLPurifier_DefinitionCache
+class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCache
{
- public function add($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function add($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (file_exists($file)) return false;
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (file_exists($file)) {
+ return false;
+ }
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function set($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function set($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function replace($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function replace($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (!file_exists($file)) {
+ return false;
+ }
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool|HTMLPurifier_Config
+ */
+ public function get($config)
+ {
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
+ if (!file_exists($file)) {
+ return false;
+ }
return unserialize(file_get_contents($file));
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function remove($config)
+ {
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
+ if (!file_exists($file)) {
+ return false;
+ }
return unlink($file);
}
- public function flush($config) {
- if (!$this->_prepareDir($config)) return false;
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function flush($config)
+ {
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
$dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
+ $dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) continue;
- if ($filename[0] === '.') continue;
+ if (empty($filename)) {
+ continue;
+ }
+ if ($filename[0] === '.') {
+ continue;
+ }
unlink($dir . '/' . $filename);
}
}
- public function cleanup($config) {
- if (!$this->_prepareDir($config)) return false;
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function cleanup($config)
+ {
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
$dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
+ $dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) continue;
- if ($filename[0] === '.') continue;
+ if (empty($filename)) {
+ continue;
+ }
+ if ($filename[0] === '.') {
+ continue;
+ }
$key = substr($filename, 0, strlen($filename) - 4);
- if ($this->isOld($key, $config)) unlink($dir . '/' . $filename);
+ if ($this->isOld($key, $config)) {
+ unlink($dir . '/' . $filename);
+ }
}
}
/**
* Generates the file path to the serial file corresponding to
* the configuration and definition name
+ * @param HTMLPurifier_Config $config
+ * @return string
* @todo Make protected
*/
- public function generateFilePath($config) {
+ public function generateFilePath($config)
+ {
$key = $this->generateKey($config);
return $this->generateDirectoryPath($config) . '/' . $key . '.ser';
}
/**
* Generates the path to the directory contain this cache's serial files
+ * @param HTMLPurifier_Config $config
+ * @return string
* @note No trailing slash
* @todo Make protected
*/
- public function generateDirectoryPath($config) {
+ public function generateDirectoryPath($config)
+ {
$base = $this->generateBaseDirectoryPath($config);
return $base . '/' . $this->type;
}
@@ -85,9 +162,12 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Generates path to base directory that contains all definition type
* serials
+ * @param HTMLPurifier_Config $config
+ * @return mixed|string
* @todo Make protected
*/
- public function generateBaseDirectoryPath($config) {
+ public function generateBaseDirectoryPath($config)
+ {
$base = $config->get('Cache.SerializerPath');
$base = is_null($base) ? HTMLPURIFIER_PREFIX . '/HTMLPurifier/DefinitionCache/Serializer' : $base;
return $base;
@@ -95,34 +175,54 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Convenience wrapper function for file_put_contents
- * @param $file File name to write to
- * @param $data Data to write into file
- * @return Number of bytes written if success, or false if failure.
+ * @param string $file File name to write to
+ * @param string $data Data to write into file
+ * @param HTMLPurifier_Config $config
+ * @return int|bool Number of bytes written if success, or false if failure.
*/
- private function _write($file, $data) {
- return file_put_contents($file, $data);
+ private function _write($file, $data, $config)
+ {
+ $result = file_put_contents($file, $data);
+ if ($result !== false) {
+ // set permissions of the new file (no execute)
+ $chmod = $config->get('Cache.SerializerPermissions');
+ if (!$chmod) {
+ $chmod = 0644; // invalid config or simpletest
+ }
+ $chmod = $chmod & 0666;
+ chmod($file, $chmod);
+ }
+ return $result;
}
/**
* Prepares the directory that this type stores the serials in
- * @return True if successful
+ * @param HTMLPurifier_Config $config
+ * @return bool True if successful
*/
- private function _prepareDir($config) {
+ private function _prepareDir($config)
+ {
$directory = $this->generateDirectoryPath($config);
+ $chmod = $config->get('Cache.SerializerPermissions');
+ if (!$chmod) {
+ $chmod = 0755; // invalid config or simpletest
+ }
if (!is_dir($directory)) {
$base = $this->generateBaseDirectoryPath($config);
if (!is_dir($base)) {
- trigger_error('Base directory '.$base.' does not exist,
+ trigger_error(
+ 'Base directory ' . $base . ' does not exist,
please create or change using %Cache.SerializerPath',
- E_USER_WARNING);
+ E_USER_WARNING
+ );
return false;
- } elseif (!$this->_testPermissions($base)) {
+ } elseif (!$this->_testPermissions($base, $chmod)) {
return false;
}
- $old = umask(0022); // disable group and world writes
- mkdir($directory);
+ $old = umask(0000);
+ mkdir($directory, $chmod);
umask($old);
- } elseif (!$this->_testPermissions($directory)) {
+ } elseif (!$this->_testPermissions($directory, $chmod)) {
return false;
}
return true;
@@ -131,42 +231,55 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Tests permissions on a directory and throws out friendly
* error messages and attempts to chmod it itself if possible
+ * @param string $dir Directory path
+ * @param int $chmod Permissions
+ * @return bool True if directory is writable
*/
- private function _testPermissions($dir) {
+ private function _testPermissions($dir, $chmod)
+ {
// early abort, if it is writable, everything is hunky-dory
- if (is_writable($dir)) return true;
+ if (is_writable($dir)) {
+ return true;
+ }
if (!is_dir($dir)) {
// generally, you'll want to handle this beforehand
// so a more specific error message can be given
- trigger_error('Directory '.$dir.' does not exist',
- E_USER_WARNING);
+ trigger_error(
+ 'Directory ' . $dir . ' does not exist',
+ E_USER_WARNING
+ );
return false;
}
if (function_exists('posix_getuid')) {
// POSIX system, we can give more specific advice
if (fileowner($dir) === posix_getuid()) {
// we can chmod it ourselves
- chmod($dir, 0755);
- return true;
+ $chmod = $chmod | 0700;
+ if (chmod($dir, $chmod)) {
+ return true;
+ }
} elseif (filegroup($dir) === posix_getgid()) {
- $chmod = '775';
+ $chmod = $chmod | 0070;
} else {
// PHP's probably running as nobody, so we'll
// need to give global permissions
- $chmod = '777';
+ $chmod = $chmod | 0777;
}
- trigger_error('Directory '.$dir.' not writable, '.
- 'please chmod to ' . $chmod,
- E_USER_WARNING);
+ trigger_error(
+ 'Directory ' . $dir . ' not writable, ' .
+ 'please chmod to ' . decoct($chmod),
+ E_USER_WARNING
+ );
} else {
// generic error message
- trigger_error('Directory '.$dir.' not writable, '.
+ trigger_error(
+ 'Directory ' . $dir . ' not writable, ' .
'please alter file permissions',
- E_USER_WARNING);
+ E_USER_WARNING
+ );
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Serializer/README b/library/HTMLPurifier/DefinitionCache/Serializer/README
index 2e35c1c3d..2e35c1c3d 100644..100755
--- a/library/HTMLPurifier/DefinitionCache/Serializer/README
+++ b/library/HTMLPurifier/DefinitionCache/Serializer/README
diff --git a/library/HTMLPurifier/DefinitionCacheFactory.php b/library/HTMLPurifier/DefinitionCacheFactory.php
index a6ead6281..fd1cc9be4 100644
--- a/library/HTMLPurifier/DefinitionCacheFactory.php
+++ b/library/HTMLPurifier/DefinitionCacheFactory.php
@@ -5,22 +5,36 @@
*/
class HTMLPurifier_DefinitionCacheFactory
{
-
+ /**
+ * @type array
+ */
protected $caches = array('Serializer' => array());
+
+ /**
+ * @type array
+ */
protected $implementations = array();
+
+ /**
+ * @type HTMLPurifier_DefinitionCache_Decorator[]
+ */
protected $decorators = array();
/**
* Initialize default decorators
*/
- public function setup() {
+ public function setup()
+ {
$this->addDecorator('Cleanup');
}
/**
* Retrieves an instance of global definition cache factory.
+ * @param HTMLPurifier_DefinitionCacheFactory $prototype
+ * @return HTMLPurifier_DefinitionCacheFactory
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance;
if ($prototype !== null) {
$instance = $prototype;
@@ -33,19 +47,22 @@ class HTMLPurifier_DefinitionCacheFactory
/**
* Registers a new definition cache object
- * @param $short Short name of cache object, for reference
- * @param $long Full class name of cache object, for construction
+ * @param string $short Short name of cache object, for reference
+ * @param string $long Full class name of cache object, for construction
*/
- public function register($short, $long) {
+ public function register($short, $long)
+ {
$this->implementations[$short] = $long;
}
/**
* Factory method that creates a cache object based on configuration
- * @param $name Name of definitions handled by cache
- * @param $config Instance of HTMLPurifier_Config
+ * @param string $type Name of definitions handled by cache
+ * @param HTMLPurifier_Config $config Config instance
+ * @return mixed
*/
- public function create($type, $config) {
+ public function create($type, $config)
+ {
$method = $config->get('Cache.DefinitionImpl');
if ($method === null) {
return new HTMLPurifier_DefinitionCache_Null($type);
@@ -53,10 +70,8 @@ class HTMLPurifier_DefinitionCacheFactory
if (!empty($this->caches[$method][$type])) {
return $this->caches[$method][$type];
}
- if (
- isset($this->implementations[$method]) &&
- class_exists($class = $this->implementations[$method], false)
- ) {
+ if (isset($this->implementations[$method]) &&
+ class_exists($class = $this->implementations[$method], false)) {
$cache = new $class($type);
} else {
if ($method != 'Serializer') {
@@ -76,16 +91,16 @@ class HTMLPurifier_DefinitionCacheFactory
/**
* Registers a decorator to add to all new cache objects
- * @param
+ * @param HTMLPurifier_DefinitionCache_Decorator|string $decorator An instance or the name of a decorator
*/
- public function addDecorator($decorator) {
+ public function addDecorator($decorator)
+ {
if (is_string($decorator)) {
$class = "HTMLPurifier_DefinitionCache_Decorator_$decorator";
$decorator = new $class;
}
$this->decorators[$decorator->name] = $decorator;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Doctype.php b/library/HTMLPurifier/Doctype.php
index 1e3c574c0..4acd06e5b 100644
--- a/library/HTMLPurifier/Doctype.php
+++ b/library/HTMLPurifier/Doctype.php
@@ -10,42 +10,55 @@ class HTMLPurifier_Doctype
{
/**
* Full name of doctype
+ * @type string
*/
public $name;
/**
* List of standard modules (string identifiers or literal objects)
* that this doctype uses
+ * @type array
*/
public $modules = array();
/**
* List of modules to use for tidying up code
+ * @type array
*/
public $tidyModules = array();
/**
* Is the language derived from XML (i.e. XHTML)?
+ * @type bool
*/
public $xml = true;
/**
* List of aliases for this doctype
+ * @type array
*/
public $aliases = array();
/**
* Public DTD identifier
+ * @type string
*/
public $dtdPublic;
/**
* System DTD identifier
+ * @type string
*/
public $dtdSystem;
- public function __construct($name = null, $xml = true, $modules = array(),
- $tidyModules = array(), $aliases = array(), $dtd_public = null, $dtd_system = null
+ public function __construct(
+ $name = null,
+ $xml = true,
+ $modules = array(),
+ $tidyModules = array(),
+ $aliases = array(),
+ $dtd_public = null,
+ $dtd_system = null
) {
$this->name = $name;
$this->xml = $xml;
diff --git a/library/HTMLPurifier/DoctypeRegistry.php b/library/HTMLPurifier/DoctypeRegistry.php
index 86049e939..acc1d64a6 100644
--- a/library/HTMLPurifier/DoctypeRegistry.php
+++ b/library/HTMLPurifier/DoctypeRegistry.php
@@ -4,12 +4,14 @@ class HTMLPurifier_DoctypeRegistry
{
/**
- * Hash of doctype names to doctype objects
+ * Hash of doctype names to doctype objects.
+ * @type array
*/
protected $doctypes;
/**
- * Lookup table of aliases to real doctype names
+ * Lookup table of aliases to real doctype names.
+ * @type array
*/
protected $aliases;
@@ -17,32 +19,57 @@ class HTMLPurifier_DoctypeRegistry
* Registers a doctype to the registry
* @note Accepts a fully-formed doctype object, or the
* parameters for constructing a doctype object
- * @param $doctype Name of doctype or literal doctype object
- * @param $modules Modules doctype will load
- * @param $modules_for_modes Modules doctype will load for certain modes
- * @param $aliases Alias names for doctype
- * @return Editable registered doctype
+ * @param string $doctype Name of doctype or literal doctype object
+ * @param bool $xml
+ * @param array $modules Modules doctype will load
+ * @param array $tidy_modules Modules doctype will load for certain modes
+ * @param array $aliases Alias names for doctype
+ * @param string $dtd_public
+ * @param string $dtd_system
+ * @return HTMLPurifier_Doctype Editable registered doctype
*/
- public function register($doctype, $xml = true, $modules = array(),
- $tidy_modules = array(), $aliases = array(), $dtd_public = null, $dtd_system = null
+ public function register(
+ $doctype,
+ $xml = true,
+ $modules = array(),
+ $tidy_modules = array(),
+ $aliases = array(),
+ $dtd_public = null,
+ $dtd_system = null
) {
- if (!is_array($modules)) $modules = array($modules);
- if (!is_array($tidy_modules)) $tidy_modules = array($tidy_modules);
- if (!is_array($aliases)) $aliases = array($aliases);
+ if (!is_array($modules)) {
+ $modules = array($modules);
+ }
+ if (!is_array($tidy_modules)) {
+ $tidy_modules = array($tidy_modules);
+ }
+ if (!is_array($aliases)) {
+ $aliases = array($aliases);
+ }
if (!is_object($doctype)) {
$doctype = new HTMLPurifier_Doctype(
- $doctype, $xml, $modules, $tidy_modules, $aliases, $dtd_public, $dtd_system
+ $doctype,
+ $xml,
+ $modules,
+ $tidy_modules,
+ $aliases,
+ $dtd_public,
+ $dtd_system
);
}
$this->doctypes[$doctype->name] = $doctype;
$name = $doctype->name;
// hookup aliases
foreach ($doctype->aliases as $alias) {
- if (isset($this->doctypes[$alias])) continue;
+ if (isset($this->doctypes[$alias])) {
+ continue;
+ }
$this->aliases[$alias] = $name;
}
// remove old aliases
- if (isset($this->aliases[$name])) unset($this->aliases[$name]);
+ if (isset($this->aliases[$name])) {
+ unset($this->aliases[$name]);
+ }
return $doctype;
}
@@ -50,11 +77,14 @@ class HTMLPurifier_DoctypeRegistry
* Retrieves reference to a doctype of a certain name
* @note This function resolves aliases
* @note When possible, use the more fully-featured make()
- * @param $doctype Name of doctype
- * @return Editable doctype object
+ * @param string $doctype Name of doctype
+ * @return HTMLPurifier_Doctype Editable doctype object
*/
- public function get($doctype) {
- if (isset($this->aliases[$doctype])) $doctype = $this->aliases[$doctype];
+ public function get($doctype)
+ {
+ if (isset($this->aliases[$doctype])) {
+ $doctype = $this->aliases[$doctype];
+ }
if (!isset($this->doctypes[$doctype])) {
trigger_error('Doctype ' . htmlspecialchars($doctype) . ' does not exist', E_USER_ERROR);
$anon = new HTMLPurifier_Doctype($doctype);
@@ -70,20 +100,30 @@ class HTMLPurifier_DoctypeRegistry
* can hold on to (this is necessary in order to tell
* Generator whether or not the current document is XML
* based or not).
+ * @param HTMLPurifier_Config $config
+ * @return HTMLPurifier_Doctype
*/
- public function make($config) {
+ public function make($config)
+ {
return clone $this->get($this->getDoctypeFromConfig($config));
}
/**
* Retrieves the doctype from the configuration object
+ * @param HTMLPurifier_Config $config
+ * @return string
*/
- public function getDoctypeFromConfig($config) {
+ public function getDoctypeFromConfig($config)
+ {
// recommended test
$doctype = $config->get('HTML.Doctype');
- if (!empty($doctype)) return $doctype;
+ if (!empty($doctype)) {
+ return $doctype;
+ }
$doctype = $config->get('HTML.CustomDoctype');
- if (!empty($doctype)) return $doctype;
+ if (!empty($doctype)) {
+ return $doctype;
+ }
// backwards-compatibility
if ($config->get('HTML.XHTML')) {
$doctype = 'XHTML 1.0';
@@ -97,7 +137,6 @@ class HTMLPurifier_DoctypeRegistry
}
return $doctype;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ElementDef.php b/library/HTMLPurifier/ElementDef.php
index 5498d9567..d5311cedc 100644
--- a/library/HTMLPurifier/ElementDef.php
+++ b/library/HTMLPurifier/ElementDef.php
@@ -10,15 +10,16 @@
*/
class HTMLPurifier_ElementDef
{
-
/**
* Does the definition work by itself, or is it created solely
* for the purpose of merging into another definition?
+ * @type bool
*/
public $standalone = true;
/**
- * Associative array of attribute name to HTMLPurifier_AttrDef
+ * Associative array of attribute name to HTMLPurifier_AttrDef.
+ * @type array
* @note Before being processed by HTMLPurifier_AttrCollections
* when modules are finalized during
* HTMLPurifier_HTMLDefinition->setup(), this array may also
@@ -30,27 +31,43 @@ class HTMLPurifier_ElementDef
*/
public $attr = array();
+ // XXX: Design note: currently, it's not possible to override
+ // previously defined AttrTransforms without messing around with
+ // the final generated config. This is by design; a previous version
+ // used an associated list of attr_transform, but it was extremely
+ // easy to accidentally override other attribute transforms by
+ // forgetting to specify an index (and just using 0.) While we
+ // could check this by checking the index number and complaining,
+ // there is a second problem which is that it is not at all easy to
+ // tell when something is getting overridden. Combine this with a
+ // codebase where this isn't really being used, and it's perfect for
+ // nuking.
+
/**
- * Indexed list of tag's HTMLPurifier_AttrTransform to be done before validation
+ * List of tags HTMLPurifier_AttrTransform to be done before validation.
+ * @type array
*/
public $attr_transform_pre = array();
/**
- * Indexed list of tag's HTMLPurifier_AttrTransform to be done after validation
+ * List of tags HTMLPurifier_AttrTransform to be done after validation.
+ * @type array
*/
public $attr_transform_post = array();
/**
* HTMLPurifier_ChildDef of this tag.
+ * @type HTMLPurifier_ChildDef
*/
public $child;
/**
- * Abstract string representation of internal ChildDef rules. See
- * HTMLPurifier_ContentSets for how this is parsed and then transformed
+ * Abstract string representation of internal ChildDef rules.
+ * @see HTMLPurifier_ContentSets for how this is parsed and then transformed
* into an HTMLPurifier_ChildDef.
* @warning This is a temporary variable that is not available after
* being processed by HTMLDefinition
+ * @type string
*/
public $content_model;
@@ -60,27 +77,29 @@ class HTMLPurifier_ElementDef
* @warning This must be lowercase
* @warning This is a temporary variable that is not available after
* being processed by HTMLDefinition
+ * @type string
*/
public $content_model_type;
-
-
/**
* Does the element have a content model (#PCDATA | Inline)*? This
* is important for chameleon ins and del processing in
* HTMLPurifier_ChildDef_Chameleon. Dynamically set: modules don't
* have to worry about this one.
+ * @type bool
*/
public $descendants_are_inline = false;
/**
- * List of the names of required attributes this element has. Dynamically
- * populated by HTMLPurifier_HTMLDefinition::getElement
+ * List of the names of required attributes this element has.
+ * Dynamically populated by HTMLPurifier_HTMLDefinition::getElement()
+ * @type array
*/
public $required_attr = array();
/**
* Lookup table of tags excluded from all descendants of this tag.
+ * @type array
* @note SGML permits exclusions for all descendants, but this is
* not possible with DTDs or XML Schemas. W3C has elected to
* use complicated compositions of content_models to simulate
@@ -94,6 +113,7 @@ class HTMLPurifier_ElementDef
/**
* This tag is explicitly auto-closed by the following tags.
+ * @type array
*/
public $autoclose = array();
@@ -101,19 +121,22 @@ class HTMLPurifier_ElementDef
* If a foreign element is found in this element, test if it is
* allowed by this sub-element; if it is, instead of closing the
* current element, place it inside this element.
+ * @type string
*/
public $wrap;
/**
* Whether or not this is a formatting element affected by the
* "Active Formatting Elements" algorithm.
+ * @type bool
*/
public $formatting;
/**
* Low-level factory constructor for creating new standalone element defs
*/
- public static function create($content_model, $content_model_type, $attr) {
+ public static function create($content_model, $content_model_type, $attr)
+ {
$def = new HTMLPurifier_ElementDef();
$def->content_model = $content_model;
$def->content_model_type = $content_model_type;
@@ -125,11 +148,12 @@ class HTMLPurifier_ElementDef
* Merges the values of another element definition into this one.
* Values from the new element def take precedence if a value is
* not mergeable.
+ * @param HTMLPurifier_ElementDef $def
*/
- public function mergeIn($def) {
-
+ public function mergeIn($def)
+ {
// later keys takes precedence
- foreach($def->attr as $k => $v) {
+ foreach ($def->attr as $k => $v) {
if ($k === 0) {
// merge in the includes
// sorry, no way to override an include
@@ -139,28 +163,35 @@ class HTMLPurifier_ElementDef
continue;
}
if ($v === false) {
- if (isset($this->attr[$k])) unset($this->attr[$k]);
+ if (isset($this->attr[$k])) {
+ unset($this->attr[$k]);
+ }
continue;
}
$this->attr[$k] = $v;
}
- $this->_mergeAssocArray($this->attr_transform_pre, $def->attr_transform_pre);
- $this->_mergeAssocArray($this->attr_transform_post, $def->attr_transform_post);
$this->_mergeAssocArray($this->excludes, $def->excludes);
+ $this->attr_transform_pre = array_merge($this->attr_transform_pre, $def->attr_transform_pre);
+ $this->attr_transform_post = array_merge($this->attr_transform_post, $def->attr_transform_post);
- if(!empty($def->content_model)) {
+ if (!empty($def->content_model)) {
$this->content_model =
str_replace("#SUPER", $this->content_model, $def->content_model);
$this->child = false;
}
- if(!empty($def->content_model_type)) {
+ if (!empty($def->content_model_type)) {
$this->content_model_type = $def->content_model_type;
$this->child = false;
}
- if(!is_null($def->child)) $this->child = $def->child;
- if(!is_null($def->formatting)) $this->formatting = $def->formatting;
- if($def->descendants_are_inline) $this->descendants_are_inline = $def->descendants_are_inline;
-
+ if (!is_null($def->child)) {
+ $this->child = $def->child;
+ }
+ if (!is_null($def->formatting)) {
+ $this->formatting = $def->formatting;
+ }
+ if ($def->descendants_are_inline) {
+ $this->descendants_are_inline = $def->descendants_are_inline;
+ }
}
/**
@@ -168,16 +199,18 @@ class HTMLPurifier_ElementDef
* @param $a1 Array by reference that is merged into
* @param $a2 Array that merges into $a1
*/
- private function _mergeAssocArray(&$a1, $a2) {
+ private function _mergeAssocArray(&$a1, $a2)
+ {
foreach ($a2 as $k => $v) {
if ($v === false) {
- if (isset($a1[$k])) unset($a1[$k]);
+ if (isset($a1[$k])) {
+ unset($a1[$k]);
+ }
continue;
}
$a1[$k] = $v;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Encoder.php b/library/HTMLPurifier/Encoder.php
index 2b3140caa..fef9b5890 100644
--- a/library/HTMLPurifier/Encoder.php
+++ b/library/HTMLPurifier/Encoder.php
@@ -10,14 +10,90 @@ class HTMLPurifier_Encoder
/**
* Constructor throws fatal error if you attempt to instantiate class
*/
- private function __construct() {
+ private function __construct()
+ {
trigger_error('Cannot instantiate encoder, call methods statically', E_USER_ERROR);
}
/**
* Error-handler that mutes errors, alternative to shut-up operator.
*/
- public static function muteErrorHandler() {}
+ public static function muteErrorHandler()
+ {
+ }
+
+ /**
+ * iconv wrapper which mutes errors, but doesn't work around bugs.
+ * @param string $in Input encoding
+ * @param string $out Output encoding
+ * @param string $text The text to convert
+ * @return string
+ */
+ public static function unsafeIconv($in, $out, $text)
+ {
+ set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
+ $r = iconv($in, $out, $text);
+ restore_error_handler();
+ return $r;
+ }
+
+ /**
+ * iconv wrapper which mutes errors and works around bugs.
+ * @param string $in Input encoding
+ * @param string $out Output encoding
+ * @param string $text The text to convert
+ * @param int $max_chunk_size
+ * @return string
+ */
+ public static function iconv($in, $out, $text, $max_chunk_size = 8000)
+ {
+ $code = self::testIconvTruncateBug();
+ if ($code == self::ICONV_OK) {
+ return self::unsafeIconv($in, $out, $text);
+ } elseif ($code == self::ICONV_TRUNCATES) {
+ // we can only work around this if the input character set
+ // is utf-8
+ if ($in == 'utf-8') {
+ if ($max_chunk_size < 4) {
+ trigger_error('max_chunk_size is too small', E_USER_WARNING);
+ return false;
+ }
+ // split into 8000 byte chunks, but be careful to handle
+ // multibyte boundaries properly
+ if (($c = strlen($text)) <= $max_chunk_size) {
+ return self::unsafeIconv($in, $out, $text);
+ }
+ $r = '';
+ $i = 0;
+ while (true) {
+ if ($i + $max_chunk_size >= $c) {
+ $r .= self::unsafeIconv($in, $out, substr($text, $i));
+ break;
+ }
+ // wibble the boundary
+ if (0x80 != (0xC0 & ord($text[$i + $max_chunk_size]))) {
+ $chunk_size = $max_chunk_size;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 1]))) {
+ $chunk_size = $max_chunk_size - 1;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 2]))) {
+ $chunk_size = $max_chunk_size - 2;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 3]))) {
+ $chunk_size = $max_chunk_size - 3;
+ } else {
+ return false; // rather confusing UTF-8...
+ }
+ $chunk = substr($text, $i, $chunk_size); // substr doesn't mind overlong lengths
+ $r .= self::unsafeIconv($in, $out, $chunk);
+ $i += $chunk_size;
+ }
+ return $r;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
/**
* Cleans a UTF-8 string for well-formedness and SGML validity
@@ -25,6 +101,10 @@ class HTMLPurifier_Encoder
* It will parse according to UTF-8 and return a valid UTF8 string, with
* non-SGML codepoints excluded.
*
+ * @param string $str The string to clean
+ * @param bool $force_php
+ * @return string
+ *
* @note Just for reference, the non-SGML code points are 0 to 31 and
* 127 to 159, inclusive. However, we allow code points 9, 10
* and 13, which are the tab, line feed and carriage return
@@ -44,14 +124,17 @@ class HTMLPurifier_Encoder
* would need that, and I'm probably not going to implement them.
* Once again, PHP 6 should solve all our problems.
*/
- public static function cleanUTF8($str, $force_php = false) {
-
+ public static function cleanUTF8($str, $force_php = false)
+ {
// UTF-8 validity is checked since PHP 4.3.5
// This is an optimization: if the string is already valid UTF-8, no
// need to do PHP stuff. 99% of the time, this will be the case.
// The regexp matches the XML char production, as well as well as excluding
// non-SGML codepoints U+007F to U+009F
- if (preg_match('/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du', $str)) {
+ if (preg_match(
+ '/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du',
+ $str
+ )) {
return $str;
}
@@ -70,7 +153,7 @@ class HTMLPurifier_Encoder
$char = '';
$len = strlen($str);
- for($i = 0; $i < $len; $i++) {
+ for ($i = 0; $i < $len; $i++) {
$in = ord($str{$i});
$char .= $str[$i]; // append byte to char
if (0 == $mState) {
@@ -223,8 +306,9 @@ class HTMLPurifier_Encoder
// | 00000000 | 00010000 | 11111111 | 11111111 | Defined upper limit of legal scalar codes
// +----------+----------+----------+----------+
- public static function unichr($code) {
- if($code > 1114111 or $code < 0 or
+ public static function unichr($code)
+ {
+ if ($code > 1114111 or $code < 0 or
($code >= 55296 and $code <= 57343) ) {
// bits are set outside the "valid" range as defined
// by UNICODE 4.1.0
@@ -242,7 +326,7 @@ class HTMLPurifier_Encoder
$y = (($code & 2047) >> 6) | 192;
} else {
$y = (($code & 4032) >> 6) | 128;
- if($code < 65536) {
+ if ($code < 65536) {
$z = (($code >> 12) & 15) | 224;
} else {
$z = (($code >> 12) & 63) | 128;
@@ -252,84 +336,129 @@ class HTMLPurifier_Encoder
}
// set up the actual character
$ret = '';
- if($w) $ret .= chr($w);
- if($z) $ret .= chr($z);
- if($y) $ret .= chr($y);
+ if ($w) {
+ $ret .= chr($w);
+ }
+ if ($z) {
+ $ret .= chr($z);
+ }
+ if ($y) {
+ $ret .= chr($y);
+ }
$ret .= chr($x);
return $ret;
}
/**
- * Converts a string to UTF-8 based on configuration.
+ * @return bool
+ */
+ public static function iconvAvailable()
+ {
+ static $iconv = null;
+ if ($iconv === null) {
+ $iconv = function_exists('iconv') && self::testIconvTruncateBug() != self::ICONV_UNUSABLE;
+ }
+ return $iconv;
+ }
+
+ /**
+ * Convert a string to UTF-8 based on configuration.
+ * @param string $str The string to convert
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public static function convertToUTF8($str, $config, $context) {
+ public static function convertToUTF8($str, $config, $context)
+ {
$encoding = $config->get('Core.Encoding');
- if ($encoding === 'utf-8') return $str;
+ if ($encoding === 'utf-8') {
+ return $str;
+ }
static $iconv = null;
- if ($iconv === null) $iconv = function_exists('iconv');
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
+ if ($iconv === null) {
+ $iconv = self::iconvAvailable();
+ }
if ($iconv && !$config->get('Test.ForceNoIconv')) {
- $str = iconv($encoding, 'utf-8//IGNORE', $str);
+ // unaffected by bugs, since UTF-8 support all characters
+ $str = self::unsafeIconv($encoding, 'utf-8//IGNORE', $str);
if ($str === false) {
// $encoding is not a valid encoding
- restore_error_handler();
trigger_error('Invalid encoding ' . $encoding, E_USER_ERROR);
return '';
}
// If the string is bjorked by Shift_JIS or a similar encoding
// that doesn't support all of ASCII, convert the naughty
// characters to their true byte-wise ASCII/UTF-8 equivalents.
- $str = strtr($str, HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding));
- restore_error_handler();
+ $str = strtr($str, self::testEncodingSupportsASCII($encoding));
return $str;
} elseif ($encoding === 'iso-8859-1') {
$str = utf8_encode($str);
- restore_error_handler();
return $str;
}
- trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
+ $bug = HTMLPurifier_Encoder::testIconvTruncateBug();
+ if ($bug == self::ICONV_OK) {
+ trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
+ } else {
+ trigger_error(
+ 'You have a buggy version of iconv, see https://bugs.php.net/bug.php?id=48147 ' .
+ 'and http://sourceware.org/bugzilla/show_bug.cgi?id=13541',
+ E_USER_ERROR
+ );
+ }
}
/**
* Converts a string from UTF-8 based on configuration.
+ * @param string $str The string to convert
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @note Currently, this is a lossy conversion, with unexpressable
* characters being omitted.
*/
- public static function convertFromUTF8($str, $config, $context) {
+ public static function convertFromUTF8($str, $config, $context)
+ {
$encoding = $config->get('Core.Encoding');
- if ($encoding === 'utf-8') return $str;
- static $iconv = null;
- if ($iconv === null) $iconv = function_exists('iconv');
if ($escape = $config->get('Core.EscapeNonASCIICharacters')) {
- $str = HTMLPurifier_Encoder::convertToASCIIDumbLossless($str);
+ $str = self::convertToASCIIDumbLossless($str);
+ }
+ if ($encoding === 'utf-8') {
+ return $str;
+ }
+ static $iconv = null;
+ if ($iconv === null) {
+ $iconv = self::iconvAvailable();
}
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
if ($iconv && !$config->get('Test.ForceNoIconv')) {
// Undo our previous fix in convertToUTF8, otherwise iconv will barf
- $ascii_fix = HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding);
+ $ascii_fix = self::testEncodingSupportsASCII($encoding);
if (!$escape && !empty($ascii_fix)) {
$clear_fix = array();
- foreach ($ascii_fix as $utf8 => $native) $clear_fix[$utf8] = '';
+ foreach ($ascii_fix as $utf8 => $native) {
+ $clear_fix[$utf8] = '';
+ }
$str = strtr($str, $clear_fix);
}
$str = strtr($str, array_flip($ascii_fix));
// Normal stuff
- $str = iconv('utf-8', $encoding . '//IGNORE', $str);
- restore_error_handler();
+ $str = self::iconv('utf-8', $encoding . '//IGNORE', $str);
return $str;
} elseif ($encoding === 'iso-8859-1') {
$str = utf8_decode($str);
- restore_error_handler();
return $str;
}
trigger_error('Encoding not supported', E_USER_ERROR);
+ // You might be tempted to assume that the ASCII representation
+ // might be OK, however, this is *not* universally true over all
+ // encodings. So we take the conservative route here, rather
+ // than forcibly turn on %Core.EscapeNonASCIICharacters
}
/**
* Lossless (character-wise) conversion of HTML to ASCII
- * @param $str UTF-8 string to be converted to ASCII
- * @returns ASCII encoded string with non-ASCII character entity-ized
+ * @param string $str UTF-8 string to be converted to ASCII
+ * @return string ASCII encoded string with non-ASCII character entity-ized
* @warning Adapted from MediaWiki, claiming fair use: this is a common
* algorithm. If you disagree with this license fudgery,
* implement it yourself.
@@ -342,27 +471,28 @@ class HTMLPurifier_Encoder
* @note Sort of with cleanUTF8() but it assumes that $str is
* well-formed UTF-8
*/
- public static function convertToASCIIDumbLossless($str) {
+ public static function convertToASCIIDumbLossless($str)
+ {
$bytesleft = 0;
$result = '';
$working = 0;
$len = strlen($str);
- for( $i = 0; $i < $len; $i++ ) {
- $bytevalue = ord( $str[$i] );
- if( $bytevalue <= 0x7F ) { //0xxx xxxx
- $result .= chr( $bytevalue );
+ for ($i = 0; $i < $len; $i++) {
+ $bytevalue = ord($str[$i]);
+ if ($bytevalue <= 0x7F) { //0xxx xxxx
+ $result .= chr($bytevalue);
$bytesleft = 0;
- } elseif( $bytevalue <= 0xBF ) { //10xx xxxx
+ } elseif ($bytevalue <= 0xBF) { //10xx xxxx
$working = $working << 6;
$working += ($bytevalue & 0x3F);
$bytesleft--;
- if( $bytesleft <= 0 ) {
+ if ($bytesleft <= 0) {
$result .= "&#" . $working . ";";
}
- } elseif( $bytevalue <= 0xDF ) { //110x xxxx
+ } elseif ($bytevalue <= 0xDF) { //110x xxxx
$working = $bytevalue & 0x1F;
$bytesleft = 1;
- } elseif( $bytevalue <= 0xEF ) { //1110 xxxx
+ } elseif ($bytevalue <= 0xEF) { //1110 xxxx
$working = $bytevalue & 0x0F;
$bytesleft = 2;
} else { //1111 0xxx
@@ -373,6 +503,54 @@ class HTMLPurifier_Encoder
return $result;
}
+ /** No bugs detected in iconv. */
+ const ICONV_OK = 0;
+
+ /** Iconv truncates output if converting from UTF-8 to another
+ * character set with //IGNORE, and a non-encodable character is found */
+ const ICONV_TRUNCATES = 1;
+
+ /** Iconv does not support //IGNORE, making it unusable for
+ * transcoding purposes */
+ const ICONV_UNUSABLE = 2;
+
+ /**
+ * glibc iconv has a known bug where it doesn't handle the magic
+ * //IGNORE stanza correctly. In particular, rather than ignore
+ * characters, it will return an EILSEQ after consuming some number
+ * of characters, and expect you to restart iconv as if it were
+ * an E2BIG. Old versions of PHP did not respect the errno, and
+ * returned the fragment, so as a result you would see iconv
+ * mysteriously truncating output. We can work around this by
+ * manually chopping our input into segments of about 8000
+ * characters, as long as PHP ignores the error code. If PHP starts
+ * paying attention to the error code, iconv becomes unusable.
+ *
+ * @return int Error code indicating severity of bug.
+ */
+ public static function testIconvTruncateBug()
+ {
+ static $code = null;
+ if ($code === null) {
+ // better not use iconv, otherwise infinite loop!
+ $r = self::unsafeIconv('utf-8', 'ascii//IGNORE', "\xCE\xB1" . str_repeat('a', 9000));
+ if ($r === false) {
+ $code = self::ICONV_UNUSABLE;
+ } elseif (($c = strlen($r)) < 9000) {
+ $code = self::ICONV_TRUNCATES;
+ } elseif ($c > 9000) {
+ trigger_error(
+ 'Your copy of iconv is extremely buggy. Please notify HTML Purifier maintainers: ' .
+ 'include your iconv version as per phpversion()',
+ E_USER_ERROR
+ );
+ } else {
+ $code = self::ICONV_OK;
+ }
+ }
+ return $code;
+ }
+
/**
* This expensive function tests whether or not a given character
* encoding supports ASCII. 7/8-bit encodings like Shift_JIS will
@@ -384,10 +562,18 @@ class HTMLPurifier_Encoder
* @return Array of UTF-8 characters to their corresponding ASCII,
* which can be used to "undo" any overzealous iconv action.
*/
- public static function testEncodingSupportsASCII($encoding, $bypass = false) {
+ public static function testEncodingSupportsASCII($encoding, $bypass = false)
+ {
+ // All calls to iconv here are unsafe, proof by case analysis:
+ // If ICONV_OK, no difference.
+ // If ICONV_TRUNCATE, all calls involve one character inputs,
+ // so bug is not triggered.
+ // If ICONV_UNUSABLE, this call is irrelevant
static $encodings = array();
if (!$bypass) {
- if (isset($encodings[$encoding])) return $encodings[$encoding];
+ if (isset($encodings[$encoding])) {
+ return $encodings[$encoding];
+ }
$lenc = strtolower($encoding);
switch ($lenc) {
case 'shift_jis':
@@ -395,32 +581,31 @@ class HTMLPurifier_Encoder
case 'johab':
return array("\xE2\x82\xA9" => '\\');
}
- if (strpos($lenc, 'iso-8859-') === 0) return array();
+ if (strpos($lenc, 'iso-8859-') === 0) {
+ return array();
+ }
}
$ret = array();
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
- if (iconv('UTF-8', $encoding, 'a') === false) return false;
+ if (self::unsafeIconv('UTF-8', $encoding, 'a') === false) {
+ return false;
+ }
for ($i = 0x20; $i <= 0x7E; $i++) { // all printable ASCII chars
$c = chr($i); // UTF-8 char
- $r = iconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion
- if (
- $r === '' ||
+ $r = self::unsafeIconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion
+ if ($r === '' ||
// This line is needed for iconv implementations that do not
// omit characters that do not exist in the target character set
- ($r === $c && iconv($encoding, 'UTF-8//IGNORE', $r) !== $c)
+ ($r === $c && self::unsafeIconv($encoding, 'UTF-8//IGNORE', $r) !== $c)
) {
// Reverse engineer: what's the UTF-8 equiv of this byte
// sequence? This assumes that there's no variable width
// encoding that doesn't support ASCII.
- $ret[iconv($encoding, 'UTF-8//IGNORE', $c)] = $c;
+ $ret[self::unsafeIconv($encoding, 'UTF-8//IGNORE', $c)] = $c;
}
}
- restore_error_handler();
$encodings[$encoding] = $ret;
return $ret;
}
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/EntityLookup.php b/library/HTMLPurifier/EntityLookup.php
index b4dfce94c..f12ff13a3 100644
--- a/library/HTMLPurifier/EntityLookup.php
+++ b/library/HTMLPurifier/EntityLookup.php
@@ -3,20 +3,23 @@
/**
* Object that provides entity lookup table from entity name to character
*/
-class HTMLPurifier_EntityLookup {
-
+class HTMLPurifier_EntityLookup
+{
/**
* Assoc array of entity name to character represented.
+ * @type array
*/
public $table;
/**
* Sets up the entity lookup table from the serialized file contents.
+ * @param bool $file
* @note The serialized contents are versioned, but were generated
* using the maintenance script generate_entity_file.php
* @warning This is not in constructor to help enforce the Singleton
*/
- public function setup($file = false) {
+ public function setup($file = false)
+ {
if (!$file) {
$file = HTMLPURIFIER_PREFIX . '/HTMLPurifier/EntityLookup/entities.ser';
}
@@ -25,9 +28,11 @@ class HTMLPurifier_EntityLookup {
/**
* Retrieves sole instance of the object.
- * @param Optional prototype of custom lookup table to overload with.
+ * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with.
+ * @return HTMLPurifier_EntityLookup
*/
- public static function instance($prototype = false) {
+ public static function instance($prototype = false)
+ {
// no references, since PHP doesn't copy unless modified
static $instance = null;
if ($prototype) {
@@ -38,7 +43,6 @@ class HTMLPurifier_EntityLookup {
}
return $instance;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/EntityLookup/entities.ser b/library/HTMLPurifier/EntityLookup/entities.ser
index f2b8b8f2d..e8b08128b 100644
--- a/library/HTMLPurifier/EntityLookup/entities.ser
+++ b/library/HTMLPurifier/EntityLookup/entities.ser
@@ -1 +1 @@
-a:246:{s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Á";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Å";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"Ì";s:6:"Iacute";s:2:"Í";s:5:"Icirc";s:2:"Î";s:4:"Iuml";s:2:"Ï";s:3:"ETH";s:2:"Ð";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ò";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ü";s:6:"Yacute";s:2:"Ý";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"å";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Œ";s:5:"oelig";s:2:"œ";s:6:"Scaron";s:2:"Š";s:6:"scaron";s:2:"š";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"˜";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"‍";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"‏";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"”";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"fnof";s:2:"ƒ";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Β";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Μ";s:2:"Nu";s:2:"Ν";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Υ";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"π";s:3:"rho";s:2:"ρ";s:6:"sigmaf";s:2:"ς";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"τ";s:7:"upsilon";s:2:"υ";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"ϑ";s:5:"upsih";s:2:"ϒ";s:3:"piv";s:2:"ϖ";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"⁄";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"ℑ";s:4:"real";s:3:"ℜ";s:5:"trade";s:3:"™";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"←";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"⇐";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"∏";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"∝";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"⋅";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"◊";s:6:"spades";s:3:"♠";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";} \ No newline at end of file
+a:253:{s:4:"fnof";s:2:"ƒ";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Β";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Μ";s:2:"Nu";s:2:"Ν";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Υ";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"π";s:3:"rho";s:2:"ρ";s:6:"sigmaf";s:2:"ς";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"τ";s:7:"upsilon";s:2:"υ";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"ϑ";s:5:"upsih";s:2:"ϒ";s:3:"piv";s:2:"ϖ";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"⁄";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"ℑ";s:4:"real";s:3:"ℜ";s:5:"trade";s:3:"™";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"←";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"⇐";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"∏";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"∝";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:6:"there4";s:3:"∴";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"⋅";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"◊";s:6:"spades";s:3:"♠";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Œ";s:5:"oelig";s:2:"œ";s:6:"Scaron";s:2:"Š";s:6:"scaron";s:2:"š";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"˜";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"‍";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"‏";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"”";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:4:"sup2";s:2:"²";s:4:"sup3";s:2:"³";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"sup1";s:2:"¹";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"frac14";s:2:"¼";s:6:"frac12";s:2:"½";s:6:"frac34";s:2:"¾";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Á";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Å";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"Ì";s:6:"Iacute";s:2:"Í";s:5:"Icirc";s:2:"Î";s:4:"Iuml";s:2:"Ï";s:3:"ETH";s:2:"Ð";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ò";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ü";s:6:"Yacute";s:2:"Ý";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"å";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";} \ No newline at end of file
diff --git a/library/HTMLPurifier/EntityParser.php b/library/HTMLPurifier/EntityParser.php
index 8c384472d..61529dcd9 100644
--- a/library/HTMLPurifier/EntityParser.php
+++ b/library/HTMLPurifier/EntityParser.php
@@ -12,19 +12,21 @@ class HTMLPurifier_EntityParser
/**
* Reference to entity lookup table.
+ * @type HTMLPurifier_EntityLookup
*/
protected $_entity_lookup;
/**
* Callback regex string for parsing entities.
+ * @type string
*/
protected $_substituteEntitiesRegex =
-'/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/';
-// 1. hex 2. dec 3. string (XML style)
-
+ '/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/';
+ // 1. hex 2. dec 3. string (XML style)
/**
* Decimal to parsed string conversion table for special entities.
+ * @type array
*/
protected $_special_dec2str =
array(
@@ -37,6 +39,7 @@ class HTMLPurifier_EntityParser
/**
* Stripped entity names to decimal conversion table for special entities.
+ * @type array
*/
protected $_special_ent2dec =
array(
@@ -51,41 +54,45 @@ class HTMLPurifier_EntityParser
* running this whenever you have parsed character is t3h 5uck, we run
* it before everything else.
*
- * @param $string String to have non-special entities parsed.
- * @returns Parsed string.
+ * @param string $string String to have non-special entities parsed.
+ * @return string Parsed string.
*/
- public function substituteNonSpecialEntities($string) {
+ public function substituteNonSpecialEntities($string)
+ {
// it will try to detect missing semicolons, but don't rely on it
return preg_replace_callback(
$this->_substituteEntitiesRegex,
array($this, 'nonSpecialEntityCallback'),
$string
- );
+ );
}
/**
* Callback function for substituteNonSpecialEntities() that does the work.
*
- * @param $matches PCRE matches array, with 0 the entire match, and
+ * @param array $matches PCRE matches array, with 0 the entire match, and
* either index 1, 2 or 3 set with a hex value, dec value,
* or string (respectively).
- * @returns Replacement string.
+ * @return string Replacement string.
*/
- protected function nonSpecialEntityCallback($matches) {
+ protected function nonSpecialEntityCallback($matches)
+ {
// replaces all but big five
$entity = $matches[0];
$is_num = (@$matches[0][1] === '#');
if ($is_num) {
$is_hex = (@$entity[2] === 'x');
$code = $is_hex ? hexdec($matches[1]) : (int) $matches[2];
-
// abort for special characters
- if (isset($this->_special_dec2str[$code])) return $entity;
-
+ if (isset($this->_special_dec2str[$code])) {
+ return $entity;
+ }
return HTMLPurifier_Encoder::unichr($code);
} else {
- if (isset($this->_special_ent2dec[$matches[3]])) return $entity;
+ if (isset($this->_special_ent2dec[$matches[3]])) {
+ return $entity;
+ }
if (!$this->_entity_lookup) {
$this->_entity_lookup = HTMLPurifier_EntityLookup::instance();
}
@@ -103,14 +110,16 @@ class HTMLPurifier_EntityParser
* @notice We try to avoid calling this function because otherwise, it
* would have to be called a lot (for every parsed section).
*
- * @param $string String to have non-special entities parsed.
- * @returns Parsed string.
+ * @param string $string String to have non-special entities parsed.
+ * @return string Parsed string.
*/
- public function substituteSpecialEntities($string) {
+ public function substituteSpecialEntities($string)
+ {
return preg_replace_callback(
$this->_substituteEntitiesRegex,
array($this, 'specialEntityCallback'),
- $string);
+ $string
+ );
}
/**
@@ -118,12 +127,13 @@ class HTMLPurifier_EntityParser
*
* This callback has same syntax as nonSpecialEntityCallback().
*
- * @param $matches PCRE-style matches array, with 0 the entire match, and
+ * @param array $matches PCRE-style matches array, with 0 the entire match, and
* either index 1, 2 or 3 set with a hex value, dec value,
* or string (respectively).
- * @returns Replacement string.
+ * @return string Replacement string.
*/
- protected function specialEntityCallback($matches) {
+ protected function specialEntityCallback($matches)
+ {
$entity = $matches[0];
$is_num = (@$matches[0][1] === '#');
if ($is_num) {
@@ -138,7 +148,6 @@ class HTMLPurifier_EntityParser
$entity;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ErrorCollector.php b/library/HTMLPurifier/ErrorCollector.php
index 6713eaf77..d47e3f2e2 100644
--- a/library/HTMLPurifier/ErrorCollector.php
+++ b/library/HTMLPurifier/ErrorCollector.php
@@ -16,16 +16,46 @@ class HTMLPurifier_ErrorCollector
const MESSAGE = 2;
const CHILDREN = 3;
+ /**
+ * @type array
+ */
protected $errors;
+
+ /**
+ * @type array
+ */
protected $_current;
+
+ /**
+ * @type array
+ */
protected $_stacks = array(array());
+
+ /**
+ * @type HTMLPurifier_Language
+ */
protected $locale;
+
+ /**
+ * @type HTMLPurifier_Generator
+ */
protected $generator;
+
+ /**
+ * @type HTMLPurifier_Context
+ */
protected $context;
+ /**
+ * @type array
+ */
protected $lines = array();
- public function __construct($context) {
+ /**
+ * @param HTMLPurifier_Context $context
+ */
+ public function __construct($context)
+ {
$this->locale =& $context->get('Locale');
$this->context = $context;
$this->_current =& $this->_stacks[0];
@@ -34,13 +64,11 @@ class HTMLPurifier_ErrorCollector
/**
* Sends an error message to the collector for later use
- * @param $severity int Error severity, PHP error style (don't use E_USER_)
- * @param $msg string Error message text
- * @param $subst1 string First substitution for $msg
- * @param $subst2 string ...
+ * @param int $severity Error severity, PHP error style (don't use E_USER_)
+ * @param string $msg Error message text
*/
- public function send($severity, $msg) {
-
+ public function send($severity, $msg)
+ {
$args = array();
if (func_num_args() > 2) {
$args = func_get_args();
@@ -50,7 +78,7 @@ class HTMLPurifier_ErrorCollector
$token = $this->context->get('CurrentToken', true);
$line = $token ? $token->line : $this->context->get('CurrentLine', true);
- $col = $token ? $token->col : $this->context->get('CurrentCol', true);
+ $col = $token ? $token->col : $this->context->get('CurrentCol', true);
$attr = $this->context->get('CurrentAttr', true);
// perform special substitutions, also add custom parameters
@@ -60,7 +88,9 @@ class HTMLPurifier_ErrorCollector
}
if (!is_null($attr)) {
$subst['$CurrentAttr.Name'] = $attr;
- if (isset($token->attr[$attr])) $subst['$CurrentAttr.Value'] = $token->attr[$attr];
+ if (isset($token->attr[$attr])) {
+ $subst['$CurrentAttr.Value'] = $token->attr[$attr];
+ }
}
if (empty($args)) {
@@ -69,7 +99,9 @@ class HTMLPurifier_ErrorCollector
$msg = $this->locale->formatMessage($msg, $args);
}
- if (!empty($subst)) $msg = strtr($msg, $subst);
+ if (!empty($subst)) {
+ $msg = strtr($msg, $subst);
+ }
// (numerically indexed)
$error = array(
@@ -80,16 +112,15 @@ class HTMLPurifier_ErrorCollector
);
$this->_current[] = $error;
-
// NEW CODE BELOW ...
-
- $struct = null;
// Top-level errors are either:
// TOKEN type, if $value is set appropriately, or
// "syntax" type, if $value is null
$new_struct = new HTMLPurifier_ErrorStruct();
$new_struct->type = HTMLPurifier_ErrorStruct::TOKEN;
- if ($token) $new_struct->value = clone $token;
+ if ($token) {
+ $new_struct->value = clone $token;
+ }
if (is_int($line) && is_int($col)) {
if (isset($this->lines[$line][$col])) {
$struct = $this->lines[$line][$col];
@@ -128,30 +159,34 @@ class HTMLPurifier_ErrorCollector
/**
* Retrieves raw error data for custom formatter to use
- * @param List of arrays in format of array(line of error,
- * error severity, error message,
- * recursive sub-errors array)
*/
- public function getRaw() {
+ public function getRaw()
+ {
return $this->errors;
}
/**
* Default HTML formatting implementation for error messages
- * @param $config Configuration array, vital for HTML output nature
- * @param $errors Errors array to display; used for recursion.
+ * @param HTMLPurifier_Config $config Configuration, vital for HTML output nature
+ * @param array $errors Errors array to display; used for recursion.
+ * @return string
*/
- public function getHTMLFormatted($config, $errors = null) {
+ public function getHTMLFormatted($config, $errors = null)
+ {
$ret = array();
$this->generator = new HTMLPurifier_Generator($config, $this->context);
- if ($errors === null) $errors = $this->errors;
+ if ($errors === null) {
+ $errors = $this->errors;
+ }
// 'At line' message needs to be removed
// generation code for new structure goes here. It needs to be recursive.
foreach ($this->lines as $line => $col_array) {
- if ($line == -1) continue;
+ if ($line == -1) {
+ continue;
+ }
foreach ($col_array as $col => $struct) {
$this->_renderStruct($ret, $struct, $line, $col);
}
@@ -168,7 +203,8 @@ class HTMLPurifier_ErrorCollector
}
- private function _renderStruct(&$ret, $struct, $line = null, $col = null) {
+ private function _renderStruct(&$ret, $struct, $line = null, $col = null)
+ {
$stack = array($struct);
$context_stack = array(array());
while ($current = array_pop($stack)) {
@@ -194,7 +230,7 @@ class HTMLPurifier_ErrorCollector
//$string .= '</pre>';
$ret[] = $string;
}
- foreach ($current->children as $type => $array) {
+ foreach ($current->children as $array) {
$context[] = $current;
$stack = array_merge($stack, array_reverse($array, true));
for ($i = count($array); $i > 0; $i--) {
@@ -203,7 +239,6 @@ class HTMLPurifier_ErrorCollector
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ErrorStruct.php b/library/HTMLPurifier/ErrorStruct.php
index 9bc8996ec..cf869d321 100644
--- a/library/HTMLPurifier/ErrorStruct.php
+++ b/library/HTMLPurifier/ErrorStruct.php
@@ -19,6 +19,7 @@ class HTMLPurifier_ErrorStruct
/**
* Type of this struct.
+ * @type string
*/
public $type;
@@ -28,11 +29,13 @@ class HTMLPurifier_ErrorStruct
* - TOKEN: Instance of HTMLPurifier_Token
* - ATTR: array('attr-name', 'value')
* - CSSPROP: array('prop-name', 'value')
+ * @type mixed
*/
public $value;
/**
* Errors registered for this structure.
+ * @type array
*/
public $errors = array();
@@ -40,10 +43,17 @@ class HTMLPurifier_ErrorStruct
* Child ErrorStructs that are from this structure. For example, a TOKEN
* ErrorStruct would contain ATTR ErrorStructs. This is a multi-dimensional
* array in structure: [TYPE]['identifier']
+ * @type array
*/
public $children = array();
- public function getChild($type, $id) {
+ /**
+ * @param string $type
+ * @param string $id
+ * @return mixed
+ */
+ public function getChild($type, $id)
+ {
if (!isset($this->children[$type][$id])) {
$this->children[$type][$id] = new HTMLPurifier_ErrorStruct();
$this->children[$type][$id]->type = $type;
@@ -51,10 +61,14 @@ class HTMLPurifier_ErrorStruct
return $this->children[$type][$id];
}
- public function addError($severity, $message) {
+ /**
+ * @param int $severity
+ * @param string $message
+ */
+ public function addError($severity, $message)
+ {
$this->errors[] = array($severity, $message);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter.php b/library/HTMLPurifier/Filter.php
index 9a0e7b09f..c1f41ee16 100644
--- a/library/HTMLPurifier/Filter.php
+++ b/library/HTMLPurifier/Filter.php
@@ -23,24 +23,34 @@ class HTMLPurifier_Filter
{
/**
- * Name of the filter for identification purposes
+ * Name of the filter for identification purposes.
+ * @type string
*/
public $name;
/**
* Pre-processor function, handles HTML before HTML Purifier
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public function preFilter($html, $config, $context) {
+ public function preFilter($html, $config, $context)
+ {
return $html;
}
/**
* Post-processor function, handles HTML after HTML Purifier
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public function postFilter($html, $config, $context) {
+ public function postFilter($html, $config, $context)
+ {
return $html;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
index bbf78a663..08e62c16b 100644
--- a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
+++ b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
@@ -1,5 +1,13 @@
<?php
+// why is this a top level function? Because PHP 5.2.0 doesn't seem to
+// understand how to interpret this filter if it's a static method.
+// It's all really silly, but if we go this route it might be reasonable
+// to coalesce all of these methods into one.
+function htmlpurifier_filter_extractstyleblocks_muteerrorhandler()
+{
+}
+
/**
* This filter extracts <style> blocks from input HTML, cleans them up
* using CSSTidy, and then places them in $purifier->context->get('StyleBlocks')
@@ -16,30 +24,77 @@
*/
class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
{
-
+ /**
+ * @type string
+ */
public $name = 'ExtractStyleBlocks';
+
+ /**
+ * @type array
+ */
private $_styleMatches = array();
+
+ /**
+ * @type csstidy
+ */
private $_tidy;
- public function __construct() {
+ /**
+ * @type HTMLPurifier_AttrDef_HTML_ID
+ */
+ private $_id_attrdef;
+
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Ident
+ */
+ private $_class_attrdef;
+
+ /**
+ * @type HTMLPurifier_AttrDef_Enum
+ */
+ private $_enum_attrdef;
+
+ public function __construct()
+ {
$this->_tidy = new csstidy();
+ $this->_tidy->set_cfg('lowercase_s', false);
+ $this->_id_attrdef = new HTMLPurifier_AttrDef_HTML_ID(true);
+ $this->_class_attrdef = new HTMLPurifier_AttrDef_CSS_Ident();
+ $this->_enum_attrdef = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'first-child',
+ 'link',
+ 'visited',
+ 'active',
+ 'hover',
+ 'focus'
+ )
+ );
}
/**
* Save the contents of CSS blocks to style matches
- * @param $matches preg_replace style $matches array
+ * @param array $matches preg_replace style $matches array
*/
- protected function styleCallback($matches) {
+ protected function styleCallback($matches)
+ {
$this->_styleMatches[] = $matches[1];
}
/**
* Removes inline <style> tags from HTML, saves them for later use
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @todo Extend to indicate non-text/css style blocks
*/
- public function preFilter($html, $config, $context) {
+ public function preFilter($html, $config, $context)
+ {
$tidy = $config->get('Filter.ExtractStyleBlocks.TidyImpl');
- if ($tidy !== null) $this->_tidy = $tidy;
+ if ($tidy !== null) {
+ $this->_tidy = $tidy;
+ }
$html = preg_replace_callback('#<style(?:\s.*)?>(.+)</style>#isU', array($this, 'styleCallback'), $html);
$style_blocks = $this->_styleMatches;
$this->_styleMatches = array(); // reset
@@ -55,12 +110,14 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
/**
* Takes CSS (the stuff found in <style>) and cleans it.
* @warning Requires CSSTidy <http://csstidy.sourceforge.net/>
- * @param $css CSS styling to clean
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Cleaned CSS
+ * @param string $css CSS styling to clean
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @throws HTMLPurifier_Exception
+ * @return string Cleaned CSS
*/
- public function cleanCSS($css, $config, $context) {
+ public function cleanCSS($css, $config, $context)
+ {
// prepare scope
$scope = $config->get('Filter.ExtractStyleBlocks.Scope');
if ($scope !== null) {
@@ -77,27 +134,170 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
$css = substr($css, 0, -3);
}
$css = trim($css);
+ set_error_handler('htmlpurifier_filter_extractstyleblocks_muteerrorhandler');
$this->_tidy->parse($css);
+ restore_error_handler();
$css_definition = $config->getDefinition('CSS');
+ $html_definition = $config->getDefinition('HTML');
+ $new_css = array();
foreach ($this->_tidy->css as $k => $decls) {
// $decls are all CSS declarations inside an @ selector
$new_decls = array();
foreach ($decls as $selector => $style) {
$selector = trim($selector);
- if ($selector === '') continue; // should not happen
- if ($selector[0] === '+') {
- if ($selector !== '' && $selector[0] === '+') continue;
- }
- if (!empty($scopes)) {
- $new_selector = array(); // because multiple ones are possible
- $selectors = array_map('trim', explode(',', $selector));
- foreach ($scopes as $s1) {
- foreach ($selectors as $s2) {
- $new_selector[] = "$s1 $s2";
+ if ($selector === '') {
+ continue;
+ } // should not happen
+ // Parse the selector
+ // Here is the relevant part of the CSS grammar:
+ //
+ // ruleset
+ // : selector [ ',' S* selector ]* '{' ...
+ // selector
+ // : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]?
+ // combinator
+ // : '+' S*
+ // : '>' S*
+ // simple_selector
+ // : element_name [ HASH | class | attrib | pseudo ]*
+ // | [ HASH | class | attrib | pseudo ]+
+ // element_name
+ // : IDENT | '*'
+ // ;
+ // class
+ // : '.' IDENT
+ // ;
+ // attrib
+ // : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S*
+ // [ IDENT | STRING ] S* ]? ']'
+ // ;
+ // pseudo
+ // : ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ]
+ // ;
+ //
+ // For reference, here are the relevant tokens:
+ //
+ // HASH #{name}
+ // IDENT {ident}
+ // INCLUDES ==
+ // DASHMATCH |=
+ // STRING {string}
+ // FUNCTION {ident}\(
+ //
+ // And the lexical scanner tokens
+ //
+ // name {nmchar}+
+ // nmchar [_a-z0-9-]|{nonascii}|{escape}
+ // nonascii [\240-\377]
+ // escape {unicode}|\\[^\r\n\f0-9a-f]
+ // unicode \\{h}}{1,6}(\r\n|[ \t\r\n\f])?
+ // ident -?{nmstart}{nmchar*}
+ // nmstart [_a-z]|{nonascii}|{escape}
+ // string {string1}|{string2}
+ // string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
+ // string2 \'([^\n\r\f\\"]|\\{nl}|{escape})*\'
+ //
+ // We'll implement a subset (in order to reduce attack
+ // surface); in particular:
+ //
+ // - No Unicode support
+ // - No escapes support
+ // - No string support (by proxy no attrib support)
+ // - element_name is matched against allowed
+ // elements (some people might find this
+ // annoying...)
+ // - Pseudo-elements one of :first-child, :link,
+ // :visited, :active, :hover, :focus
+
+ // handle ruleset
+ $selectors = array_map('trim', explode(',', $selector));
+ $new_selectors = array();
+ foreach ($selectors as $sel) {
+ // split on +, > and spaces
+ $basic_selectors = preg_split('/\s*([+> ])\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE);
+ // even indices are chunks, odd indices are
+ // delimiters
+ $nsel = null;
+ $delim = null; // guaranteed to be non-null after
+ // two loop iterations
+ for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) {
+ $x = $basic_selectors[$i];
+ if ($i % 2) {
+ // delimiter
+ if ($x === ' ') {
+ $delim = ' ';
+ } else {
+ $delim = ' ' . $x . ' ';
+ }
+ } else {
+ // simple selector
+ $components = preg_split('/([#.:])/', $x, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $sdelim = null;
+ $nx = null;
+ for ($j = 0, $cc = count($components); $j < $cc; $j++) {
+ $y = $components[$j];
+ if ($j === 0) {
+ if ($y === '*' || isset($html_definition->info[$y = strtolower($y)])) {
+ $nx = $y;
+ } else {
+ // $nx stays null; this matters
+ // if we don't manage to find
+ // any valid selector content,
+ // in which case we ignore the
+ // outer $delim
+ }
+ } elseif ($j % 2) {
+ // set delimiter
+ $sdelim = $y;
+ } else {
+ $attrdef = null;
+ if ($sdelim === '#') {
+ $attrdef = $this->_id_attrdef;
+ } elseif ($sdelim === '.') {
+ $attrdef = $this->_class_attrdef;
+ } elseif ($sdelim === ':') {
+ $attrdef = $this->_enum_attrdef;
+ } else {
+ throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split');
+ }
+ $r = $attrdef->validate($y, $config, $context);
+ if ($r !== false) {
+ if ($r !== true) {
+ $y = $r;
+ }
+ if ($nx === null) {
+ $nx = '';
+ }
+ $nx .= $sdelim . $y;
+ }
+ }
+ }
+ if ($nx !== null) {
+ if ($nsel === null) {
+ $nsel = $nx;
+ } else {
+ $nsel .= $delim . $nx;
+ }
+ } else {
+ // delimiters to the left of invalid
+ // basic selector ignored
+ }
+ }
+ }
+ if ($nsel !== null) {
+ if (!empty($scopes)) {
+ foreach ($scopes as $s) {
+ $new_selectors[] = "$s $nsel";
+ }
+ } else {
+ $new_selectors[] = $nsel;
}
}
- $selector = implode(', ', $new_selector); // now it's a string
}
+ if (empty($new_selectors)) {
+ continue;
+ }
+ $selector = implode(', ', $new_selectors);
foreach ($style as $name => $value) {
if (!isset($css_definition->info[$name])) {
unset($style[$name]);
@@ -105,15 +305,19 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
}
$def = $css_definition->info[$name];
$ret = $def->validate($value, $config, $context);
- if ($ret === false) unset($style[$name]);
- else $style[$name] = $ret;
+ if ($ret === false) {
+ unset($style[$name]);
+ } else {
+ $style[$name] = $ret;
+ }
}
$new_decls[$selector] = $style;
}
- $this->_tidy->css[$k] = $new_decls;
+ $new_css[$k] = $new_decls;
}
// remove stuff that shouldn't be used, could be reenabled
// after security risks are analyzed
+ $this->_tidy->css = $new_css;
$this->_tidy->import = array();
$this->_tidy->charset = null;
$this->_tidy->namespace = null;
@@ -122,14 +326,13 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
// that no funny business occurs (i.e. </style> in a font-family prop).
if ($config->get('Filter.ExtractStyleBlocks.Escaping')) {
$css = str_replace(
- array('<', '>', '&'),
+ array('<', '>', '&'),
array('\3C ', '\3E ', '\26 '),
$css
);
}
return $css;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter/YouTube.php b/library/HTMLPurifier/Filter/YouTube.php
index 23df221ea..411519ad6 100644
--- a/library/HTMLPurifier/Filter/YouTube.php
+++ b/library/HTMLPurifier/Filter/YouTube.php
@@ -3,36 +3,62 @@
class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter
{
+ /**
+ * @type string
+ */
public $name = 'YouTube';
- public function preFilter($html, $config, $context) {
- $pre_regex = '#<object[^>]+>.+?'.
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function preFilter($html, $config, $context)
+ {
+ $pre_regex = '#<object[^>]+>.+?' .
'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s';
$pre_replace = '<span class="youtube-embed">\1</span>';
return preg_replace($pre_regex, $pre_replace, $html);
}
- public function postFilter($html, $config, $context) {
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function postFilter($html, $config, $context)
+ {
$post_regex = '#<span class="youtube-embed">((?:v|cp)/[A-Za-z0-9\-_=]+)</span>#';
return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
}
- protected function armorUrl($url) {
+ /**
+ * @param $url
+ * @return string
+ */
+ protected function armorUrl($url)
+ {
return str_replace('--', '-&#45;', $url);
}
- protected function postFilterCallback($matches) {
+ /**
+ * @param array $matches
+ * @return string
+ */
+ protected function postFilterCallback($matches)
+ {
$url = $this->armorUrl($matches[1]);
- return '<object width="425" height="350" type="application/x-shockwave-flash" '.
- 'data="http://www.youtube.com/'.$url.'">'.
- '<param name="movie" value="http://www.youtube.com/'.$url.'"></param>'.
- '<!--[if IE]>'.
- '<embed src="http://www.youtube.com/'.$url.'"'.
- 'type="application/x-shockwave-flash"'.
- 'wmode="transparent" width="425" height="350" />'.
- '<![endif]-->'.
- '</object>';
-
+ return '<object width="425" height="350" type="application/x-shockwave-flash" ' .
+ 'data="http://www.youtube.com/' . $url . '">' .
+ '<param name="movie" value="http://www.youtube.com/' . $url . '"></param>' .
+ '<!--[if IE]>' .
+ '<embed src="http://www.youtube.com/' . $url . '"' .
+ 'type="application/x-shockwave-flash"' .
+ 'wmode="transparent" width="425" height="350" />' .
+ '<![endif]-->' .
+ '</object>';
}
}
diff --git a/library/HTMLPurifier/Generator.php b/library/HTMLPurifier/Generator.php
index 4a6241727..6fb568714 100644
--- a/library/HTMLPurifier/Generator.php
+++ b/library/HTMLPurifier/Generator.php
@@ -11,49 +11,64 @@ class HTMLPurifier_Generator
{
/**
- * Whether or not generator should produce XML output
+ * Whether or not generator should produce XML output.
+ * @type bool
*/
private $_xhtml = true;
/**
- * :HACK: Whether or not generator should comment the insides of <script> tags
+ * :HACK: Whether or not generator should comment the insides of <script> tags.
+ * @type bool
*/
private $_scriptFix = false;
/**
* Cache of HTMLDefinition during HTML output to determine whether or
* not attributes should be minimized.
+ * @type HTMLPurifier_HTMLDefinition
*/
private $_def;
/**
- * Cache of %Output.SortAttr
+ * Cache of %Output.SortAttr.
+ * @type bool
*/
private $_sortAttr;
/**
- * Cache of %Output.FlashCompat
+ * Cache of %Output.FlashCompat.
+ * @type bool
*/
private $_flashCompat;
/**
+ * Cache of %Output.FixInnerHTML.
+ * @type bool
+ */
+ private $_innerHTMLFix;
+
+ /**
* Stack for keeping track of object information when outputting IE
* compatibility code.
+ * @type array
*/
private $_flashStack = array();
/**
* Configuration for the generator
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
*/
- public function __construct($config, $context) {
+ public function __construct($config, $context)
+ {
$this->config = $config;
$this->_scriptFix = $config->get('Output.CommentScriptContents');
+ $this->_innerHTMLFix = $config->get('Output.FixInnerHTML');
$this->_sortAttr = $config->get('Output.SortAttr');
$this->_flashCompat = $config->get('Output.FlashCompat');
$this->_def = $config->getHTMLDefinition();
@@ -62,12 +77,14 @@ class HTMLPurifier_Generator
/**
* Generates HTML from an array of tokens.
- * @param $tokens Array of HTMLPurifier_Token
- * @param $config HTMLPurifier_Config object
- * @return Generated HTML
+ * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token
+ * @return string Generated HTML
*/
- public function generateFromTokens($tokens) {
- if (!$tokens) return '';
+ public function generateFromTokens($tokens)
+ {
+ if (!$tokens) {
+ return '';
+ }
// Basic algorithm
$html = '';
@@ -86,30 +103,41 @@ class HTMLPurifier_Generator
// Tidy cleanup
if (extension_loaded('tidy') && $this->config->get('Output.TidyFormat')) {
$tidy = new Tidy;
- $tidy->parseString($html, array(
- 'indent'=> true,
- 'output-xhtml' => $this->_xhtml,
- 'show-body-only' => true,
- 'indent-spaces' => 2,
- 'wrap' => 68,
- ), 'utf8');
+ $tidy->parseString(
+ $html,
+ array(
+ 'indent'=> true,
+ 'output-xhtml' => $this->_xhtml,
+ 'show-body-only' => true,
+ 'indent-spaces' => 2,
+ 'wrap' => 68,
+ ),
+ 'utf8'
+ );
$tidy->cleanRepair();
$html = (string) $tidy; // explicit cast necessary
}
// Normalize newlines to system defined value
- $nl = $this->config->get('Output.Newline');
- if ($nl === null) $nl = PHP_EOL;
- if ($nl !== "\n") $html = str_replace("\n", $nl, $html);
+ if ($this->config->get('Core.NormalizeNewlines')) {
+ $nl = $this->config->get('Output.Newline');
+ if ($nl === null) {
+ $nl = PHP_EOL;
+ }
+ if ($nl !== "\n") {
+ $html = str_replace("\n", $nl, $html);
+ }
+ }
return $html;
}
/**
* Generates HTML from a single token.
- * @param $token HTMLPurifier_Token object.
- * @return Generated HTML
+ * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
+ * @return string Generated HTML
*/
- public function generateFromToken($token) {
+ public function generateFromToken($token)
+ {
if (!$token instanceof HTMLPurifier_Token) {
trigger_error('Cannot generate HTML from non-HTMLPurifier_Token object', E_USER_WARNING);
return '';
@@ -130,19 +158,7 @@ class HTMLPurifier_Generator
$_extra = '';
if ($this->_flashCompat) {
if ($token->name == "object" && !empty($this->_flashStack)) {
- $flash = array_pop($this->_flashStack);
- $compat_token = new HTMLPurifier_Token_Empty("embed");
- foreach ($flash->attr as $name => $val) {
- if ($name == "classid") continue;
- if ($name == "type") continue;
- if ($name == "data") $name = "src";
- $compat_token->attr[$name] = $val;
- }
- foreach ($flash->param as $name => $val) {
- if ($name == "movie") $name = "src";
- $compat_token->attr[$name] = $val;
- }
- $_extra = "<!--[if IE]>".$this->generateFromToken($compat_token)."<![endif]-->";
+ // doesn't do anything for now
}
}
return $_extra . '</' . $token->name . '>';
@@ -169,11 +185,16 @@ class HTMLPurifier_Generator
/**
* Special case processor for the contents of script tags
+ * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
+ * @return string
* @warning This runs into problems if there's already a literal
* --> somewhere inside the script contents.
*/
- public function generateScriptFromToken($token) {
- if (!$token instanceof HTMLPurifier_Token_Text) return $this->generateFromToken($token);
+ public function generateScriptFromToken($token)
+ {
+ if (!$token instanceof HTMLPurifier_Token_Text) {
+ return $this->generateFromToken($token);
+ }
// Thanks <http://lachy.id.au/log/2005/05/script-comments>
$data = preg_replace('#//\s*$#', '', $token->data);
return '<!--//--><![CDATA[//><!--' . "\n" . trim($data) . "\n" . '//--><!]]>';
@@ -182,24 +203,60 @@ class HTMLPurifier_Generator
/**
* Generates attribute declarations from attribute array.
* @note This does not include the leading or trailing space.
- * @param $assoc_array_of_attributes Attribute array
- * @param $element Name of element attributes are for, used to check
+ * @param array $assoc_array_of_attributes Attribute array
+ * @param string $element Name of element attributes are for, used to check
* attribute minimization.
- * @return Generate HTML fragment for insertion.
+ * @return string Generated HTML fragment for insertion.
*/
- public function generateAttributes($assoc_array_of_attributes, $element = false) {
+ public function generateAttributes($assoc_array_of_attributes, $element = '')
+ {
$html = '';
- if ($this->_sortAttr) ksort($assoc_array_of_attributes);
+ if ($this->_sortAttr) {
+ ksort($assoc_array_of_attributes);
+ }
foreach ($assoc_array_of_attributes as $key => $value) {
if (!$this->_xhtml) {
// Remove namespaced attributes
- if (strpos($key, ':') !== false) continue;
+ if (strpos($key, ':') !== false) {
+ continue;
+ }
// Check if we should minimize the attribute: val="val" -> val
if ($element && !empty($this->_def->info[$element]->attr[$key]->minimized)) {
$html .= $key . ' ';
continue;
}
}
+ // Workaround for Internet Explorer innerHTML bug.
+ // Essentially, Internet Explorer, when calculating
+ // innerHTML, omits quotes if there are no instances of
+ // angled brackets, quotes or spaces. However, when parsing
+ // HTML (for example, when you assign to innerHTML), it
+ // treats backticks as quotes. Thus,
+ // <img alt="``" />
+ // becomes
+ // <img alt=`` />
+ // becomes
+ // <img alt='' />
+ // Fortunately, all we need to do is trigger an appropriate
+ // quoting style, which we do by adding an extra space.
+ // This also is consistent with the W3C spec, which states
+ // that user agents may ignore leading or trailing
+ // whitespace (in fact, most don't, at least for attributes
+ // like alt, but an extra space at the end is barely
+ // noticeable). Still, we have a configuration knob for
+ // this, since this transformation is not necesary if you
+ // don't process user input with innerHTML or you don't plan
+ // on supporting Internet Explorer.
+ if ($this->_innerHTMLFix) {
+ if (strpos($value, '`') !== false) {
+ // check if correct quoting style would not already be
+ // triggered
+ if (strcspn($value, '"\' <>') === strlen($value)) {
+ // protect!
+ $value .= ' ';
+ }
+ }
+ }
$html .= $key.'="'.$this->escape($value).'" ';
}
return rtrim($html);
@@ -210,15 +267,20 @@ class HTMLPurifier_Generator
* @todo This really ought to be protected, but until we have a facility
* for properly generating HTML here w/o using tokens, it stays
* public.
- * @param $string String data to escape for HTML.
- * @param $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is
+ * @param string $string String data to escape for HTML.
+ * @param int $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is
* permissible for non-attribute output.
- * @return String escaped data.
+ * @return string escaped data.
*/
- public function escape($string, $quote = ENT_COMPAT) {
+ public function escape($string, $quote = null)
+ {
+ // Workaround for APC bug on Mac Leopard reported by sidepodcast
+ // http://htmlpurifier.org/phorum/read.php?3,4823,4846
+ if ($quote === null) {
+ $quote = ENT_COMPAT;
+ }
return htmlspecialchars($string, $quote, 'UTF-8');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLDefinition.php b/library/HTMLPurifier/HTMLDefinition.php
index c99ac11eb..9b7b334dd 100644
--- a/library/HTMLPurifier/HTMLDefinition.php
+++ b/library/HTMLPurifier/HTMLDefinition.php
@@ -29,60 +29,71 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
// FULLY-PUBLIC VARIABLES ---------------------------------------------
/**
- * Associative array of element names to HTMLPurifier_ElementDef
+ * Associative array of element names to HTMLPurifier_ElementDef.
+ * @type HTMLPurifier_ElementDef[]
*/
public $info = array();
/**
* Associative array of global attribute name to attribute definition.
+ * @type array
*/
public $info_global_attr = array();
/**
* String name of parent element HTML will be going into.
+ * @type string
*/
public $info_parent = 'div';
/**
* Definition for parent element, allows parent element to be a
* tag that's not allowed inside the HTML fragment.
+ * @type HTMLPurifier_ElementDef
*/
public $info_parent_def;
/**
- * String name of element used to wrap inline elements in block context
+ * String name of element used to wrap inline elements in block context.
+ * @type string
* @note This is rarely used except for BLOCKQUOTEs in strict mode
*/
public $info_block_wrapper = 'p';
/**
- * Associative array of deprecated tag name to HTMLPurifier_TagTransform
+ * Associative array of deprecated tag name to HTMLPurifier_TagTransform.
+ * @type array
*/
public $info_tag_transform = array();
/**
* Indexed list of HTMLPurifier_AttrTransform to be performed before validation.
+ * @type HTMLPurifier_AttrTransform[]
*/
public $info_attr_transform_pre = array();
/**
* Indexed list of HTMLPurifier_AttrTransform to be performed after validation.
+ * @type HTMLPurifier_AttrTransform[]
*/
public $info_attr_transform_post = array();
/**
* Nested lookup array of content set name (Block, Inline) to
* element name to whether or not it belongs in that content set.
+ * @type array
*/
public $info_content_sets = array();
/**
* Indexed list of HTMLPurifier_Injector to be used.
+ * @type HTMLPurifier_Injector[]
*/
public $info_injector = array();
/**
* Doctype object
+ * @type HTMLPurifier_Doctype
*/
public $doctype;
@@ -94,12 +105,13 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* Adds a custom attribute to a pre-existing element
* @note This is strictly convenience, and does not have a corresponding
* method in HTMLPurifier_HTMLModule
- * @param $element_name String element name to add attribute to
- * @param $attr_name String name of attribute
- * @param $def Attribute definition, can be string or object, see
+ * @param string $element_name Element name to add attribute to
+ * @param string $attr_name Name of attribute
+ * @param mixed $def Attribute definition, can be string or object, see
* HTMLPurifier_AttrTypes for details
*/
- public function addAttribute($element_name, $attr_name, $def) {
+ public function addAttribute($element_name, $attr_name, $def)
+ {
$module = $this->getAnonymousModule();
if (!isset($module->info[$element_name])) {
$element = $module->addBlankElement($element_name);
@@ -111,10 +123,11 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Adds a custom element to your HTML definition
- * @note See HTMLPurifier_HTMLModule::addElement for detailed
+ * @see HTMLPurifier_HTMLModule::addElement() for detailed
* parameter and return value descriptions.
*/
- public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array()) {
+ public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array())
+ {
$module = $this->getAnonymousModule();
// assume that if the user is calling this, the element
// is safe. This may not be a good idea
@@ -125,10 +138,13 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Adds a blank element to your HTML definition, for overriding
* existing behavior
- * @note See HTMLPurifier_HTMLModule::addBlankElement for detailed
+ * @param string $element_name
+ * @return HTMLPurifier_ElementDef
+ * @see HTMLPurifier_HTMLModule::addBlankElement() for detailed
* parameter and return value descriptions.
*/
- public function addBlankElement($element_name) {
+ public function addBlankElement($element_name)
+ {
$module = $this->getAnonymousModule();
$element = $module->addBlankElement($element_name);
return $element;
@@ -138,8 +154,10 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* Retrieves a reference to the anonymous module, so you can
* bust out advanced features without having to make your own
* module.
+ * @return HTMLPurifier_HTMLModule
*/
- public function getAnonymousModule() {
+ public function getAnonymousModule()
+ {
if (!$this->_anonModule) {
$this->_anonModule = new HTMLPurifier_HTMLModule();
$this->_anonModule->name = 'Anonymous';
@@ -147,22 +165,33 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
return $this->_anonModule;
}
- private $_anonModule;
-
+ private $_anonModule = null;
// PUBLIC BUT INTERNAL VARIABLES --------------------------------------
+ /**
+ * @type string
+ */
public $type = 'HTML';
- public $manager; /**< Instance of HTMLPurifier_HTMLModuleManager */
+
+ /**
+ * @type HTMLPurifier_HTMLModuleManager
+ */
+ public $manager;
/**
* Performs low-cost, preliminary initialization.
*/
- public function __construct() {
+ public function __construct()
+ {
$this->manager = new HTMLPurifier_HTMLModuleManager();
}
- protected function doSetup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetup($config)
+ {
$this->processModules($config);
$this->setupConfigStuff($config);
unset($this->manager);
@@ -176,9 +205,10 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Extract out the information from the manager
+ * @param HTMLPurifier_Config $config
*/
- protected function processModules($config) {
-
+ protected function processModules($config)
+ {
if ($this->_anonModule) {
// for user specific changes
// this is late-loaded so we don't have to deal with PHP4
@@ -191,40 +221,53 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$this->doctype = $this->manager->doctype;
foreach ($this->manager->modules as $module) {
- foreach($module->info_tag_transform as $k => $v) {
- if ($v === false) unset($this->info_tag_transform[$k]);
- else $this->info_tag_transform[$k] = $v;
+ foreach ($module->info_tag_transform as $k => $v) {
+ if ($v === false) {
+ unset($this->info_tag_transform[$k]);
+ } else {
+ $this->info_tag_transform[$k] = $v;
+ }
}
- foreach($module->info_attr_transform_pre as $k => $v) {
- if ($v === false) unset($this->info_attr_transform_pre[$k]);
- else $this->info_attr_transform_pre[$k] = $v;
+ foreach ($module->info_attr_transform_pre as $k => $v) {
+ if ($v === false) {
+ unset($this->info_attr_transform_pre[$k]);
+ } else {
+ $this->info_attr_transform_pre[$k] = $v;
+ }
}
- foreach($module->info_attr_transform_post as $k => $v) {
- if ($v === false) unset($this->info_attr_transform_post[$k]);
- else $this->info_attr_transform_post[$k] = $v;
+ foreach ($module->info_attr_transform_post as $k => $v) {
+ if ($v === false) {
+ unset($this->info_attr_transform_post[$k]);
+ } else {
+ $this->info_attr_transform_post[$k] = $v;
+ }
}
foreach ($module->info_injector as $k => $v) {
- if ($v === false) unset($this->info_injector[$k]);
- else $this->info_injector[$k] = $v;
+ if ($v === false) {
+ unset($this->info_injector[$k]);
+ } else {
+ $this->info_injector[$k] = $v;
+ }
}
}
-
$this->info = $this->manager->getElements();
$this->info_content_sets = $this->manager->contentSets->lookup;
-
}
/**
* Sets up stuff based on config. We need a better way of doing this.
+ * @param HTMLPurifier_Config $config
*/
- protected function setupConfigStuff($config) {
-
+ protected function setupConfigStuff($config)
+ {
$block_wrapper = $config->get('HTML.BlockWrapper');
if (isset($this->info_content_sets['Block'][$block_wrapper])) {
$this->info_block_wrapper = $block_wrapper;
} else {
- trigger_error('Cannot use non-block element as block wrapper',
- E_USER_ERROR);
+ trigger_error(
+ 'Cannot use non-block element as block wrapper',
+ E_USER_ERROR
+ );
}
$parent = $config->get('HTML.Parent');
@@ -233,14 +276,15 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$this->info_parent = $parent;
$this->info_parent_def = $def;
} else {
- trigger_error('Cannot use unrecognized element as parent',
- E_USER_ERROR);
+ trigger_error(
+ 'Cannot use unrecognized element as parent',
+ E_USER_ERROR
+ );
$this->info_parent_def = $this->manager->getElement($this->info_parent, true);
}
// support template text
- $support = "(for information on implementing this, see the ".
- "support forums) ";
+ $support = "(for information on implementing this, see the support forums) ";
// setup allowed elements -----------------------------------------
@@ -256,7 +300,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
if (is_array($allowed_elements)) {
foreach ($this->info as $name => $d) {
- if(!isset($allowed_elements[$name])) unset($this->info[$name]);
+ if (!isset($allowed_elements[$name])) {
+ unset($this->info[$name]);
+ }
unset($allowed_elements[$name]);
}
// emit errors
@@ -270,7 +316,6 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$allowed_attributes_mutable = $allowed_attributes; // by copy!
if (is_array($allowed_attributes)) {
-
// This actually doesn't do anything, since we went away from
// global attributes. It's possible that userland code uses
// it, but HTMLModuleManager doesn't!
@@ -285,7 +330,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
unset($allowed_attributes_mutable[$key]);
}
}
- if ($delete) unset($this->info_global_attr[$attr]);
+ if ($delete) {
+ unset($this->info_global_attr[$attr]);
+ }
}
foreach ($this->info as $tag => $info) {
@@ -300,7 +347,16 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
unset($allowed_attributes_mutable[$key]);
}
}
- if ($delete) unset($this->info[$tag]->attr[$attr]);
+ if ($delete) {
+ if ($this->info[$tag]->attr[$attr]->required) {
+ trigger_error(
+ "Required attribute '$attr' in element '$tag' " .
+ "was not allowed, which means '$tag' will not be allowed either",
+ E_USER_WARNING
+ );
+ }
+ unset($this->info[$tag]->attr[$attr]);
+ }
}
}
// emit errors
@@ -313,23 +369,29 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$element = htmlspecialchars($bits[0]);
$attribute = htmlspecialchars($bits[1]);
if (!isset($this->info[$element])) {
- trigger_error("Cannot allow attribute '$attribute' if element '$element' is not allowed/supported $support");
+ trigger_error(
+ "Cannot allow attribute '$attribute' if element " .
+ "'$element' is not allowed/supported $support"
+ );
} else {
- trigger_error("Attribute '$attribute' in element '$element' not supported $support",
- E_USER_WARNING);
+ trigger_error(
+ "Attribute '$attribute' in element '$element' not supported $support",
+ E_USER_WARNING
+ );
}
break;
}
// otherwise fall through
case 1:
$attribute = htmlspecialchars($bits[0]);
- trigger_error("Global attribute '$attribute' is not ".
+ trigger_error(
+ "Global attribute '$attribute' is not ".
"supported in any elements $support",
- E_USER_WARNING);
+ E_USER_WARNING
+ );
break;
}
}
-
}
// setup forbidden elements ---------------------------------------
@@ -343,25 +405,34 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
continue;
}
foreach ($info->attr as $attr => $x) {
- if (
- isset($forbidden_attributes["$tag@$attr"]) ||
+ if (isset($forbidden_attributes["$tag@$attr"]) ||
isset($forbidden_attributes["*@$attr"]) ||
isset($forbidden_attributes[$attr])
) {
unset($this->info[$tag]->attr[$attr]);
continue;
- } // this segment might get removed eventually
- elseif (isset($forbidden_attributes["$tag.$attr"])) {
+ } elseif (isset($forbidden_attributes["$tag.$attr"])) { // this segment might get removed eventually
// $tag.$attr are not user supplied, so no worries!
- trigger_error("Error with $tag.$attr: tag.attr syntax not supported for HTML.ForbiddenAttributes; use tag@attr instead", E_USER_WARNING);
+ trigger_error(
+ "Error with $tag.$attr: tag.attr syntax not supported for " .
+ "HTML.ForbiddenAttributes; use tag@attr instead",
+ E_USER_WARNING
+ );
}
}
}
foreach ($forbidden_attributes as $key => $v) {
- if (strlen($key) < 2) continue;
- if ($key[0] != '*') continue;
+ if (strlen($key) < 2) {
+ continue;
+ }
+ if ($key[0] != '*') {
+ continue;
+ }
if ($key[1] == '.') {
- trigger_error("Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead", E_USER_WARNING);
+ trigger_error(
+ "Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead",
+ E_USER_WARNING
+ );
}
}
@@ -380,12 +451,12 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* separate lists for processing. Format is element[attr1|attr2],element2...
* @warning Although it's largely drawn from TinyMCE's implementation,
* it is different, and you'll probably have to modify your lists
- * @param $list String list to parse
- * @param array($allowed_elements, $allowed_attributes)
+ * @param array $list String list to parse
+ * @return array
* @todo Give this its own class, probably static interface
*/
- public function parseTinyMCEAllowedList($list) {
-
+ public function parseTinyMCEAllowedList($list)
+ {
$list = str_replace(array(' ', "\t"), '', $list);
$elements = array();
@@ -393,7 +464,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$chunks = preg_split('/(,|[\n\r]+)/', $list);
foreach ($chunks as $chunk) {
- if (empty($chunk)) continue;
+ if (empty($chunk)) {
+ continue;
+ }
// remove TinyMCE element control characters
if (!strpos($chunk, '[')) {
$element = $chunk;
@@ -401,20 +474,20 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
} else {
list($element, $attr) = explode('[', $chunk);
}
- if ($element !== '*') $elements[$element] = true;
- if (!$attr) continue;
+ if ($element !== '*') {
+ $elements[$element] = true;
+ }
+ if (!$attr) {
+ continue;
+ }
$attr = substr($attr, 0, strlen($attr) - 1); // remove trailing ]
$attr = explode('|', $attr);
foreach ($attr as $key) {
$attributes["$element.$key"] = true;
}
}
-
return array($elements, $attributes);
-
}
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule.php b/library/HTMLPurifier/HTMLModule.php
index 072cf6808..bb3a9230b 100644
--- a/library/HTMLPurifier/HTMLModule.php
+++ b/library/HTMLPurifier/HTMLModule.php
@@ -21,13 +21,15 @@ class HTMLPurifier_HTMLModule
// -- Overloadable ----------------------------------------------------
/**
- * Short unique string identifier of the module
+ * Short unique string identifier of the module.
+ * @type string
*/
public $name;
/**
- * Informally, a list of elements this module changes. Not used in
- * any significant way.
+ * Informally, a list of elements this module changes.
+ * Not used in any significant way.
+ * @type array
*/
public $elements = array();
@@ -35,6 +37,7 @@ class HTMLPurifier_HTMLModule
* Associative array of element names to element definitions.
* Some definitions may be incomplete, to be merged in later
* with the full definition.
+ * @type array
*/
public $info = array();
@@ -43,6 +46,7 @@ class HTMLPurifier_HTMLModule
* This is commonly used to, say, add an A element to the Inline
* content set. This corresponds to an internal variable $content_sets
* and NOT info_content_sets member variable of HTMLDefinition.
+ * @type array
*/
public $content_sets = array();
@@ -53,21 +57,25 @@ class HTMLPurifier_HTMLModule
* the style attribute to the Core. Corresponds to HTMLDefinition's
* attr_collections->info, since the object's data is only info,
* with extra behavior associated with it.
+ * @type array
*/
public $attr_collections = array();
/**
- * Associative array of deprecated tag name to HTMLPurifier_TagTransform
+ * Associative array of deprecated tag name to HTMLPurifier_TagTransform.
+ * @type array
*/
public $info_tag_transform = array();
/**
* List of HTMLPurifier_AttrTransform to be performed before validation.
+ * @type array
*/
public $info_attr_transform_pre = array();
/**
* List of HTMLPurifier_AttrTransform to be performed after validation.
+ * @type array
*/
public $info_attr_transform_post = array();
@@ -76,6 +84,7 @@ class HTMLPurifier_HTMLModule
* An injector will only be invoked if all of it's pre-requisites are met;
* if an injector fails setup, there will be no error; it will simply be
* silently disabled.
+ * @type array
*/
public $info_injector = array();
@@ -84,6 +93,7 @@ class HTMLPurifier_HTMLModule
* For optimization reasons: may save a call to a function. Be sure
* to set it if you do implement getChildDef(), otherwise it will have
* no effect!
+ * @type bool
*/
public $defines_child_def = false;
@@ -94,6 +104,7 @@ class HTMLPurifier_HTMLModule
* which is based off of safe HTML, to explicitly say, "This is safe," even
* though there are modules which are "unsafe")
*
+ * @type bool
* @note Previously, safety could be applied at an element level granularity.
* We've removed this ability, so in order to add "unsafe" elements
* or attributes, a dedicated module with this property set to false
@@ -106,51 +117,62 @@ class HTMLPurifier_HTMLModule
* content_model and content_model_type member variables of
* the HTMLPurifier_ElementDef class. There is a similar function
* in HTMLPurifier_HTMLDefinition.
- * @param $def HTMLPurifier_ElementDef instance
+ * @param HTMLPurifier_ElementDef $def
* @return HTMLPurifier_ChildDef subclass
*/
- public function getChildDef($def) {return false;}
+ public function getChildDef($def)
+ {
+ return false;
+ }
// -- Convenience -----------------------------------------------------
/**
* Convenience function that sets up a new element
- * @param $element Name of element to add
- * @param $type What content set should element be registered to?
+ * @param string $element Name of element to add
+ * @param string|bool $type What content set should element be registered to?
* Set as false to skip this step.
- * @param $contents Allowed children in form of:
+ * @param string $contents Allowed children in form of:
* "$content_model_type: $content_model"
- * @param $attr_includes What attribute collections to register to
+ * @param array $attr_includes What attribute collections to register to
* element?
- * @param $attr What unique attributes does the element define?
- * @note See ElementDef for in-depth descriptions of these parameters.
- * @return Created element definition object, so you
+ * @param array $attr What unique attributes does the element define?
+ * @see HTMLPurifier_ElementDef:: for in-depth descriptions of these parameters.
+ * @return HTMLPurifier_ElementDef Created element definition object, so you
* can set advanced parameters
*/
- public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array()) {
+ public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array())
+ {
$this->elements[] = $element;
// parse content_model
list($content_model_type, $content_model) = $this->parseContents($contents);
// merge in attribute inclusions
$this->mergeInAttrIncludes($attr, $attr_includes);
// add element to content sets
- if ($type) $this->addElementToContentSet($element, $type);
+ if ($type) {
+ $this->addElementToContentSet($element, $type);
+ }
// create element
$this->info[$element] = HTMLPurifier_ElementDef::create(
- $content_model, $content_model_type, $attr
+ $content_model,
+ $content_model_type,
+ $attr
);
// literal object $contents means direct child manipulation
- if (!is_string($contents)) $this->info[$element]->child = $contents;
+ if (!is_string($contents)) {
+ $this->info[$element]->child = $contents;
+ }
return $this->info[$element];
}
/**
* Convenience function that creates a totally blank, non-standalone
* element.
- * @param $element Name of element to create
- * @return Created element
+ * @param string $element Name of element to create
+ * @return HTMLPurifier_ElementDef Created element
*/
- public function addBlankElement($element) {
+ public function addBlankElement($element)
+ {
if (!isset($this->info[$element])) {
$this->elements[] = $element;
$this->info[$element] = new HTMLPurifier_ElementDef();
@@ -163,27 +185,35 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that registers an element to a content set
- * @param Element to register
- * @param Name content set (warning: case sensitive, usually upper-case
+ * @param string $element Element to register
+ * @param string $type Name content set (warning: case sensitive, usually upper-case
* first letter)
*/
- public function addElementToContentSet($element, $type) {
- if (!isset($this->content_sets[$type])) $this->content_sets[$type] = '';
- else $this->content_sets[$type] .= ' | ';
+ public function addElementToContentSet($element, $type)
+ {
+ if (!isset($this->content_sets[$type])) {
+ $this->content_sets[$type] = '';
+ } else {
+ $this->content_sets[$type] .= ' | ';
+ }
$this->content_sets[$type] .= $element;
}
/**
* Convenience function that transforms single-string contents
* into separate content model and content model type
- * @param $contents Allowed children in form of:
+ * @param string $contents Allowed children in form of:
* "$content_model_type: $content_model"
+ * @return array
* @note If contents is an object, an array of two nulls will be
* returned, and the callee needs to take the original $contents
* and use it directly.
*/
- public function parseContents($contents) {
- if (!is_string($contents)) return array(null, null); // defer
+ public function parseContents($contents)
+ {
+ if (!is_string($contents)) {
+ return array(null, null);
+ } // defer
switch ($contents) {
// check for shorthand content model forms
case 'Empty':
@@ -202,13 +232,17 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that merges a list of attribute includes into
* an attribute array.
- * @param $attr Reference to attr array to modify
- * @param $attr_includes Array of includes / string include to merge in
+ * @param array $attr Reference to attr array to modify
+ * @param array $attr_includes Array of includes / string include to merge in
*/
- public function mergeInAttrIncludes(&$attr, $attr_includes) {
+ public function mergeInAttrIncludes(&$attr, $attr_includes)
+ {
if (!is_array($attr_includes)) {
- if (empty($attr_includes)) $attr_includes = array();
- else $attr_includes = array($attr_includes);
+ if (empty($attr_includes)) {
+ $attr_includes = array();
+ } else {
+ $attr_includes = array($attr_includes);
+ }
}
$attr[0] = $attr_includes;
}
@@ -216,16 +250,21 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that generates a lookup table with boolean
* true as value.
- * @param $list List of values to turn into a lookup
+ * @param string $list List of values to turn into a lookup
* @note You can also pass an arbitrary number of arguments in
* place of the regular argument
- * @return Lookup array equivalent of list
+ * @return array array equivalent of list
*/
- public function makeLookup($list) {
- if (is_string($list)) $list = func_get_args();
+ public function makeLookup($list)
+ {
+ if (is_string($list)) {
+ $list = func_get_args();
+ }
$ret = array();
foreach ($list as $value) {
- if (is_null($value)) continue;
+ if (is_null($value)) {
+ continue;
+ }
$ret[$value] = true;
}
return $ret;
@@ -235,10 +274,11 @@ class HTMLPurifier_HTMLModule
* Lazy load construction of the module after determining whether
* or not it's needed, and also when a finalized configuration object
* is available.
- * @param $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {}
-
+ public function setup($config)
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Bdo.php b/library/HTMLPurifier/HTMLModule/Bdo.php
index 3d66f1b4e..1e67c790d 100644
--- a/library/HTMLPurifier/HTMLModule/Bdo.php
+++ b/library/HTMLPurifier/HTMLModule/Bdo.php
@@ -7,25 +7,38 @@
class HTMLPurifier_HTMLModule_Bdo extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Bdo';
+
+ /**
+ * @type array
+ */
public $attr_collections = array(
'I18N' => array('dir' => false)
);
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$bdo = $this->addElement(
- 'bdo', 'Inline', 'Inline', array('Core', 'Lang'),
+ 'bdo',
+ 'Inline',
+ 'Inline',
+ array('Core', 'Lang'),
array(
'dir' => 'Enum#ltr,rtl', // required
// The Abstract Module specification has the attribute
// inclusions wrong for bdo: bdo allows Lang
)
);
- $bdo->attr_transform_post['required-dir'] = new HTMLPurifier_AttrTransform_BdoDir();
+ $bdo->attr_transform_post[] = new HTMLPurifier_AttrTransform_BdoDir();
$this->attr_collections['I18N']['dir'] = 'Enum#ltr,rtl';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/CommonAttributes.php b/library/HTMLPurifier/HTMLModule/CommonAttributes.php
index 7c15da84f..a96ab1bef 100644
--- a/library/HTMLPurifier/HTMLModule/CommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/CommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_CommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'CommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Core' => array(
0 => array('Style'),
@@ -20,7 +26,6 @@ class HTMLPurifier_HTMLModule_CommonAttributes extends HTMLPurifier_HTMLModule
0 => array('Core', 'I18N')
)
);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Edit.php b/library/HTMLPurifier/HTMLModule/Edit.php
index ff9369055..a9042a357 100644
--- a/library/HTMLPurifier/HTMLModule/Edit.php
+++ b/library/HTMLPurifier/HTMLModule/Edit.php
@@ -7,9 +7,16 @@
class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Edit';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow';
$attr = array(
'cite' => 'URI',
@@ -26,13 +33,23 @@ class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
// Inline context ! Block context (exclamation mark is
// separator, see getChildDef for parsing)
+ /**
+ * @type bool
+ */
public $defines_child_def = true;
- public function getChildDef($def) {
- if ($def->content_model_type != 'chameleon') return false;
+
+ /**
+ * @param HTMLPurifier_ElementDef $def
+ * @return HTMLPurifier_ChildDef_Chameleon
+ */
+ public function getChildDef($def)
+ {
+ if ($def->content_model_type != 'chameleon') {
+ return false;
+ }
$value = explode('!', $def->content_model);
return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Forms.php b/library/HTMLPurifier/HTMLModule/Forms.php
index 44c22f6f8..6f7ddbc05 100644
--- a/library/HTMLPurifier/HTMLModule/Forms.php
+++ b/library/HTMLPurifier/HTMLModule/Forms.php
@@ -5,86 +5,142 @@
*/
class HTMLPurifier_HTMLModule_Forms extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Forms';
+
+ /**
+ * @type bool
+ */
public $safe = false;
+ /**
+ * @type array
+ */
public $content_sets = array(
'Block' => 'Form',
'Inline' => 'Formctrl',
);
- public function setup($config) {
- $form = $this->addElement('form', 'Form',
- 'Required: Heading | List | Block | fieldset', 'Common', array(
- 'accept' => 'ContentTypes',
- 'accept-charset' => 'Charsets',
- 'action*' => 'URI',
- 'method' => 'Enum#get,post',
- // really ContentType, but these two are the only ones used today
- 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data',
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $form = $this->addElement(
+ 'form',
+ 'Form',
+ 'Required: Heading | List | Block | fieldset',
+ 'Common',
+ array(
+ 'accept' => 'ContentTypes',
+ 'accept-charset' => 'Charsets',
+ 'action*' => 'URI',
+ 'method' => 'Enum#get,post',
+ // really ContentType, but these two are the only ones used today
+ 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data',
+ )
+ );
$form->excludes = array('form' => true);
- $input = $this->addElement('input', 'Formctrl', 'Empty', 'Common', array(
- 'accept' => 'ContentTypes',
- 'accesskey' => 'Character',
- 'alt' => 'Text',
- 'checked' => 'Bool#checked',
- 'disabled' => 'Bool#disabled',
- 'maxlength' => 'Number',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'size' => 'Number',
- 'src' => 'URI#embeds',
- 'tabindex' => 'Number',
- 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image',
- 'value' => 'CDATA',
- ));
+ $input = $this->addElement(
+ 'input',
+ 'Formctrl',
+ 'Empty',
+ 'Common',
+ array(
+ 'accept' => 'ContentTypes',
+ 'accesskey' => 'Character',
+ 'alt' => 'Text',
+ 'checked' => 'Bool#checked',
+ 'disabled' => 'Bool#disabled',
+ 'maxlength' => 'Number',
+ 'name' => 'CDATA',
+ 'readonly' => 'Bool#readonly',
+ 'size' => 'Number',
+ 'src' => 'URI#embedded',
+ 'tabindex' => 'Number',
+ 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image',
+ 'value' => 'CDATA',
+ )
+ );
$input->attr_transform_post[] = new HTMLPurifier_AttrTransform_Input();
- $this->addElement('select', 'Formctrl', 'Required: optgroup | option', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'multiple' => 'Bool#multiple',
- 'name' => 'CDATA',
- 'size' => 'Number',
- 'tabindex' => 'Number',
- ));
-
- $this->addElement('option', false, 'Optional: #PCDATA', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'label' => 'Text',
- 'selected' => 'Bool#selected',
- 'value' => 'CDATA',
- ));
+ $this->addElement(
+ 'select',
+ 'Formctrl',
+ 'Required: optgroup | option',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'multiple' => 'Bool#multiple',
+ 'name' => 'CDATA',
+ 'size' => 'Number',
+ 'tabindex' => 'Number',
+ )
+ );
+
+ $this->addElement(
+ 'option',
+ false,
+ 'Optional: #PCDATA',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'label' => 'Text',
+ 'selected' => 'Bool#selected',
+ 'value' => 'CDATA',
+ )
+ );
// It's illegal for there to be more than one selected, but not
// be multiple. Also, no selected means undefined behavior. This might
// be difficult to implement; perhaps an injector, or a context variable.
- $textarea = $this->addElement('textarea', 'Formctrl', 'Optional: #PCDATA', 'Common', array(
- 'accesskey' => 'Character',
- 'cols*' => 'Number',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'rows*' => 'Number',
- 'tabindex' => 'Number',
- ));
+ $textarea = $this->addElement(
+ 'textarea',
+ 'Formctrl',
+ 'Optional: #PCDATA',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ 'cols*' => 'Number',
+ 'disabled' => 'Bool#disabled',
+ 'name' => 'CDATA',
+ 'readonly' => 'Bool#readonly',
+ 'rows*' => 'Number',
+ 'tabindex' => 'Number',
+ )
+ );
$textarea->attr_transform_pre[] = new HTMLPurifier_AttrTransform_Textarea();
- $button = $this->addElement('button', 'Formctrl', 'Optional: #PCDATA | Heading | List | Block | Inline', 'Common', array(
- 'accesskey' => 'Character',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'tabindex' => 'Number',
- 'type' => 'Enum#button,submit,reset',
- 'value' => 'CDATA',
- ));
+ $button = $this->addElement(
+ 'button',
+ 'Formctrl',
+ 'Optional: #PCDATA | Heading | List | Block | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ 'disabled' => 'Bool#disabled',
+ 'name' => 'CDATA',
+ 'tabindex' => 'Number',
+ 'type' => 'Enum#button,submit,reset',
+ 'value' => 'CDATA',
+ )
+ );
// For exclusions, ideally we'd specify content sets, not literal elements
$button->excludes = $this->makeLookup(
- 'form', 'fieldset', // Form
- 'input', 'select', 'textarea', 'label', 'button', // Formctrl
- 'a' // as per HTML 4.01 spec, this is omitted by modularization
+ 'form',
+ 'fieldset', // Form
+ 'input',
+ 'select',
+ 'textarea',
+ 'label',
+ 'button', // Formctrl
+ 'a', // as per HTML 4.01 spec, this is omitted by modularization
+ 'isindex',
+ 'iframe' // legacy items
);
// Extra exclusion: img usemap="" is not permitted within this element.
@@ -94,24 +150,40 @@ class HTMLPurifier_HTMLModule_Forms extends HTMLPurifier_HTMLModule
// This is HIGHLY user-unfriendly; we need a custom child-def for this
$this->addElement('fieldset', 'Form', 'Custom: (#WS?,legend,(Flow|#PCDATA)*)', 'Common');
- $label = $this->addElement('label', 'Formctrl', 'Optional: #PCDATA | Inline', 'Common', array(
- 'accesskey' => 'Character',
- // 'for' => 'IDREF', // IDREF not implemented, cannot allow
- ));
+ $label = $this->addElement(
+ 'label',
+ 'Formctrl',
+ 'Optional: #PCDATA | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ // 'for' => 'IDREF', // IDREF not implemented, cannot allow
+ )
+ );
$label->excludes = array('label' => true);
- $this->addElement('legend', false, 'Optional: #PCDATA | Inline', 'Common', array(
- 'accesskey' => 'Character',
- ));
-
- $this->addElement('optgroup', false, 'Required: option', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'label*' => 'Text',
- ));
+ $this->addElement(
+ 'legend',
+ false,
+ 'Optional: #PCDATA | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ )
+ );
+ $this->addElement(
+ 'optgroup',
+ false,
+ 'Required: option',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'label*' => 'Text',
+ )
+ );
// Don't forget an injector for <isindex>. This one's a little complex
// because it maps to multiple elements.
-
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Hypertext.php b/library/HTMLPurifier/HTMLModule/Hypertext.php
index d7e9bdd27..72d7a31e6 100644
--- a/library/HTMLPurifier/HTMLModule/Hypertext.php
+++ b/library/HTMLPurifier/HTMLModule/Hypertext.php
@@ -6,11 +6,21 @@
class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Hypertext';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$a = $this->addElement(
- 'a', 'Inline', 'Inline', 'Common',
+ 'a',
+ 'Inline',
+ 'Inline',
+ 'Common',
array(
// 'accesskey' => 'Character',
// 'charset' => 'Charset',
@@ -25,7 +35,6 @@ class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
$a->formatting = true;
$a->excludes = array('a' => true);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Iframe.php b/library/HTMLPurifier/HTMLModule/Iframe.php
new file mode 100644
index 000000000..f7e7c91c0
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/Iframe.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * XHTML 1.1 Iframe Module provides inline frames.
+ *
+ * @note This module is not considered safe unless an Iframe
+ * whitelisting mechanism is specified. Currently, the only
+ * such mechanism is %URL.SafeIframeRegexp
+ */
+class HTMLPurifier_HTMLModule_Iframe extends HTMLPurifier_HTMLModule
+{
+
+ /**
+ * @type string
+ */
+ public $name = 'Iframe';
+
+ /**
+ * @type bool
+ */
+ public $safe = false;
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ if ($config->get('HTML.SafeIframe')) {
+ $this->safe = true;
+ }
+ $this->addElement(
+ 'iframe',
+ 'Inline',
+ 'Flow',
+ 'Common',
+ array(
+ 'src' => 'URI#embedded',
+ 'width' => 'Length',
+ 'height' => 'Length',
+ 'name' => 'ID',
+ 'scrolling' => 'Enum#yes,no,auto',
+ 'frameborder' => 'Enum#0,1',
+ 'longdesc' => 'URI',
+ 'marginheight' => 'Pixels',
+ 'marginwidth' => 'Pixels',
+ )
+ );
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Image.php b/library/HTMLPurifier/HTMLModule/Image.php
index 948d435bc..0f5fdb3ba 100644
--- a/library/HTMLPurifier/HTMLModule/Image.php
+++ b/library/HTMLPurifier/HTMLModule/Image.php
@@ -8,18 +8,28 @@
class HTMLPurifier_HTMLModule_Image extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Image';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$max = $config->get('HTML.MaxImgLength');
$img = $this->addElement(
- 'img', 'Inline', 'Empty', 'Common',
+ 'img',
+ 'Inline',
+ 'Empty',
+ 'Common',
array(
'alt*' => 'Text',
// According to the spec, it's Length, but percents can
// be abused, so we allow only Pixels.
'height' => 'Pixels#' . $max,
- 'width' => 'Pixels#' . $max,
+ 'width' => 'Pixels#' . $max,
'longdesc' => 'URI',
'src*' => new HTMLPurifier_AttrDef_URI(true), // embedded
)
@@ -34,7 +44,6 @@ class HTMLPurifier_HTMLModule_Image extends HTMLPurifier_HTMLModule
$img->attr_transform_post[] =
new HTMLPurifier_AttrTransform_ImgRequired();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Legacy.php b/library/HTMLPurifier/HTMLModule/Legacy.php
index df33927ba..86b529957 100644
--- a/library/HTMLPurifier/HTMLModule/Legacy.php
+++ b/library/HTMLPurifier/HTMLModule/Legacy.php
@@ -18,29 +18,58 @@
class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Legacy';
- public function setup($config) {
-
- $this->addElement('basefont', 'Inline', 'Empty', false, array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- 'id' => 'ID'
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'basefont',
+ 'Inline',
+ 'Empty',
+ null,
+ array(
+ 'color' => 'Color',
+ 'face' => 'Text', // extremely broad, we should
+ 'size' => 'Text', // tighten it
+ 'id' => 'ID'
+ )
+ );
$this->addElement('center', 'Block', 'Flow', 'Common');
- $this->addElement('dir', 'Block', 'Required: li', 'Common', array(
- 'compact' => 'Bool#compact'
- ));
- $this->addElement('font', 'Inline', 'Inline', array('Core', 'I18N'), array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- ));
- $this->addElement('menu', 'Block', 'Required: li', 'Common', array(
- 'compact' => 'Bool#compact'
- ));
+ $this->addElement(
+ 'dir',
+ 'Block',
+ 'Required: li',
+ 'Common',
+ array(
+ 'compact' => 'Bool#compact'
+ )
+ );
+ $this->addElement(
+ 'font',
+ 'Inline',
+ 'Inline',
+ array('Core', 'I18N'),
+ array(
+ 'color' => 'Color',
+ 'face' => 'Text', // extremely broad, we should
+ 'size' => 'Text', // tighten it
+ )
+ );
+ $this->addElement(
+ 'menu',
+ 'Block',
+ 'Required: li',
+ 'Common',
+ array(
+ 'compact' => 'Bool#compact'
+ )
+ );
$s = $this->addElement('s', 'Inline', 'Inline', 'Common');
$s->formatting = true;
@@ -89,7 +118,7 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$hr->attr['width'] = 'Length';
$img = $this->addBlankElement('img');
- $img->attr['align'] = 'Enum#top,middle,bottom,left,right';
+ $img->attr['align'] = 'IAlign';
$img->attr['border'] = 'Pixels';
$img->attr['hspace'] = 'Pixels';
$img->attr['vspace'] = 'Pixels';
@@ -98,7 +127,7 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$li = $this->addBlankElement('li');
$li->attr['value'] = new HTMLPurifier_AttrDef_Integer();
- $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
+ $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
$ol = $this->addBlankElement('ol');
$ol->attr['compact'] = 'Bool#compact';
@@ -136,8 +165,22 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$ul->attr['compact'] = 'Bool#compact';
$ul->attr['type'] = 'Enum#square,disc,circle';
- }
+ // "safe" modifications to "unsafe" elements
+ // WARNING: If you want to add support for an unsafe, legacy
+ // attribute, make a new TrustedLegacy module with the trusted
+ // bit set appropriately
+ $form = $this->addBlankElement('form');
+ $form->content_model = 'Flow | #PCDATA';
+ $form->content_model_type = 'optional';
+ $form->attr['target'] = 'FrameTarget';
+
+ $input = $this->addBlankElement('input');
+ $input->attr['align'] = 'IAlign';
+
+ $legend = $this->addBlankElement('legend');
+ $legend->attr['align'] = 'LAlign';
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/List.php b/library/HTMLPurifier/HTMLModule/List.php
index 74d4522f4..7a20ff701 100644
--- a/library/HTMLPurifier/HTMLModule/List.php
+++ b/library/HTMLPurifier/HTMLModule/List.php
@@ -5,7 +5,9 @@
*/
class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'List';
// According to the abstract schema, the List content set is a fully formed
@@ -17,13 +19,26 @@ class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
// we don't have support for such nested expressions without using
// the incredibly inefficient and draconic Custom ChildDef.
+ /**
+ * @type array
+ */
public $content_sets = array('Flow' => 'List');
- public function setup($config) {
- $ol = $this->addElement('ol', 'List', 'Required: li', 'Common');
- $ol->wrap = "li";
- $ul = $this->addElement('ul', 'List', 'Required: li', 'Common');
- $ul->wrap = "li";
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $ol = $this->addElement('ol', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
+ $ul = $this->addElement('ul', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
+ // XXX The wrap attribute is handled by MakeWellFormed. This is all
+ // quite unsatisfactory, because we generated this
+ // *specifically* for lists, and now a big chunk of the handling
+ // is done properly by the List ChildDef. So actually, we just
+ // want enough information to make autoclosing work properly,
+ // and then hand off the tricky stuff to the ChildDef.
+ $ol->wrap = 'li';
+ $ul->wrap = 'li';
$this->addElement('dl', 'List', 'Required: dt | dd', 'Common');
$this->addElement('li', false, 'Flow', 'Common');
@@ -31,7 +46,6 @@ class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
$this->addElement('dd', false, 'Flow', 'Common');
$this->addElement('dt', false, 'Inline', 'Common');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Name.php b/library/HTMLPurifier/HTMLModule/Name.php
index 05694b450..60c054515 100644
--- a/library/HTMLPurifier/HTMLModule/Name.php
+++ b/library/HTMLPurifier/HTMLModule/Name.php
@@ -2,20 +2,25 @@
class HTMLPurifier_HTMLModule_Name extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Name';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$elements = array('a', 'applet', 'form', 'frame', 'iframe', 'img', 'map');
foreach ($elements as $name) {
$element = $this->addBlankElement($name);
$element->attr['name'] = 'CDATA';
if (!$config->get('HTML.Attr.Name.UseCDATA')) {
- $element->attr_transform_post['NameSync'] = new HTMLPurifier_AttrTransform_NameSync();
+ $element->attr_transform_post[] = new HTMLPurifier_AttrTransform_NameSync();
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Nofollow.php b/library/HTMLPurifier/HTMLModule/Nofollow.php
new file mode 100644
index 000000000..dc9410a89
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/Nofollow.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * Module adds the nofollow attribute transformation to a tags. It
+ * is enabled by HTML.Nofollow
+ */
+class HTMLPurifier_HTMLModule_Nofollow extends HTMLPurifier_HTMLModule
+{
+
+ /**
+ * @type string
+ */
+ public $name = 'Nofollow';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $a = $this->addBlankElement('a');
+ $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Nofollow();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php b/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
index 5f1b14abb..da722253a 100644
--- a/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_NonXMLCommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'NonXMLCommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Lang' => array(
'lang' => 'LanguageCode',
diff --git a/library/HTMLPurifier/HTMLModule/Object.php b/library/HTMLPurifier/HTMLModule/Object.php
index 193c1011f..2f9efc5c8 100644
--- a/library/HTMLPurifier/HTMLModule/Object.php
+++ b/library/HTMLPurifier/HTMLModule/Object.php
@@ -7,13 +7,26 @@
*/
class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Object';
- public $safe = false;
- public function setup($config) {
+ /**
+ * @type bool
+ */
+ public $safe = false;
- $this->addElement('object', 'Inline', 'Optional: #PCDATA | Flow | param', 'Common',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'object',
+ 'Inline',
+ 'Optional: #PCDATA | Flow | param',
+ 'Common',
array(
'archive' => 'URI',
'classid' => 'URI',
@@ -30,18 +43,20 @@ class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
)
);
- $this->addElement('param', false, 'Empty', false,
+ $this->addElement(
+ 'param',
+ false,
+ 'Empty',
+ null,
array(
'id' => 'ID',
'name*' => 'Text',
'type' => 'Text',
'value' => 'Text',
'valuetype' => 'Enum#data,ref,object'
- )
+ )
);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Presentation.php b/library/HTMLPurifier/HTMLModule/Presentation.php
index 8ff0b5ed7..6458ce9d8 100644
--- a/library/HTMLPurifier/HTMLModule/Presentation.php
+++ b/library/HTMLPurifier/HTMLModule/Presentation.php
@@ -13,24 +13,30 @@
class HTMLPurifier_HTMLModule_Presentation extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Presentation';
- public function setup($config) {
- $this->addElement('hr', 'Block', 'Empty', 'Common');
- $this->addElement('sub', 'Inline', 'Inline', 'Common');
- $this->addElement('sup', 'Inline', 'Inline', 'Common');
- $b = $this->addElement('b', 'Inline', 'Inline', 'Common');
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement('hr', 'Block', 'Empty', 'Common');
+ $this->addElement('sub', 'Inline', 'Inline', 'Common');
+ $this->addElement('sup', 'Inline', 'Inline', 'Common');
+ $b = $this->addElement('b', 'Inline', 'Inline', 'Common');
$b->formatting = true;
- $big = $this->addElement('big', 'Inline', 'Inline', 'Common');
+ $big = $this->addElement('big', 'Inline', 'Inline', 'Common');
$big->formatting = true;
- $i = $this->addElement('i', 'Inline', 'Inline', 'Common');
+ $i = $this->addElement('i', 'Inline', 'Inline', 'Common');
$i->formatting = true;
- $small = $this->addElement('small', 'Inline', 'Inline', 'Common');
+ $small = $this->addElement('small', 'Inline', 'Inline', 'Common');
$small->formatting = true;
- $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
+ $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
$tt->formatting = true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Proprietary.php b/library/HTMLPurifier/HTMLModule/Proprietary.php
index dd36a3de0..5ee3c8e67 100644
--- a/library/HTMLPurifier/HTMLModule/Proprietary.php
+++ b/library/HTMLPurifier/HTMLModule/Proprietary.php
@@ -6,12 +6,21 @@
*/
class HTMLPurifier_HTMLModule_Proprietary extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Proprietary';
- public function setup($config) {
-
- $this->addElement('marquee', 'Inline', 'Flow', 'Common',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'marquee',
+ 'Inline',
+ 'Flow',
+ 'Common',
array(
'direction' => 'Enum#left,right,up,down',
'behavior' => 'Enum#alternate',
@@ -25,9 +34,7 @@ class HTMLPurifier_HTMLModule_Proprietary extends HTMLPurifier_HTMLModule
'vspace' => 'Pixels',
)
);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Ruby.php b/library/HTMLPurifier/HTMLModule/Ruby.php
index b26a0a30a..a0d48924d 100644
--- a/library/HTMLPurifier/HTMLModule/Ruby.php
+++ b/library/HTMLPurifier/HTMLModule/Ruby.php
@@ -7,12 +7,22 @@
class HTMLPurifier_HTMLModule_Ruby extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Ruby';
- public function setup($config) {
- $this->addElement('ruby', 'Inline',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'ruby',
+ 'Inline',
'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))',
- 'Common');
+ 'Common'
+ );
$this->addElement('rbc', false, 'Required: rb', 'Common');
$this->addElement('rtc', false, 'Required: rt', 'Common');
$rb = $this->addElement('rb', false, 'Inline', 'Common');
@@ -21,7 +31,6 @@ class HTMLPurifier_HTMLModule_Ruby extends HTMLPurifier_HTMLModule
$rt->excludes = array('ruby' => true);
$this->addElement('rp', false, 'Optional: #PCDATA', 'Common');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeEmbed.php b/library/HTMLPurifier/HTMLModule/SafeEmbed.php
index ea256716b..04e6689ea 100644
--- a/library/HTMLPurifier/HTMLModule/SafeEmbed.php
+++ b/library/HTMLPurifier/HTMLModule/SafeEmbed.php
@@ -5,14 +5,22 @@
*/
class HTMLPurifier_HTMLModule_SafeEmbed extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'SafeEmbed';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$max = $config->get('HTML.MaxImgLength');
$embed = $this->addElement(
- 'embed', 'Inline', 'Empty', 'Common',
+ 'embed',
+ 'Inline',
+ 'Empty',
+ 'Common',
array(
'src*' => 'URI#embedded',
'type' => 'Enum#application/x-shockwave-flash',
@@ -21,14 +29,12 @@ class HTMLPurifier_HTMLModule_SafeEmbed extends HTMLPurifier_HTMLModule
'allowscriptaccess' => 'Enum#never',
'allownetworking' => 'Enum#internal',
'flashvars' => 'Text',
- 'wmode' => 'Enum#window',
+ 'wmode' => 'Enum#window,transparent,opaque',
'name' => 'ID',
)
);
$embed->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeEmbed();
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeObject.php b/library/HTMLPurifier/HTMLModule/SafeObject.php
index 64ab8c070..1297f80a3 100644
--- a/library/HTMLPurifier/HTMLModule/SafeObject.php
+++ b/library/HTMLPurifier/HTMLModule/SafeObject.php
@@ -8,11 +8,16 @@
*/
class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'SafeObject';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// These definitions are not intrinsically safe: the attribute transforms
// are a vital part of ensuring safety.
@@ -25,18 +30,24 @@ class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
array(
// While technically not required by the spec, we're forcing
// it to this value.
- 'type' => 'Enum#application/x-shockwave-flash',
- 'width' => 'Pixels#' . $max,
+ 'type' => 'Enum#application/x-shockwave-flash',
+ 'width' => 'Pixels#' . $max,
'height' => 'Pixels#' . $max,
- 'data' => 'URI#embedded',
- 'classid' => 'Enum#clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
- 'codebase' => new HTMLPurifier_AttrDef_Enum(array(
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0')),
+ 'data' => 'URI#embedded',
+ 'codebase' => new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
+ )
+ ),
)
);
$object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject();
- $param = $this->addElement('param', false, 'Empty', false,
+ $param = $this->addElement(
+ 'param',
+ false,
+ 'Empty',
+ false,
array(
'id' => 'ID',
'name*' => 'Text',
@@ -45,9 +56,7 @@ class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
);
$param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam();
$this->info_injector[] = 'SafeObject';
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeScripting.php b/library/HTMLPurifier/HTMLModule/SafeScripting.php
new file mode 100644
index 000000000..0330cd97f
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/SafeScripting.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * A "safe" script module. No inline JS is allowed, and pointed to JS
+ * files must match whitelist.
+ */
+class HTMLPurifier_HTMLModule_SafeScripting extends HTMLPurifier_HTMLModule
+{
+ /**
+ * @type string
+ */
+ public $name = 'SafeScripting';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ // These definitions are not intrinsically safe: the attribute transforms
+ // are a vital part of ensuring safety.
+
+ $allowed = $config->get('HTML.SafeScripting');
+ $script = $this->addElement(
+ 'script',
+ 'Inline',
+ 'Empty',
+ null,
+ array(
+ // While technically not required by the spec, we're forcing
+ // it to this value.
+ 'type' => 'Enum#text/javascript',
+ 'src*' => new HTMLPurifier_AttrDef_Enum(array_keys($allowed))
+ )
+ );
+ $script->attr_transform_pre[] =
+ $script->attr_transform_post[] = new HTMLPurifier_AttrTransform_ScriptRequired();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Scripting.php b/library/HTMLPurifier/HTMLModule/Scripting.php
index cecdea6c3..8b28a7b7e 100644
--- a/library/HTMLPurifier/HTMLModule/Scripting.php
+++ b/library/HTMLPurifier/HTMLModule/Scripting.php
@@ -15,12 +15,31 @@ INSIDE HTML PURIFIER DOCUMENTS. USE ONLY WITH TRUSTED USER INPUT!!!
*/
class HTMLPurifier_HTMLModule_Scripting extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Scripting';
+
+ /**
+ * @type array
+ */
public $elements = array('script', 'noscript');
+
+ /**
+ * @type array
+ */
public $content_sets = array('Block' => 'script | noscript', 'Inline' => 'script | noscript');
+
+ /**
+ * @type bool
+ */
public $safe = false;
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// TODO: create custom child-definition for noscript that
// auto-wraps stray #PCDATA in a similar manner to
// blockquote's custom definition (we would use it but
@@ -33,20 +52,20 @@ class HTMLPurifier_HTMLModule_Scripting extends HTMLPurifier_HTMLModule
// In theory, this could be safe, but I don't see any reason to
// allow it.
$this->info['noscript'] = new HTMLPurifier_ElementDef();
- $this->info['noscript']->attr = array( 0 => array('Common') );
+ $this->info['noscript']->attr = array(0 => array('Common'));
$this->info['noscript']->content_model = 'Heading | List | Block';
$this->info['noscript']->content_model_type = 'required';
$this->info['script'] = new HTMLPurifier_ElementDef();
$this->info['script']->attr = array(
'defer' => new HTMLPurifier_AttrDef_Enum(array('defer')),
- 'src' => new HTMLPurifier_AttrDef_URI(true),
- 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript'))
+ 'src' => new HTMLPurifier_AttrDef_URI(true),
+ 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript'))
);
$this->info['script']->content_model = '#PCDATA';
$this->info['script']->content_model_type = 'optional';
- $this->info['script']->attr_transform_pre['type'] =
- $this->info['script']->attr_transform_post['type'] =
+ $this->info['script']->attr_transform_pre[] =
+ $this->info['script']->attr_transform_post[] =
new HTMLPurifier_AttrTransform_ScriptRequired();
}
}
diff --git a/library/HTMLPurifier/HTMLModule/StyleAttribute.php b/library/HTMLPurifier/HTMLModule/StyleAttribute.php
index eb78464cc..497b832ae 100644
--- a/library/HTMLPurifier/HTMLModule/StyleAttribute.php
+++ b/library/HTMLPurifier/HTMLModule/StyleAttribute.php
@@ -6,8 +6,14 @@
*/
class HTMLPurifier_HTMLModule_StyleAttribute extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'StyleAttribute';
+
+ /**
+ * @type array
+ */
public $attr_collections = array(
// The inclusion routine differs from the Abstract Modules but
// is in line with the DTD and XML Schemas.
@@ -15,10 +21,13 @@ class HTMLPurifier_HTMLModule_StyleAttribute extends HTMLPurifier_HTMLModule
'Core' => array(0 => array('Style'))
);
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tables.php b/library/HTMLPurifier/HTMLModule/Tables.php
index f314ced3f..8a0b3b461 100644
--- a/library/HTMLPurifier/HTMLModule/Tables.php
+++ b/library/HTMLPurifier/HTMLModule/Tables.php
@@ -5,15 +5,23 @@
*/
class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Tables';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$this->addElement('caption', false, 'Inline', 'Common');
- $this->addElement('table', 'Block',
- new HTMLPurifier_ChildDef_Table(), 'Common',
+ $this->addElement(
+ 'table',
+ 'Block',
+ new HTMLPurifier_ChildDef_Table(),
+ 'Common',
array(
'border' => 'Pixels',
'cellpadding' => 'Length',
@@ -34,9 +42,12 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
$cell_t = array_merge(
array(
- 'abbr' => 'Text',
+ 'abbr' => 'Text',
'colspan' => 'Number',
'rowspan' => 'Number',
+ // Apparently, as of HTML5 this attribute only applies
+ // to 'th' elements.
+ 'scope' => 'Enum#row,col,rowgroup,colgroup',
),
$cell_align
);
@@ -47,20 +58,18 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
$cell_col = array_merge(
array(
- 'span' => 'Number',
+ 'span' => 'Number',
'width' => 'MultiLength',
),
$cell_align
);
- $this->addElement('col', false, 'Empty', 'Common', $cell_col);
+ $this->addElement('col', false, 'Empty', 'Common', $cell_col);
$this->addElement('colgroup', false, 'Optional: col', 'Common', $cell_col);
$this->addElement('tbody', false, 'Required: tr', 'Common', $cell_align);
$this->addElement('thead', false, 'Required: tr', 'Common', $cell_align);
$this->addElement('tfoot', false, 'Required: tr', 'Common', $cell_align);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Target.php b/library/HTMLPurifier/HTMLModule/Target.php
index 2b844ecc4..b188ac936 100644
--- a/library/HTMLPurifier/HTMLModule/Target.php
+++ b/library/HTMLPurifier/HTMLModule/Target.php
@@ -5,10 +5,16 @@
*/
class HTMLPurifier_HTMLModule_Target extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Target';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$elements = array('a');
foreach ($elements as $name) {
$e = $this->addBlankElement($name);
@@ -17,7 +23,6 @@ class HTMLPurifier_HTMLModule_Target extends HTMLPurifier_HTMLModule
);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/TargetBlank.php b/library/HTMLPurifier/HTMLModule/TargetBlank.php
new file mode 100644
index 000000000..58ccc6894
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/TargetBlank.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Module adds the target=blank attribute transformation to a tags. It
+ * is enabled by HTML.TargetBlank
+ */
+class HTMLPurifier_HTMLModule_TargetBlank extends HTMLPurifier_HTMLModule
+{
+ /**
+ * @type string
+ */
+ public $name = 'TargetBlank';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $a = $this->addBlankElement('a');
+ $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_TargetBlank();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Text.php b/library/HTMLPurifier/HTMLModule/Text.php
index ae77c7188..7a65e0048 100644
--- a/library/HTMLPurifier/HTMLModule/Text.php
+++ b/library/HTMLPurifier/HTMLModule/Text.php
@@ -14,43 +14,59 @@
*/
class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Text';
+
+ /**
+ * @type array
+ */
public $content_sets = array(
'Flow' => 'Heading | Block | Inline'
);
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// Inline Phrasal -------------------------------------------------
- $this->addElement('abbr', 'Inline', 'Inline', 'Common');
+ $this->addElement('abbr', 'Inline', 'Inline', 'Common');
$this->addElement('acronym', 'Inline', 'Inline', 'Common');
- $this->addElement('cite', 'Inline', 'Inline', 'Common');
- $this->addElement('dfn', 'Inline', 'Inline', 'Common');
- $this->addElement('kbd', 'Inline', 'Inline', 'Common');
- $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
- $this->addElement('samp', 'Inline', 'Inline', 'Common');
- $this->addElement('var', 'Inline', 'Inline', 'Common');
+ $this->addElement('cite', 'Inline', 'Inline', 'Common');
+ $this->addElement('dfn', 'Inline', 'Inline', 'Common');
+ $this->addElement('kbd', 'Inline', 'Inline', 'Common');
+ $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
+ $this->addElement('samp', 'Inline', 'Inline', 'Common');
+ $this->addElement('var', 'Inline', 'Inline', 'Common');
- $em = $this->addElement('em', 'Inline', 'Inline', 'Common');
+ $em = $this->addElement('em', 'Inline', 'Inline', 'Common');
$em->formatting = true;
- $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
+ $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
$strong->formatting = true;
- $code = $this->addElement('code', 'Inline', 'Inline', 'Common');
+ $code = $this->addElement('code', 'Inline', 'Inline', 'Common');
$code->formatting = true;
// Inline Structural ----------------------------------------------
$this->addElement('span', 'Inline', 'Inline', 'Common');
- $this->addElement('br', 'Inline', 'Empty', 'Core');
+ $this->addElement('br', 'Inline', 'Empty', 'Core');
// Block Phrasal --------------------------------------------------
- $this->addElement('address', 'Block', 'Inline', 'Common');
- $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI') );
+ $this->addElement('address', 'Block', 'Inline', 'Common');
+ $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI'));
$pre = $this->addElement('pre', 'Block', 'Inline', 'Common');
$pre->excludes = $this->makeLookup(
- 'img', 'big', 'small', 'object', 'applet', 'font', 'basefont' );
+ 'img',
+ 'big',
+ 'small',
+ 'object',
+ 'applet',
+ 'font',
+ 'basefont'
+ );
$this->addElement('h1', 'Heading', 'Inline', 'Common');
$this->addElement('h2', 'Heading', 'Inline', 'Common');
$this->addElement('h3', 'Heading', 'Inline', 'Common');
@@ -60,12 +76,12 @@ class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
// Block Structural -----------------------------------------------
$p = $this->addElement('p', 'Block', 'Inline', 'Common');
- $p->autoclose = array_flip(array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul"));
+ $p->autoclose = array_flip(
+ array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul")
+ );
$this->addElement('div', 'Block', 'Flow', 'Common');
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy.php b/library/HTMLPurifier/HTMLModule/Tidy.php
index 21783f18e..08aa23247 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy.php
@@ -7,36 +7,41 @@
*/
class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
{
-
/**
- * List of supported levels. Index zero is a special case "no fixes"
- * level.
+ * List of supported levels.
+ * Index zero is a special case "no fixes" level.
+ * @type array
*/
public $levels = array(0 => 'none', 'light', 'medium', 'heavy');
/**
- * Default level to place all fixes in. Disabled by default
+ * Default level to place all fixes in.
+ * Disabled by default.
+ * @type string
*/
public $defaultLevel = null;
/**
- * Lists of fixes used by getFixesForLevel(). Format is:
+ * Lists of fixes used by getFixesForLevel().
+ * Format is:
* HTMLModule_Tidy->fixesForLevel[$level] = array('fix-1', 'fix-2');
+ * @type array
*/
public $fixesForLevel = array(
- 'light' => array(),
+ 'light' => array(),
'medium' => array(),
- 'heavy' => array()
+ 'heavy' => array()
);
/**
* Lazy load constructs the module by determining the necessary
* fixes to create and then delegating to the populate() function.
+ * @param HTMLPurifier_Config $config
* @todo Wildcard matching and error reporting when an added or
* subtracted fix has no effect.
*/
- public function setup($config) {
-
+ public function setup($config)
+ {
// create fixes, initialize fixesForLevel
$fixes = $this->makeFixes();
$this->makeFixesForLevel($fixes);
@@ -46,38 +51,38 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
$fixes_lookup = $this->getFixesForLevel($level);
// get custom fix declarations: these need namespace processing
- $add_fixes = $config->get('HTML.TidyAdd');
+ $add_fixes = $config->get('HTML.TidyAdd');
$remove_fixes = $config->get('HTML.TidyRemove');
foreach ($fixes as $name => $fix) {
// needs to be refactored a little to implement globbing
- if (
- isset($remove_fixes[$name]) ||
- (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name]))
- ) {
+ if (isset($remove_fixes[$name]) ||
+ (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name]))) {
unset($fixes[$name]);
}
}
// populate this module with necessary fixes
$this->populate($fixes);
-
}
/**
* Retrieves all fixes per a level, returning fixes for that specific
* level as well as all levels below it.
- * @param $level String level identifier, see $levels for valid values
- * @return Lookup up table of fixes
+ * @param string $level level identifier, see $levels for valid values
+ * @return array Lookup up table of fixes
*/
- public function getFixesForLevel($level) {
+ public function getFixesForLevel($level)
+ {
if ($level == $this->levels[0]) {
return array();
}
$activated_levels = array();
for ($i = 1, $c = count($this->levels); $i < $c; $i++) {
$activated_levels[] = $this->levels[$i];
- if ($this->levels[$i] == $level) break;
+ if ($this->levels[$i] == $level) {
+ break;
+ }
}
if ($i == $c) {
trigger_error(
@@ -99,9 +104,13 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
* Dynamically populates the $fixesForLevel member variable using
* the fixes array. It may be custom overloaded, used in conjunction
* with $defaultLevel, or not used at all.
+ * @param array $fixes
*/
- public function makeFixesForLevel($fixes) {
- if (!isset($this->defaultLevel)) return;
+ public function makeFixesForLevel($fixes)
+ {
+ if (!isset($this->defaultLevel)) {
+ return;
+ }
if (!isset($this->fixesForLevel[$this->defaultLevel])) {
trigger_error(
'Default level ' . $this->defaultLevel . ' does not exist',
@@ -115,9 +124,10 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
/**
* Populates the module with transforms and other special-case code
* based on a list of fixes passed to it
- * @param $lookup Lookup table of fixes to activate
+ * @param array $fixes Lookup table of fixes to activate
*/
- public function populate($fixes) {
+ public function populate($fixes)
+ {
foreach ($fixes as $name => $fix) {
// determine what the fix is for
list($type, $params) = $this->getFixType($name);
@@ -169,20 +179,31 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
* @note $fix_parameters is type dependant, see populate() for usage
* of these parameters
*/
- public function getFixType($name) {
+ public function getFixType($name)
+ {
// parse it
$property = $attr = null;
- if (strpos($name, '#') !== false) list($name, $property) = explode('#', $name);
- if (strpos($name, '@') !== false) list($name, $attr) = explode('@', $name);
+ if (strpos($name, '#') !== false) {
+ list($name, $property) = explode('#', $name);
+ }
+ if (strpos($name, '@') !== false) {
+ list($name, $attr) = explode('@', $name);
+ }
// figure out the parameters
$params = array();
- if ($name !== '') $params['element'] = $name;
- if (!is_null($attr)) $params['attr'] = $attr;
+ if ($name !== '') {
+ $params['element'] = $name;
+ }
+ if (!is_null($attr)) {
+ $params['attr'] = $attr;
+ }
// special case: attribute transform
if (!is_null($attr)) {
- if (is_null($property)) $property = 'pre';
+ if (is_null($property)) {
+ $property = 'pre';
+ }
$type = 'attr_transform_' . $property;
return array($type, $params);
}
@@ -199,9 +220,11 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
/**
* Defines all fixes the module will perform in a compact
* associative array of fix name to fix implementation.
+ * @return array
*/
- public function makeFixes() {}
-
+ public function makeFixes()
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Name.php b/library/HTMLPurifier/HTMLModule/Tidy/Name.php
index 61ff85ce2..a995161b2 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Name.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Name.php
@@ -5,18 +5,27 @@
*/
class HTMLPurifier_HTMLModule_Tidy_Name extends HTMLPurifier_HTMLModule_Tidy
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Name';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'heavy';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
-
// @name for img, a -----------------------------------------------
// Technically, it's allowed even on strict, so we allow authors to use
// it. However, it's deprecated in future versions of XHTML.
$r['img@name'] =
$r['a@name'] = new HTMLPurifier_AttrTransform_Name();
-
return $r;
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php b/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
index 14c15c4a0..332643821 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
@@ -3,10 +3,21 @@
class HTMLPurifier_HTMLModule_Tidy_Proprietary extends HTMLPurifier_HTMLModule_Tidy
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Proprietary';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'light';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
$r['table@background'] = new HTMLPurifier_AttrTransform_Background();
$r['td@background'] = new HTMLPurifier_AttrTransform_Background();
@@ -18,7 +29,6 @@ class HTMLPurifier_HTMLModule_Tidy_Proprietary extends HTMLPurifier_HTMLModule_T
$r['table@height'] = new HTMLPurifier_AttrTransform_Length('height');
return $r;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Strict.php b/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
index c73dc3c4d..803c44fab 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
@@ -2,18 +2,40 @@
class HTMLPurifier_HTMLModule_Tidy_Strict extends HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Strict';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'light';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = parent::makeFixes();
$r['blockquote#content_model_type'] = 'strictblockquote';
return $r;
}
+ /**
+ * @type bool
+ */
public $defines_child_def = true;
- public function getChildDef($def) {
- if ($def->content_model_type != 'strictblockquote') return parent::getChildDef($def);
+
+ /**
+ * @param HTMLPurifier_ElementDef $def
+ * @return HTMLPurifier_ChildDef_StrictBlockquote
+ */
+ public function getChildDef($def)
+ {
+ if ($def->content_model_type != 'strictblockquote') {
+ return parent::getChildDef($def);
+ }
return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model);
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php b/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
index 9960b1dd1..c095ad974 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
@@ -2,7 +2,14 @@
class HTMLPurifier_HTMLModule_Tidy_Transitional extends HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Transitional';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'heavy';
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
index db5a378e5..3ecddc434 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
@@ -2,16 +2,25 @@
class HTMLPurifier_HTMLModule_Tidy_XHTML extends HTMLPurifier_HTMLModule_Tidy
{
-
+ /**
+ * @type string
+ */
public $name = 'Tidy_XHTML';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'medium';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
$r['@lang'] = new HTMLPurifier_AttrTransform_Lang();
return $r;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
index 02e943813..c4f16a4dc 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
@@ -3,69 +3,86 @@
class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule_Tidy
{
- public function makeFixes() {
-
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
// == deprecated tag transforms ===================================
- $r['font'] = new HTMLPurifier_TagTransform_Font();
- $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
- $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
- $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
- $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');
- $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
+ $r['font'] = new HTMLPurifier_TagTransform_Font();
+ $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
+ $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
+ $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
+ $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');
+ $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
$r['strike'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
// == deprecated attribute transforms =============================
$r['caption@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- // we're following IE's behavior, not Firefox's, due
- // to the fact that no one supports caption-side:right,
- // W3C included (with CSS 2.1). This is a slightly
- // unreasonable attribute!
- 'left' => 'text-align:left;',
- 'right' => 'text-align:right;',
- 'top' => 'caption-side:top;',
- 'bottom' => 'caption-side:bottom;' // not supported by IE
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ // we're following IE's behavior, not Firefox's, due
+ // to the fact that no one supports caption-side:right,
+ // W3C included (with CSS 2.1). This is a slightly
+ // unreasonable attribute!
+ 'left' => 'text-align:left;',
+ 'right' => 'text-align:right;',
+ 'top' => 'caption-side:top;',
+ 'bottom' => 'caption-side:bottom;' // not supported by IE
+ )
+ );
// @align for img -------------------------------------------------
$r['img@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- 'left' => 'float:left;',
- 'right' => 'float:right;',
- 'top' => 'vertical-align:top;',
- 'middle' => 'vertical-align:middle;',
- 'bottom' => 'vertical-align:baseline;',
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ 'left' => 'float:left;',
+ 'right' => 'float:right;',
+ 'top' => 'vertical-align:top;',
+ 'middle' => 'vertical-align:middle;',
+ 'bottom' => 'vertical-align:baseline;',
+ )
+ );
// @align for table -----------------------------------------------
$r['table@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- 'left' => 'float:left;',
- 'center' => 'margin-left:auto;margin-right:auto;',
- 'right' => 'float:right;'
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ 'left' => 'float:left;',
+ 'center' => 'margin-left:auto;margin-right:auto;',
+ 'right' => 'float:right;'
+ )
+ );
// @align for hr -----------------------------------------------
$r['hr@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- // we use both text-align and margin because these work
- // for different browsers (IE and Firefox, respectively)
- // and the melange makes for a pretty cross-compatible
- // solution
- 'left' => 'margin-left:0;margin-right:auto;text-align:left;',
- 'center' => 'margin-left:auto;margin-right:auto;text-align:center;',
- 'right' => 'margin-left:auto;margin-right:0;text-align:right;'
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ // we use both text-align and margin because these work
+ // for different browsers (IE and Firefox, respectively)
+ // and the melange makes for a pretty cross-compatible
+ // solution
+ 'left' => 'margin-left:0;margin-right:auto;text-align:left;',
+ 'center' => 'margin-left:auto;margin-right:auto;text-align:center;',
+ 'right' => 'margin-left:auto;margin-right:0;text-align:right;'
+ )
+ );
// @align for h1, h2, h3, h4, h5, h6, p, div ----------------------
// {{{
- $align_lookup = array();
- $align_values = array('left', 'right', 'center', 'justify');
- foreach ($align_values as $v) $align_lookup[$v] = "text-align:$v;";
+ $align_lookup = array();
+ $align_values = array('left', 'right', 'center', 'justify');
+ foreach ($align_values as $v) {
+ $align_lookup[$v] = "text-align:$v;";
+ }
// }}}
$r['h1@align'] =
$r['h2@align'] =
@@ -73,7 +90,7 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
$r['h4@align'] =
$r['h5@align'] =
$r['h6@align'] =
- $r['p@align'] =
+ $r['p@align'] =
$r['div@align'] =
new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup);
@@ -88,12 +105,15 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
// @clear for br --------------------------------------------------
$r['br@clear'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('clear', array(
- 'left' => 'clear:left;',
- 'right' => 'clear:right;',
- 'all' => 'clear:both;',
- 'none' => 'clear:none;',
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'clear',
+ array(
+ 'left' => 'clear:left;',
+ 'right' => 'clear:right;',
+ 'all' => 'clear:both;',
+ 'none' => 'clear:none;',
+ )
+ );
// @height for td, th ---------------------------------------------
$r['td@height'] =
@@ -125,19 +145,19 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
// @type for li, ol, ul -------------------------------------------
// {{{
- $ul_types = array(
- 'disc' => 'list-style-type:disc;',
- 'square' => 'list-style-type:square;',
- 'circle' => 'list-style-type:circle;'
- );
- $ol_types = array(
- '1' => 'list-style-type:decimal;',
- 'i' => 'list-style-type:lower-roman;',
- 'I' => 'list-style-type:upper-roman;',
- 'a' => 'list-style-type:lower-alpha;',
- 'A' => 'list-style-type:upper-alpha;'
- );
- $li_types = $ul_types + $ol_types;
+ $ul_types = array(
+ 'disc' => 'list-style-type:disc;',
+ 'square' => 'list-style-type:square;',
+ 'circle' => 'list-style-type:circle;'
+ );
+ $ol_types = array(
+ '1' => 'list-style-type:decimal;',
+ 'i' => 'list-style-type:lower-roman;',
+ 'I' => 'list-style-type:upper-roman;',
+ 'a' => 'list-style-type:lower-alpha;',
+ 'A' => 'list-style-type:upper-alpha;'
+ );
+ $li_types = $ul_types + $ol_types;
// }}}
$r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types);
@@ -153,9 +173,7 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
$r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width');
return $r;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php b/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
index 9c0e03198..01dbe9deb 100644
--- a/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_XMLCommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'XMLCommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Lang' => array(
'xml:lang' => 'LanguageCode',
diff --git a/library/HTMLPurifier/HTMLModuleManager.php b/library/HTMLPurifier/HTMLModuleManager.php
index f5c4a1d2c..f3a17cb03 100644
--- a/library/HTMLPurifier/HTMLModuleManager.php
+++ b/library/HTMLPurifier/HTMLModuleManager.php
@@ -4,57 +4,75 @@ class HTMLPurifier_HTMLModuleManager
{
/**
- * Instance of HTMLPurifier_DoctypeRegistry
+ * @type HTMLPurifier_DoctypeRegistry
*/
public $doctypes;
/**
- * Instance of current doctype
+ * Instance of current doctype.
+ * @type string
*/
public $doctype;
/**
- * Instance of HTMLPurifier_AttrTypes
+ * @type HTMLPurifier_AttrTypes
*/
public $attrTypes;
/**
* Active instances of modules for the specified doctype are
* indexed, by name, in this array.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $modules = array();
/**
- * Array of recognized HTMLPurifier_Module instances, indexed by
- * module's class name. This array is usually lazy loaded, but a
+ * Array of recognized HTMLPurifier_HTMLModule instances,
+ * indexed by module's class name. This array is usually lazy loaded, but a
* user can overload a module by pre-emptively registering it.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $registeredModules = array();
/**
- * List of extra modules that were added by the user using addModule().
- * These get unconditionally merged into the current doctype, whatever
+ * List of extra modules that were added by the user
+ * using addModule(). These get unconditionally merged into the current doctype, whatever
* it may be.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $userModules = array();
/**
* Associative array of element name to list of modules that have
* definitions for the element; this array is dynamically filled.
+ * @type array
*/
public $elementLookup = array();
- /** List of prefixes we should use for registering small names */
+ /**
+ * List of prefixes we should use for registering small names.
+ * @type array
+ */
public $prefixes = array('HTMLPurifier_HTMLModule_');
- public $contentSets; /**< Instance of HTMLPurifier_ContentSets */
- public $attrCollections; /**< Instance of HTMLPurifier_AttrCollections */
+ /**
+ * @type HTMLPurifier_ContentSets
+ */
+ public $contentSets;
- /** If set to true, unsafe elements and attributes will be allowed */
- public $trusted = false;
+ /**
+ * @type HTMLPurifier_AttrCollections
+ */
+ public $attrCollections;
- public function __construct() {
+ /**
+ * If set to true, unsafe elements and attributes will be allowed.
+ * @type bool
+ */
+ public $trusted = false;
+ public function __construct()
+ {
// editable internal objects
$this->attrTypes = new HTMLPurifier_AttrTypes();
$this->doctypes = new HTMLPurifier_DoctypeRegistry();
@@ -65,17 +83,18 @@ class HTMLPurifier_HTMLModuleManager
'Presentation', 'Edit', 'Bdo', 'Tables', 'Image',
'StyleAttribute',
// Unsafe:
- 'Scripting', 'Object', 'Forms',
+ 'Scripting', 'Object', 'Forms',
// Sorta legacy, but present in strict:
'Name',
);
- $transitional = array('Legacy', 'Target');
+ $transitional = array('Legacy', 'Target', 'Iframe');
$xml = array('XMLCommonAttributes');
$non_xml = array('NonXMLCommonAttributes');
// setup basic doctypes
$this->doctypes->register(
- 'HTML 4.01 Transitional', false,
+ 'HTML 4.01 Transitional',
+ false,
array_merge($common, $transitional, $non_xml),
array('Tidy_Transitional', 'Tidy_Proprietary'),
array(),
@@ -84,7 +103,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'HTML 4.01 Strict', false,
+ 'HTML 4.01 Strict',
+ false,
array_merge($common, $non_xml),
array('Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -93,7 +113,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.0 Transitional', true,
+ 'XHTML 1.0 Transitional',
+ true,
array_merge($common, $transitional, $xml, $non_xml),
array('Tidy_Transitional', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -102,7 +123,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.0 Strict', true,
+ 'XHTML 1.0 Strict',
+ true,
array_merge($common, $xml, $non_xml),
array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -111,8 +133,11 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.1', true,
- array_merge($common, $xml, array('Ruby')),
+ 'XHTML 1.1',
+ true,
+ // Iframe is a real XHTML 1.1 module, despite being
+ // "transitional"!
+ array_merge($common, $xml, array('Ruby', 'Iframe')),
array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Strict', 'Tidy_Name'), // Tidy_XHTML1_1
array(),
'-//W3C//DTD XHTML 1.1//EN',
@@ -142,7 +167,8 @@ class HTMLPurifier_HTMLModuleManager
* your module manually. All modules must have been included
* externally: registerModule will not perform inclusions for you!
*/
- public function registerModule($module, $overload = false) {
+ public function registerModule($module, $overload = false)
+ {
if (is_string($module)) {
// attempt to load the module
$original_module = $module;
@@ -157,8 +183,10 @@ class HTMLPurifier_HTMLModuleManager
if (!$ok) {
$module = $original_module;
if (!class_exists($module)) {
- trigger_error($original_module . ' module does not exist',
- E_USER_ERROR);
+ trigger_error(
+ $original_module . ' module does not exist',
+ E_USER_ERROR
+ );
return;
}
}
@@ -178,9 +206,12 @@ class HTMLPurifier_HTMLModuleManager
* Adds a module to the current doctype by first registering it,
* and then tacking it on to the active doctype
*/
- public function addModule($module) {
+ public function addModule($module)
+ {
$this->registerModule($module);
- if (is_object($module)) $module = $module->name;
+ if (is_object($module)) {
+ $module = $module->name;
+ }
$this->userModules[] = $module;
}
@@ -188,17 +219,18 @@ class HTMLPurifier_HTMLModuleManager
* Adds a class prefix that registerModule() will use to resolve a
* string name to a concrete class
*/
- public function addPrefix($prefix) {
+ public function addPrefix($prefix)
+ {
$this->prefixes[] = $prefix;
}
/**
* Performs processing on modules, after being called you may
* use getElement() and getElements()
- * @param $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {
-
+ public function setup($config)
+ {
$this->trusted = $config->get('HTML.Trusted');
// generate
@@ -211,24 +243,34 @@ class HTMLPurifier_HTMLModuleManager
if (is_array($lookup)) {
foreach ($modules as $k => $m) {
- if (isset($special_cases[$m])) continue;
- if (!isset($lookup[$m])) unset($modules[$k]);
+ if (isset($special_cases[$m])) {
+ continue;
+ }
+ if (!isset($lookup[$m])) {
+ unset($modules[$k]);
+ }
}
}
- // add proprietary module (this gets special treatment because
- // it is completely removed from doctypes, etc.)
+ // custom modules
if ($config->get('HTML.Proprietary')) {
$modules[] = 'Proprietary';
}
-
- // add SafeObject/Safeembed modules
if ($config->get('HTML.SafeObject')) {
$modules[] = 'SafeObject';
}
if ($config->get('HTML.SafeEmbed')) {
$modules[] = 'SafeEmbed';
}
+ if ($config->get('HTML.SafeScripting') !== array()) {
+ $modules[] = 'SafeScripting';
+ }
+ if ($config->get('HTML.Nofollow')) {
+ $modules[] = 'Nofollow';
+ }
+ if ($config->get('HTML.TargetBlank')) {
+ $modules[] = 'TargetBlank';
+ }
// merge in custom modules
$modules = array_merge($modules, $this->userModules);
@@ -246,7 +288,7 @@ class HTMLPurifier_HTMLModuleManager
// prepare any injectors
foreach ($this->modules as $module) {
$n = array();
- foreach ($module->info_injector as $i => $injector) {
+ foreach ($module->info_injector as $injector) {
if (!is_object($injector)) {
$class = "HTMLPurifier_Injector_$injector";
$injector = new $class;
@@ -285,7 +327,8 @@ class HTMLPurifier_HTMLModuleManager
* Takes a module and adds it to the active module collection,
* registering it if necessary.
*/
- public function processModule($module) {
+ public function processModule($module)
+ {
if (!isset($this->registeredModules[$module]) || is_object($module)) {
$this->registerModule($module);
}
@@ -296,13 +339,17 @@ class HTMLPurifier_HTMLModuleManager
* Retrieves merged element definitions.
* @return Array of HTMLPurifier_ElementDef
*/
- public function getElements() {
-
+ public function getElements()
+ {
$elements = array();
foreach ($this->modules as $module) {
- if (!$this->trusted && !$module->safe) continue;
+ if (!$this->trusted && !$module->safe) {
+ continue;
+ }
foreach ($module->info as $name => $v) {
- if (isset($elements[$name])) continue;
+ if (isset($elements[$name])) {
+ continue;
+ }
$elements[$name] = $this->getElement($name);
}
}
@@ -310,7 +357,9 @@ class HTMLPurifier_HTMLModuleManager
// remove dud elements, this happens when an element that
// appeared to be safe actually wasn't
foreach ($elements as $n => $v) {
- if ($v === false) unset($elements[$n]);
+ if ($v === false) {
+ unset($elements[$n]);
+ }
}
return $elements;
@@ -319,28 +368,29 @@ class HTMLPurifier_HTMLModuleManager
/**
* Retrieves a single merged element definition
- * @param $name Name of element
- * @param $trusted Boolean trusted overriding parameter: set to true
+ * @param string $name Name of element
+ * @param bool $trusted Boolean trusted overriding parameter: set to true
* if you want the full version of an element
- * @return Merged HTMLPurifier_ElementDef
+ * @return HTMLPurifier_ElementDef Merged HTMLPurifier_ElementDef
* @note You may notice that modules are getting iterated over twice (once
* in getElements() and once here). This
* is because
*/
- public function getElement($name, $trusted = null) {
-
+ public function getElement($name, $trusted = null)
+ {
if (!isset($this->elementLookup[$name])) {
return false;
}
// setup global state variables
$def = false;
- if ($trusted === null) $trusted = $this->trusted;
+ if ($trusted === null) {
+ $trusted = $this->trusted;
+ }
// iterate through each module that has registered itself to this
// element
- foreach($this->elementLookup[$name] as $module_name) {
-
+ foreach ($this->elementLookup[$name] as $module_name) {
$module = $this->modules[$module_name];
// refuse to create/merge from a module that is deemed unsafe--
@@ -364,6 +414,13 @@ class HTMLPurifier_HTMLModuleManager
// :TODO:
// non-standalone definitions that don't have a standalone
// to merge into could be deferred to the end
+ // HOWEVER, it is perfectly valid for a non-standalone
+ // definition to lack a standalone definition, even
+ // after all processing: this allows us to safely
+ // specify extra attributes for elements that may not be
+ // enabled all in one place. In particular, this might
+ // be the case for trusted elements. WARNING: care must
+ // be taken that the /extra/ definitions are all safe.
continue;
}
@@ -385,7 +442,9 @@ class HTMLPurifier_HTMLModuleManager
// This can occur if there is a blank definition, but no base to
// mix it in with
- if (!$def) return false;
+ if (!$def) {
+ return false;
+ }
// add information on required attributes
foreach ($def->attr as $attr_name => $attr_def) {
@@ -393,11 +452,8 @@ class HTMLPurifier_HTMLModuleManager
$def->required_attr[] = $attr_name;
}
}
-
return $def;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/IDAccumulator.php b/library/HTMLPurifier/IDAccumulator.php
index 73215295a..65c902c07 100644
--- a/library/HTMLPurifier/IDAccumulator.php
+++ b/library/HTMLPurifier/IDAccumulator.php
@@ -17,11 +17,12 @@ class HTMLPurifier_IDAccumulator
/**
* Builds an IDAccumulator, also initializing the default blacklist
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Fully initialized HTMLPurifier_IDAccumulator
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context
+ * @return HTMLPurifier_IDAccumulator Fully initialized HTMLPurifier_IDAccumulator
*/
- public static function build($config, $context) {
+ public static function build($config, $context)
+ {
$id_accumulator = new HTMLPurifier_IDAccumulator();
$id_accumulator->load($config->get('Attr.IDBlacklist'));
return $id_accumulator;
@@ -29,11 +30,14 @@ class HTMLPurifier_IDAccumulator
/**
* Add an ID to the lookup table.
- * @param $id ID to be added.
- * @return Bool status, true if success, false if there's a dupe
+ * @param string $id ID to be added.
+ * @return bool status, true if success, false if there's a dupe
*/
- public function add($id) {
- if (isset($this->ids[$id])) return false;
+ public function add($id)
+ {
+ if (isset($this->ids[$id])) {
+ return false;
+ }
return $this->ids[$id] = true;
}
@@ -42,12 +46,12 @@ class HTMLPurifier_IDAccumulator
* @param $array_of_ids Array of IDs to load
* @note This function doesn't care about duplicates
*/
- public function load($array_of_ids) {
+ public function load($array_of_ids)
+ {
foreach ($array_of_ids as $id) {
$this->ids[$id] = true;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector.php b/library/HTMLPurifier/Injector.php
index 5922f8130..5060eef9e 100644
--- a/library/HTMLPurifier/Injector.php
+++ b/library/HTMLPurifier/Injector.php
@@ -17,64 +17,71 @@ abstract class HTMLPurifier_Injector
{
/**
- * Advisory name of injector, this is for friendly error messages
+ * Advisory name of injector, this is for friendly error messages.
+ * @type string
*/
public $name;
/**
- * Instance of HTMLPurifier_HTMLDefinition
+ * @type HTMLPurifier_HTMLDefinition
*/
protected $htmlDefinition;
/**
* Reference to CurrentNesting variable in Context. This is an array
* list of tokens that we are currently "inside"
+ * @type array
*/
protected $currentNesting;
/**
- * Reference to InputTokens variable in Context. This is an array
- * list of the input tokens that are being processed.
+ * Reference to current token.
+ * @type HTMLPurifier_Token
*/
- protected $inputTokens;
+ protected $currentToken;
/**
- * Reference to InputIndex variable in Context. This is an integer
- * array index for $this->inputTokens that indicates what token
- * is currently being processed.
+ * Reference to InputZipper variable in Context.
+ * @type HTMLPurifier_Zipper
*/
- protected $inputIndex;
+ protected $inputZipper;
/**
* Array of elements and attributes this injector creates and therefore
* need to be allowed by the definition. Takes form of
* array('element' => array('attr', 'attr2'), 'element2')
+ * @type array
*/
public $needed = array();
/**
- * Index of inputTokens to rewind to.
+ * Number of elements to rewind backwards (relative).
+ * @type bool|int
*/
- protected $rewind = false;
+ protected $rewindOffset = false;
/**
* Rewind to a spot to re-perform processing. This is useful if you
* deleted a node, and now need to see if this change affected any
* earlier nodes. Rewinding does not affect other injectors, and can
* result in infinite loops if not used carefully.
+ * @param bool|int $offset
* @warning HTML Purifier will prevent you from fast-forwarding with this
* function.
*/
- public function rewind($index) {
- $this->rewind = $index;
+ public function rewindOffset($offset)
+ {
+ $this->rewindOffset = $offset;
}
/**
- * Retrieves rewind, and then unsets it.
+ * Retrieves rewind offset, and then unsets it.
+ * @return bool|int
*/
- public function getRewind() {
- $r = $this->rewind;
- $this->rewind = false;
+ public function getRewindOffset()
+ {
+ $r = $this->rewindOffset;
+ $this->rewindOffset = false;
return $r;
}
@@ -83,20 +90,23 @@ abstract class HTMLPurifier_Injector
* this allows references to important variables to be made within
* the injector. This function also checks if the HTML environment
* will work with the Injector (see checkNeeded()).
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Boolean false if success, string of missing needed element/attribute if failure
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
*/
- public function prepare($config, $context) {
+ public function prepare($config, $context)
+ {
$this->htmlDefinition = $config->getHTMLDefinition();
// Even though this might fail, some unit tests ignore this and
// still test checkNeeded, so be careful. Maybe get rid of that
// dependency.
$result = $this->checkNeeded($config);
- if ($result !== false) return $result;
+ if ($result !== false) {
+ return $result;
+ }
$this->currentNesting =& $context->get('CurrentNesting');
- $this->inputTokens =& $context->get('InputTokens');
- $this->inputIndex =& $context->get('InputIndex');
+ $this->currentToken =& $context->get('CurrentToken');
+ $this->inputZipper =& $context->get('InputZipper');
return false;
}
@@ -104,18 +114,26 @@ abstract class HTMLPurifier_Injector
* This function checks if the HTML environment
* will work with the Injector: if p tags are not allowed, the
* Auto-Paragraphing injector should not be enabled.
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Boolean false if success, string of missing needed element/attribute if failure
+ * @param HTMLPurifier_Config $config
+ * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
*/
- public function checkNeeded($config) {
+ public function checkNeeded($config)
+ {
$def = $config->getHTMLDefinition();
foreach ($this->needed as $element => $attributes) {
- if (is_int($element)) $element = $attributes;
- if (!isset($def->info[$element])) return $element;
- if (!is_array($attributes)) continue;
+ if (is_int($element)) {
+ $element = $attributes;
+ }
+ if (!isset($def->info[$element])) {
+ return $element;
+ }
+ if (!is_array($attributes)) {
+ continue;
+ }
foreach ($attributes as $name) {
- if (!isset($def->info[$element]->attr[$name])) return "$element.$name";
+ if (!isset($def->info[$element]->attr[$name])) {
+ return "$element.$name";
+ }
}
}
return false;
@@ -123,10 +141,11 @@ abstract class HTMLPurifier_Injector
/**
* Tests if the context node allows a certain element
- * @param $name Name of element to test for
- * @return True if element is allowed, false if it is not
+ * @param string $name Name of element to test for
+ * @return bool True if element is allowed, false if it is not
*/
- public function allowsElement($name) {
+ public function allowsElement($name)
+ {
if (!empty($this->currentNesting)) {
$parent_token = array_pop($this->currentNesting);
$this->currentNesting[] = $parent_token;
@@ -141,7 +160,9 @@ abstract class HTMLPurifier_Injector
for ($i = count($this->currentNesting) - 2; $i >= 0; $i--) {
$node = $this->currentNesting[$i];
$def = $this->htmlDefinition->info[$node->name];
- if (isset($def->excludes[$name])) return false;
+ if (isset($def->excludes[$name])) {
+ return false;
+ }
}
return true;
}
@@ -151,14 +172,22 @@ abstract class HTMLPurifier_Injector
* you reach the end of the input tokens.
* @warning Please prevent previous references from interfering with this
* functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
- */
- protected function forward(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex + 1;
- else $i++;
- if (!isset($this->inputTokens[$i])) return false;
- $current = $this->inputTokens[$i];
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @return bool
+ */
+ protected function forward(&$i, &$current)
+ {
+ if ($i === null) {
+ $i = count($this->inputZipper->back) - 1;
+ } else {
+ $i--;
+ }
+ if ($i < 0) {
+ return false;
+ }
+ $current = $this->inputZipper->back[$i];
return true;
}
@@ -166,14 +195,27 @@ abstract class HTMLPurifier_Injector
* Similar to _forward, but accepts a third parameter $nesting (which
* should be initialized at 0) and stops when we hit the end tag
* for the node $this->inputIndex starts in.
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @param int $nesting
+ * @return bool
*/
- protected function forwardUntilEndToken(&$i, &$current, &$nesting) {
+ protected function forwardUntilEndToken(&$i, &$current, &$nesting)
+ {
$result = $this->forward($i, $current);
- if (!$result) return false;
- if ($nesting === null) $nesting = 0;
- if ($current instanceof HTMLPurifier_Token_Start) $nesting++;
- elseif ($current instanceof HTMLPurifier_Token_End) {
- if ($nesting <= 0) return false;
+ if (!$result) {
+ return false;
+ }
+ if ($nesting === null) {
+ $nesting = 0;
+ }
+ if ($current instanceof HTMLPurifier_Token_Start) {
+ $nesting++;
+ } elseif ($current instanceof HTMLPurifier_Token_End) {
+ if ($nesting <= 0) {
+ return false;
+ }
$nesting--;
}
return true;
@@ -184,56 +226,56 @@ abstract class HTMLPurifier_Injector
* you reach the beginning of input tokens.
* @warning Please prevent previous references from interfering with this
* functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
- */
- protected function backward(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex - 1;
- else $i--;
- if ($i < 0) return false;
- $current = $this->inputTokens[$i];
- return true;
- }
-
- /**
- * Initializes the iterator at the current position. Use in a do {} while;
- * loop to force the _forward and _backward functions to start at the
- * current location.
- * @warning Please prevent previous references from interfering with this
- * functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @return bool
*/
- protected function current(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex;
- $current = $this->inputTokens[$i];
+ protected function backward(&$i, &$current)
+ {
+ if ($i === null) {
+ $i = count($this->inputZipper->front) - 1;
+ } else {
+ $i--;
+ }
+ if ($i < 0) {
+ return false;
+ }
+ $current = $this->inputZipper->front[$i];
+ return true;
}
/**
* Handler that is called when a text token is processed
*/
- public function handleText(&$token) {}
+ public function handleText(&$token)
+ {
+ }
/**
* Handler that is called when a start or empty token is processed
*/
- public function handleElement(&$token) {}
+ public function handleElement(&$token)
+ {
+ }
/**
* Handler that is called when an end token is processed
*/
- public function handleEnd(&$token) {
+ public function handleEnd(&$token)
+ {
$this->notifyEnd($token);
}
/**
* Notifier that is called when an end token is processed
+ * @param HTMLPurifier_Token $token Current token variable.
* @note This differs from handlers in that the token is read-only
* @deprecated
*/
- public function notifyEnd($token) {}
-
-
+ public function notifyEnd($token)
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/AutoParagraph.php b/library/HTMLPurifier/Injector/AutoParagraph.php
index afa760892..4afdd128d 100644
--- a/library/HTMLPurifier/Injector/AutoParagraph.php
+++ b/library/HTMLPurifier/Injector/AutoParagraph.php
@@ -8,17 +8,31 @@
*/
class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'AutoParagraph';
+
+ /**
+ * @type array
+ */
public $needed = array('p');
- private function _pStart() {
+ /**
+ * @return HTMLPurifier_Token_Start
+ */
+ private function _pStart()
+ {
$par = new HTMLPurifier_Token_Start('p');
$par->armor['MakeWellFormed_TagClosedError'] = true;
return $par;
}
- public function handleText(&$token) {
+ /**
+ * @param HTMLPurifier_Token_Text $token
+ */
+ public function handleText(&$token)
+ {
$text = $token->data;
// Does the current parent allow <p> tags?
if ($this->allowsElement('p')) {
@@ -72,11 +86,9 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
// ----
}
}
- // Is the current parent a <p> tag?
- } elseif (
- !empty($this->currentNesting) &&
- $this->currentNesting[count($this->currentNesting)-1]->name == 'p'
- ) {
+ // Is the current parent a <p> tag?
+ } elseif (!empty($this->currentNesting) &&
+ $this->currentNesting[count($this->currentNesting) - 1]->name == 'p') {
// State 3.1: ...<p>PAR1
// ----
@@ -84,7 +96,7 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
// ------------
$token = array();
$this->_splitText($text, $token);
- // Abort!
+ // Abort!
} else {
// State 4.1: ...<b>PAR1
// ----
@@ -94,7 +106,11 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
}
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
// We don't have to check if we're already in a <p> tag for block
// tokens, because the tag would have been autoclosed by MakeWellFormed.
if ($this->allowsElement('p')) {
@@ -102,7 +118,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
if ($this->_isInline($token)) {
// State 1: <div>...<b>
// ---
-
// Check if this token is adjacent to the parent token
// (seek backwards until token isn't whitespace)
$i = null;
@@ -110,31 +125,24 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
if (!$prev instanceof HTMLPurifier_Token_Start) {
// Token wasn't adjacent
-
- if (
- $prev instanceof HTMLPurifier_Token_Text &&
+ if ($prev instanceof HTMLPurifier_Token_Text &&
substr($prev->data, -2) === "\n\n"
) {
// State 1.1.4: <div><p>PAR1</p>\n\n<b>
// ---
-
// Quite frankly, this should be handled by splitText
$token = array($this->_pStart(), $token);
} else {
// State 1.1.1: <div><p>PAR1</p><b>
// ---
-
// State 1.1.2: <div><br /><b>
// ---
-
// State 1.1.3: <div>PAR<b>
// ---
}
-
} else {
// State 1.2.1: <div><b>
// ---
-
// Lookahead to see if <p> is needed.
if ($this->_pLookAhead()) {
// State 1.3.1: <div><b>PAR1\n\nPAR2
@@ -166,24 +174,20 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
$i = null;
if ($this->backward($i, $prev)) {
- if (
- !$prev instanceof HTMLPurifier_Token_Text
- ) {
+ if (!$prev instanceof HTMLPurifier_Token_Text) {
// State 3.1.1: ...</p>{p}<b>
// ---
-
// State 3.2.1: ...</p><div>
// -----
-
- if (!is_array($token)) $token = array($token);
+ if (!is_array($token)) {
+ $token = array($token);
+ }
array_unshift($token, new HTMLPurifier_Token_Text("\n\n"));
} else {
// State 3.1.2: ...</p>\n\n{p}<b>
// ---
-
// State 3.2.2: ...</p>\n\n<div>
// -----
-
// Note: PAR<ELEM> cannot occur because PAR would have been
// wrapped in <p> tags.
}
@@ -192,7 +196,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
} else {
// State 2.2: <ul><li>
// ----
-
// State 2.4: <p><b>
// ---
}
@@ -201,18 +204,17 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
/**
* Splits up a text in paragraph tokens and appends them
* to the result stream that will replace the original
- * @param $data String text data that will be processed
+ * @param string $data String text data that will be processed
* into paragraphs
- * @param $result Reference to array of tokens that the
+ * @param HTMLPurifier_Token[] $result Reference to array of tokens that the
* tags will be appended onto
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
*/
- private function _splitText($data, &$result) {
+ private function _splitText($data, &$result)
+ {
$raw_paragraphs = explode("\n\n", $data);
- $paragraphs = array(); // without empty paragraphs
+ $paragraphs = array(); // without empty paragraphs
$needs_start = false;
- $needs_end = false;
+ $needs_end = false;
$c = count($raw_paragraphs);
if ($c == 1) {
@@ -285,26 +287,33 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
array_pop($result); // removes \n\n
array_pop($result); // removes </p>
}
-
}
/**
* Returns true if passed token is inline (and, ergo, allowed in
* paragraph tags)
+ * @param HTMLPurifier_Token $token
+ * @return bool
*/
- private function _isInline($token) {
+ private function _isInline($token)
+ {
return isset($this->htmlDefinition->info['p']->child->elements[$token->name]);
}
/**
* Looks ahead in the token list and determines whether or not we need
* to insert a <p> tag.
+ * @return bool
*/
- private function _pLookAhead() {
- $this->current($i, $current);
- if ($current instanceof HTMLPurifier_Token_Start) $nesting = 1;
- else $nesting = 0;
+ private function _pLookAhead()
+ {
+ if ($this->currentToken instanceof HTMLPurifier_Token_Start) {
+ $nesting = 1;
+ } else {
+ $nesting = 0;
+ }
$ok = false;
+ $i = null;
while ($this->forwardUntilEndToken($i, $current, $nesting)) {
$result = $this->_checkNeedsP($current);
if ($result !== null) {
@@ -318,9 +327,12 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
/**
* Determines if a particular token requires an earlier inline token
* to get a paragraph. This should be used with _forwardUntilEndToken
+ * @param HTMLPurifier_Token $current
+ * @return bool
*/
- private function _checkNeedsP($current) {
- if ($current instanceof HTMLPurifier_Token_Start){
+ private function _checkNeedsP($current)
+ {
+ if ($current instanceof HTMLPurifier_Token_Start) {
if (!$this->_isInline($current)) {
// <div>PAR1<div>
// ----
@@ -339,7 +351,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
}
return null;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/DisplayLinkURI.php b/library/HTMLPurifier/Injector/DisplayLinkURI.php
index 9dce9bd08..c19b1bc27 100644
--- a/library/HTMLPurifier/Injector/DisplayLinkURI.php
+++ b/library/HTMLPurifier/Injector/DisplayLinkURI.php
@@ -5,15 +5,29 @@
*/
class HTMLPurifier_Injector_DisplayLinkURI extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'DisplayLinkURI';
+
+ /**
+ * @type array
+ */
public $needed = array('a');
- public function handleElement(&$token) {
+ /**
+ * @param $token
+ */
+ public function handleElement(&$token)
+ {
}
- public function handleEnd(&$token) {
- if (isset($token->start->attr['href'])){
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleEnd(&$token)
+ {
+ if (isset($token->start->attr['href'])) {
$url = $token->start->attr['href'];
unset($token->start->attr['href']);
$token = array($token, new HTMLPurifier_Token_Text(" ($url)"));
diff --git a/library/HTMLPurifier/Injector/Linkify.php b/library/HTMLPurifier/Injector/Linkify.php
index 296dac282..069708c25 100644
--- a/library/HTMLPurifier/Injector/Linkify.php
+++ b/library/HTMLPurifier/Injector/Linkify.php
@@ -5,12 +5,24 @@
*/
class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'Linkify';
+
+ /**
+ * @type array
+ */
public $needed = array('a' => array('href'));
- public function handleText(&$token) {
- if (!$this->allowsElement('a')) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleText(&$token)
+ {
+ if (!$this->allowsElement('a')) {
+ return;
+ }
if (strpos($token->data, '://') === false) {
// our really quick heuristic failed, abort
@@ -21,7 +33,8 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
// there is/are URL(s). Let's split the string:
// Note: this regex is extremely permissive
- $bits = preg_split('#((?:https?|ftp)://[^\s\'"<>()]+)#S', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $bits = preg_split('#((?:https?|ftp)://[^\s\'",<>()]+)#Su', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
+
$token = array();
@@ -30,7 +43,9 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
// $l = is link
for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
if (!$l) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
$token[] = new HTMLPurifier_Token_Text($bits[$i]);
} else {
$token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i]));
@@ -38,9 +53,7 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
$token[] = new HTMLPurifier_Token_End('a');
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/PurifierLinkify.php b/library/HTMLPurifier/Injector/PurifierLinkify.php
index ad2455a91..cb9046f33 100644
--- a/library/HTMLPurifier/Injector/PurifierLinkify.php
+++ b/library/HTMLPurifier/Injector/PurifierLinkify.php
@@ -6,19 +6,43 @@
*/
class HTMLPurifier_Injector_PurifierLinkify extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'PurifierLinkify';
+
+ /**
+ * @type string
+ */
public $docURL;
+
+ /**
+ * @type array
+ */
public $needed = array('a' => array('href'));
- public function prepare($config, $context) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function prepare($config, $context)
+ {
$this->docURL = $config->get('AutoFormat.PurifierLinkify.DocURL');
return parent::prepare($config, $context);
}
- public function handleText(&$token) {
- if (!$this->allowsElement('a')) return;
- if (strpos($token->data, '%') === false) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleText(&$token)
+ {
+ if (!$this->allowsElement('a')) {
+ return;
+ }
+ if (strpos($token->data, '%') === false) {
+ return;
+ }
$bits = preg_split('#%([a-z0-9]+\.[a-z0-9]+)#Si', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
$token = array();
@@ -28,18 +52,20 @@ class HTMLPurifier_Injector_PurifierLinkify extends HTMLPurifier_Injector
// $l = is link
for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
if (!$l) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
$token[] = new HTMLPurifier_Token_Text($bits[$i]);
} else {
- $token[] = new HTMLPurifier_Token_Start('a',
- array('href' => str_replace('%s', $bits[$i], $this->docURL)));
+ $token[] = new HTMLPurifier_Token_Start(
+ 'a',
+ array('href' => str_replace('%s', $bits[$i], $this->docURL))
+ );
$token[] = new HTMLPurifier_Token_Text('%' . $bits[$i]);
$token[] = new HTMLPurifier_Token_End('a');
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/RemoveEmpty.php b/library/HTMLPurifier/Injector/RemoveEmpty.php
index 638bfca03..cd885722e 100644
--- a/library/HTMLPurifier/Injector/RemoveEmpty.php
+++ b/library/HTMLPurifier/Injector/RemoveEmpty.php
@@ -2,10 +2,44 @@
class HTMLPurifier_Injector_RemoveEmpty extends HTMLPurifier_Injector
{
+ /**
+ * @type HTMLPurifier_Context
+ */
+ private $context;
- private $context, $config, $attrValidator, $removeNbsp, $removeNbspExceptions;
+ /**
+ * @type HTMLPurifier_Config
+ */
+ private $config;
- public function prepare($config, $context) {
+ /**
+ * @type HTMLPurifier_AttrValidator
+ */
+ private $attrValidator;
+
+ /**
+ * @type bool
+ */
+ private $removeNbsp;
+
+ /**
+ * @type bool
+ */
+ private $removeNbspExceptions;
+
+ /**
+ * @type array
+ * TODO: make me configurable
+ */
+ private $_exclude = array('colgroup' => 1, 'th' => 1, 'td' => 1, 'iframe' => 1);
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return void
+ */
+ public function prepare($config, $context)
+ {
parent::prepare($config, $context);
$this->config = $config;
$this->context = $context;
@@ -14,38 +48,54 @@ class HTMLPurifier_Injector_RemoveEmpty extends HTMLPurifier_Injector
$this->attrValidator = new HTMLPurifier_AttrValidator();
}
- public function handleElement(&$token) {
- if (!$token instanceof HTMLPurifier_Token_Start) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
+ if (!$token instanceof HTMLPurifier_Token_Start) {
+ return;
+ }
$next = false;
- for ($i = $this->inputIndex + 1, $c = count($this->inputTokens); $i < $c; $i++) {
- $next = $this->inputTokens[$i];
+ $deleted = 1; // the current tag
+ for ($i = count($this->inputZipper->back) - 1; $i >= 0; $i--, $deleted++) {
+ $next = $this->inputZipper->back[$i];
if ($next instanceof HTMLPurifier_Token_Text) {
- if ($next->is_whitespace) continue;
+ if ($next->is_whitespace) {
+ continue;
+ }
if ($this->removeNbsp && !isset($this->removeNbspExceptions[$token->name])) {
$plain = str_replace("\xC2\xA0", "", $next->data);
$isWsOrNbsp = $plain === '' || ctype_space($plain);
- if ($isWsOrNbsp) continue;
+ if ($isWsOrNbsp) {
+ continue;
+ }
}
}
break;
}
if (!$next || ($next instanceof HTMLPurifier_Token_End && $next->name == $token->name)) {
- if ($token->name == 'colgroup') return;
+ if (isset($this->_exclude[$token->name])) {
+ return;
+ }
$this->attrValidator->validateToken($token, $this->config, $this->context);
$token->armor['ValidateAttributes'] = true;
- if (isset($token->attr['id']) || isset($token->attr['name'])) return;
- $token = $i - $this->inputIndex + 1;
- for ($b = $this->inputIndex - 1; $b > 0; $b--) {
- $prev = $this->inputTokens[$b];
- if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) continue;
+ if (isset($token->attr['id']) || isset($token->attr['name'])) {
+ return;
+ }
+ $token = $deleted + 1;
+ for ($b = 0, $c = count($this->inputZipper->front); $b < $c; $b++) {
+ $prev = $this->inputZipper->front[$b];
+ if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) {
+ continue;
+ }
break;
}
// This is safe because we removed the token that triggered this.
- $this->rewind($b - 1);
+ $this->rewindOffset($b+$deleted);
return;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php b/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
index b21313470..9ee7aa84d 100644
--- a/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
+++ b/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
@@ -5,25 +5,45 @@
*/
class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_Injector
{
+ /**
+ * @type string
+ */
public $name = 'RemoveSpansWithoutAttributes';
+
+ /**
+ * @type array
+ */
public $needed = array('span');
+ /**
+ * @type HTMLPurifier_AttrValidator
+ */
private $attrValidator;
/**
- * Used by AttrValidator
+ * Used by AttrValidator.
+ * @type HTMLPurifier_Config
*/
private $config;
+
+ /**
+ * @type HTMLPurifier_Context
+ */
private $context;
- public function prepare($config, $context) {
+ public function prepare($config, $context)
+ {
$this->attrValidator = new HTMLPurifier_AttrValidator();
$this->config = $config;
$this->context = $context;
return parent::prepare($config, $context);
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) {
return;
}
@@ -39,8 +59,8 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In
}
$nesting = 0;
- $spanContentTokens = array();
- while ($this->forwardUntilEndToken($i, $current, $nesting)) {}
+ while ($this->forwardUntilEndToken($i, $current, $nesting)) {
+ }
if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') {
// Mark closing span tag for deletion
@@ -50,7 +70,11 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In
}
}
- public function handleEnd(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleEnd(&$token)
+ {
if ($token->markForDeletion) {
$token = false;
}
diff --git a/library/HTMLPurifier/Injector/SafeObject.php b/library/HTMLPurifier/Injector/SafeObject.php
index 9e178ce01..3d17e07af 100644
--- a/library/HTMLPurifier/Injector/SafeObject.php
+++ b/library/HTMLPurifier/Injector/SafeObject.php
@@ -6,29 +6,61 @@
*/
class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
{
+ /**
+ * @type string
+ */
public $name = 'SafeObject';
+
+ /**
+ * @type array
+ */
public $needed = array('object', 'param');
+ /**
+ * @type array
+ */
protected $objectStack = array();
- protected $paramStack = array();
- // Keep this synchronized with AttrTransform/SafeParam.php
+ /**
+ * @type array
+ */
+ protected $paramStack = array();
+
+ /**
+ * Keep this synchronized with AttrTransform/SafeParam.php.
+ * @type array
+ */
protected $addParam = array(
'allowScriptAccess' => 'never',
'allowNetworking' => 'internal',
);
+
+ /**
+ * @type array
+ */
protected $allowedParam = array(
'wmode' => true,
'movie' => true,
'flashvars' => true,
'src' => true,
+ 'allowFullScreen' => true, // if omitted, assume to be 'false'
);
- public function prepare($config, $context) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return void
+ */
+ public function prepare($config, $context)
+ {
parent::prepare($config, $context);
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
if ($token->name == 'object') {
$this->objectStack[] = $token;
$this->paramStack[] = array();
@@ -50,16 +82,15 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
// attribute, which we need if a type is specified. This is
// *very* Flash specific.
if (!isset($this->objectStack[$i]->attr['data']) &&
- ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')) {
+ ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')
+ ) {
$this->objectStack[$i]->attr['data'] = $token->attr['value'];
}
// Check if the parameter is the correct value but has not
// already been added
- if (
- !isset($this->paramStack[$i][$n]) &&
+ if (!isset($this->paramStack[$i][$n]) &&
isset($this->addParam[$n]) &&
- $token->attr['name'] === $this->addParam[$n]
- ) {
+ $token->attr['name'] === $this->addParam[$n]) {
// keep token, and add to param stack
$this->paramStack[$i][$n] = true;
} elseif (isset($this->allowedParam[$n])) {
@@ -75,7 +106,8 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
}
}
- public function handleEnd(&$token) {
+ public function handleEnd(&$token)
+ {
// This is the WRONG way of handling the object and param stacks;
// we should be inserting them directly on the relevant object tokens
// so that the global stack handling handles it.
@@ -84,7 +116,6 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
array_pop($this->paramStack);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language.php b/library/HTMLPurifier/Language.php
index 3e2be03b5..65277dd43 100644
--- a/library/HTMLPurifier/Language.php
+++ b/library/HTMLPurifier/Language.php
@@ -8,22 +8,26 @@ class HTMLPurifier_Language
{
/**
- * ISO 639 language code of language. Prefers shortest possible version
+ * ISO 639 language code of language. Prefers shortest possible version.
+ * @type string
*/
public $code = 'en';
/**
- * Fallback language code
+ * Fallback language code.
+ * @type bool|string
*/
public $fallback = false;
/**
- * Array of localizable messages
+ * Array of localizable messages.
+ * @type array
*/
public $messages = array();
/**
- * Array of localizable error codes
+ * Array of localizable error codes.
+ * @type array
*/
public $errorNames = array();
@@ -31,21 +35,33 @@ class HTMLPurifier_Language
* True if no message file was found for this language, so English
* is being used instead. Check this if you'd like to notify the
* user that they've used a non-supported language.
+ * @type bool
*/
public $error = false;
/**
* Has the language object been loaded yet?
+ * @type bool
* @todo Make it private, fix usage in HTMLPurifier_LanguageTest
*/
public $_loaded = false;
/**
- * Instances of HTMLPurifier_Config and HTMLPurifier_Context
+ * @type HTMLPurifier_Config
*/
- protected $config, $context;
+ protected $config;
- public function __construct($config, $context) {
+ /**
+ * @type HTMLPurifier_Context
+ */
+ protected $context;
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ */
+ public function __construct($config, $context)
+ {
$this->config = $config;
$this->context = $context;
}
@@ -54,8 +70,11 @@ class HTMLPurifier_Language
* Loads language object with necessary info from factory cache
* @note This is a lazy loader
*/
- public function load() {
- if ($this->_loaded) return;
+ public function load()
+ {
+ if ($this->_loaded) {
+ return;
+ }
$factory = HTMLPurifier_LanguageFactory::instance();
$factory->loadLanguage($this->code);
foreach ($factory->keys as $key) {
@@ -66,31 +85,43 @@ class HTMLPurifier_Language
/**
* Retrieves a localised message.
- * @param $key string identifier of message
+ * @param string $key string identifier of message
* @return string localised message
*/
- public function getMessage($key) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->messages[$key])) return "[$key]";
+ public function getMessage($key)
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->messages[$key])) {
+ return "[$key]";
+ }
return $this->messages[$key];
}
/**
* Retrieves a localised error name.
- * @param $int integer error number, corresponding to PHP's error
- * reporting
+ * @param int $int error number, corresponding to PHP's error reporting
* @return string localised message
*/
- public function getErrorName($int) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->errorNames[$int])) return "[Error: $int]";
+ public function getErrorName($int)
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->errorNames[$int])) {
+ return "[Error: $int]";
+ }
return $this->errorNames[$int];
}
/**
* Converts an array list into a string readable representation
+ * @param array $array
+ * @return string
*/
- public function listify($array) {
+ public function listify($array)
+ {
$sep = $this->getMessage('Item separator');
$sep_last = $this->getMessage('Item separator last');
$ret = '';
@@ -108,15 +139,20 @@ class HTMLPurifier_Language
/**
* Formats a localised message with passed parameters
- * @param $key string identifier of message
- * @param $args Parameters to substitute in
+ * @param string $key string identifier of message
+ * @param array $args Parameters to substitute in
* @return string localised message
* @todo Implement conditionals? Right now, some messages make
* reference to line numbers, but those aren't always available
*/
- public function formatMessage($key, $args = array()) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->messages[$key])) return "[$key]";
+ public function formatMessage($key, $args = array())
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->messages[$key])) {
+ return "[$key]";
+ }
$raw = $this->messages[$key];
$subst = array();
$generator = false;
@@ -124,9 +160,15 @@ class HTMLPurifier_Language
if (is_object($value)) {
if ($value instanceof HTMLPurifier_Token) {
// factor this out some time
- if (!$generator) $generator = $this->context->get('Generator');
- if (isset($value->name)) $subst['$'.$i.'.Name'] = $value->name;
- if (isset($value->data)) $subst['$'.$i.'.Data'] = $value->data;
+ if (!$generator) {
+ $generator = $this->context->get('Generator');
+ }
+ if (isset($value->name)) {
+ $subst['$'.$i.'.Name'] = $value->name;
+ }
+ if (isset($value->data)) {
+ $subst['$'.$i.'.Data'] = $value->data;
+ }
$subst['$'.$i.'.Compact'] =
$subst['$'.$i.'.Serialized'] = $generator->generateFromToken($value);
// a more complex algorithm for compact representation
@@ -157,7 +199,6 @@ class HTMLPurifier_Language
}
return strtr($raw, $subst);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language/classes/en-x-test.php b/library/HTMLPurifier/Language/classes/en-x-test.php
index d52fcb7ac..8828f5cde 100644
--- a/library/HTMLPurifier/Language/classes/en-x-test.php
+++ b/library/HTMLPurifier/Language/classes/en-x-test.php
@@ -4,9 +4,6 @@
class HTMLPurifier_Language_en_x_test extends HTMLPurifier_Language
{
-
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language/messages/en.php b/library/HTMLPurifier/Language/messages/en.php
index 8d7b5736b..c7f197e1e 100644
--- a/library/HTMLPurifier/Language/messages/en.php
+++ b/library/HTMLPurifier/Language/messages/en.php
@@ -4,60 +4,52 @@ $fallback = false;
$messages = array(
-'HTMLPurifier' => 'HTML Purifier',
-
+ 'HTMLPurifier' => 'HTML Purifier',
// for unit testing purposes
-'LanguageFactoryTest: Pizza' => 'Pizza',
-'LanguageTest: List' => '$1',
-'LanguageTest: Hash' => '$1.Keys; $1.Values',
-
-'Item separator' => ', ',
-'Item separator last' => ' and ', // non-Harvard style
-
-'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.',
-'ErrorCollector: At line' => ' at line $line',
-'ErrorCollector: Incidental errors' => 'Incidental errors',
-
-'Lexer: Unclosed comment' => 'Unclosed comment',
-'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be &lt;',
-'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped',
-'Lexer: Missing attribute key' => 'Attribute declaration has no key',
-'Lexer: Missing end quote' => 'Attribute declaration has no end quote',
-'Lexer: Extracted body' => 'Removed document metadata tags',
-
-'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized',
-'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1',
-'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text',
-'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed',
-'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed',
-'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed',
-'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end',
-'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed',
-'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens',
-
-'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed',
-'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text',
-'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact',
-'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact',
-'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed',
-'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text',
-'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized',
-'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document',
-
-'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed',
-'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element',
-'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model',
-'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed',
-
-'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys',
-'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed',
-
+ 'LanguageFactoryTest: Pizza' => 'Pizza',
+ 'LanguageTest: List' => '$1',
+ 'LanguageTest: Hash' => '$1.Keys; $1.Values',
+ 'Item separator' => ', ',
+ 'Item separator last' => ' and ', // non-Harvard style
+
+ 'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.',
+ 'ErrorCollector: At line' => ' at line $line',
+ 'ErrorCollector: Incidental errors' => 'Incidental errors',
+ 'Lexer: Unclosed comment' => 'Unclosed comment',
+ 'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be &lt;',
+ 'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped',
+ 'Lexer: Missing attribute key' => 'Attribute declaration has no key',
+ 'Lexer: Missing end quote' => 'Attribute declaration has no end quote',
+ 'Lexer: Extracted body' => 'Removed document metadata tags',
+ 'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized',
+ 'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1',
+ 'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text',
+ 'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed',
+ 'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed',
+ 'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed',
+ 'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end',
+ 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed',
+ 'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens',
+ 'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed',
+ 'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text',
+ 'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact',
+ 'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact',
+ 'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed',
+ 'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text',
+ 'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized',
+ 'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document',
+ 'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed',
+ 'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element',
+ 'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model',
+ 'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed',
+ 'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys',
+ 'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed',
);
$errorNames = array(
- E_ERROR => 'Error',
+ E_ERROR => 'Error',
E_WARNING => 'Warning',
- E_NOTICE => 'Notice'
+ E_NOTICE => 'Notice'
);
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/LanguageFactory.php b/library/HTMLPurifier/LanguageFactory.php
index 134ef8c74..4e35272d8 100644
--- a/library/HTMLPurifier/LanguageFactory.php
+++ b/library/HTMLPurifier/LanguageFactory.php
@@ -11,50 +11,53 @@ class HTMLPurifier_LanguageFactory
{
/**
- * Cache of language code information used to load HTMLPurifier_Language objects
+ * Cache of language code information used to load HTMLPurifier_Language objects.
* Structure is: $factory->cache[$language_code][$key] = $value
- * @value array map
+ * @type array
*/
public $cache;
/**
* Valid keys in the HTMLPurifier_Language object. Designates which
* variables to slurp out of a message file.
- * @value array list
+ * @type array
*/
public $keys = array('fallback', 'messages', 'errorNames');
/**
- * Instance of HTMLPurifier_AttrDef_Lang to validate language codes
- * @value object HTMLPurifier_AttrDef_Lang
+ * Instance to validate language codes.
+ * @type HTMLPurifier_AttrDef_Lang
+ *
*/
protected $validator;
/**
* Cached copy of dirname(__FILE__), directory of current file without
- * trailing slash
- * @value string filename
+ * trailing slash.
+ * @type string
*/
protected $dir;
/**
- * Keys whose contents are a hash map and can be merged
- * @value array lookup
+ * Keys whose contents are a hash map and can be merged.
+ * @type array
*/
protected $mergeable_keys_map = array('messages' => true, 'errorNames' => true);
/**
- * Keys whose contents are a list and can be merged
+ * Keys whose contents are a list and can be merged.
* @value array lookup
*/
protected $mergeable_keys_list = array();
/**
* Retrieve sole instance of the factory.
- * @param $prototype Optional prototype to overload sole instance with,
+ * @param HTMLPurifier_LanguageFactory $prototype Optional prototype to overload sole instance with,
* or bool true to reset to default factory.
+ * @return HTMLPurifier_LanguageFactory
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance = null;
if ($prototype !== null) {
$instance = $prototype;
@@ -69,28 +72,34 @@ class HTMLPurifier_LanguageFactory
* Sets up the singleton, much like a constructor
* @note Prevents people from getting this outside of the singleton
*/
- public function setup() {
+ public function setup()
+ {
$this->validator = new HTMLPurifier_AttrDef_Lang();
$this->dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier';
}
/**
* Creates a language object, handles class fallbacks
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @param $code Code to override configuration with. Private parameter.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @param bool|string $code Code to override configuration with. Private parameter.
+ * @return HTMLPurifier_Language
*/
- public function create($config, $context, $code = false) {
-
+ public function create($config, $context, $code = false)
+ {
// validate language code
if ($code === false) {
$code = $this->validator->validate(
- $config->get('Core.Language'), $config, $context
+ $config->get('Core.Language'),
+ $config,
+ $context
);
} else {
$code = $this->validator->validate($code, $config, $context);
}
- if ($code === false) $code = 'en'; // malformed code becomes English
+ if ($code === false) {
+ $code = 'en'; // malformed code becomes English
+ }
$pcode = str_replace('-', '_', $code); // make valid PHP classname
static $depth = 0; // recursion protection
@@ -114,32 +123,34 @@ class HTMLPurifier_LanguageFactory
$depth--;
}
}
-
$lang->code = $code;
-
return $lang;
-
}
/**
* Returns the fallback language for language
* @note Loads the original language into cache
- * @param $code string language code
+ * @param string $code language code
+ * @return string|bool
*/
- public function getFallbackFor($code) {
+ public function getFallbackFor($code)
+ {
$this->loadLanguage($code);
return $this->cache[$code]['fallback'];
}
/**
* Loads language into the cache, handles message file and fallbacks
- * @param $code string language code
+ * @param string $code language code
*/
- public function loadLanguage($code) {
+ public function loadLanguage($code)
+ {
static $languages_seen = array(); // recursion guard
// abort if we've already loaded it
- if (isset($this->cache[$code])) return;
+ if (isset($this->cache[$code])) {
+ return;
+ }
// generate filename
$filename = $this->dir . '/Language/messages/' . $code . '.php';
@@ -162,8 +173,11 @@ class HTMLPurifier_LanguageFactory
// infinite recursion guard
if (isset($languages_seen[$code])) {
- trigger_error('Circular fallback reference in language ' .
- $code, E_USER_ERROR);
+ trigger_error(
+ 'Circular fallback reference in language ' .
+ $code,
+ E_USER_ERROR
+ );
$fallback = 'en';
}
$language_seen[$code] = true;
@@ -173,26 +187,23 @@ class HTMLPurifier_LanguageFactory
$fallback_cache = $this->cache[$fallback];
// merge fallback with current language
- foreach ( $this->keys as $key ) {
+ foreach ($this->keys as $key) {
if (isset($cache[$key]) && isset($fallback_cache[$key])) {
if (isset($this->mergeable_keys_map[$key])) {
$cache[$key] = $cache[$key] + $fallback_cache[$key];
} elseif (isset($this->mergeable_keys_list[$key])) {
- $cache[$key] = array_merge( $fallback_cache[$key], $cache[$key] );
+ $cache[$key] = array_merge($fallback_cache[$key], $cache[$key]);
}
} else {
$cache[$key] = $fallback_cache[$key];
}
}
-
}
// save to cache for later retrieval
$this->cache[$code] = $cache;
-
return;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Length.php b/library/HTMLPurifier/Length.php
index 8d2a46b7d..bbfbe6624 100644
--- a/library/HTMLPurifier/Length.php
+++ b/library/HTMLPurifier/Length.php
@@ -9,21 +9,25 @@ class HTMLPurifier_Length
/**
* String numeric magnitude.
+ * @type string
*/
protected $n;
/**
* String unit. False is permitted if $n = 0.
+ * @type string|bool
*/
protected $unit;
/**
* Whether or not this length is valid. Null if not calculated yet.
+ * @type bool
*/
protected $isValid;
/**
- * Lookup array of units recognized by CSS 2.1
+ * Array Lookup array of units recognized by CSS 2.1
+ * @type array
*/
protected static $allowedUnits = array(
'em' => true, 'ex' => true, 'px' => true, 'in' => true,
@@ -31,85 +35,126 @@ class HTMLPurifier_Length
);
/**
- * @param number $n Magnitude
- * @param string $u Unit
+ * @param string $n Magnitude
+ * @param bool|string $u Unit
*/
- public function __construct($n = '0', $u = false) {
+ public function __construct($n = '0', $u = false)
+ {
$this->n = (string) $n;
$this->unit = $u !== false ? (string) $u : false;
}
/**
* @param string $s Unit string, like '2em' or '3.4in'
+ * @return HTMLPurifier_Length
* @warning Does not perform validation.
*/
- static public function make($s) {
- if ($s instanceof HTMLPurifier_Length) return $s;
+ public static function make($s)
+ {
+ if ($s instanceof HTMLPurifier_Length) {
+ return $s;
+ }
$n_length = strspn($s, '1234567890.+-');
$n = substr($s, 0, $n_length);
$unit = substr($s, $n_length);
- if ($unit === '') $unit = false;
+ if ($unit === '') {
+ $unit = false;
+ }
return new HTMLPurifier_Length($n, $unit);
}
/**
* Validates the number and unit.
+ * @return bool
*/
- protected function validate() {
+ protected function validate()
+ {
// Special case:
- if ($this->n === '+0' || $this->n === '-0') $this->n = '0';
- if ($this->n === '0' && $this->unit === false) return true;
- if (!ctype_lower($this->unit)) $this->unit = strtolower($this->unit);
- if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) return false;
+ if ($this->n === '+0' || $this->n === '-0') {
+ $this->n = '0';
+ }
+ if ($this->n === '0' && $this->unit === false) {
+ return true;
+ }
+ if (!ctype_lower($this->unit)) {
+ $this->unit = strtolower($this->unit);
+ }
+ if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) {
+ return false;
+ }
// Hack:
$def = new HTMLPurifier_AttrDef_CSS_Number();
$result = $def->validate($this->n, false, false);
- if ($result === false) return false;
+ if ($result === false) {
+ return false;
+ }
$this->n = $result;
return true;
}
/**
* Returns string representation of number.
+ * @return string
*/
- public function toString() {
- if (!$this->isValid()) return false;
+ public function toString()
+ {
+ if (!$this->isValid()) {
+ return false;
+ }
return $this->n . $this->unit;
}
/**
* Retrieves string numeric magnitude.
+ * @return string
*/
- public function getN() {return $this->n;}
+ public function getN()
+ {
+ return $this->n;
+ }
/**
* Retrieves string unit.
+ * @return string
*/
- public function getUnit() {return $this->unit;}
+ public function getUnit()
+ {
+ return $this->unit;
+ }
/**
* Returns true if this length unit is valid.
+ * @return bool
*/
- public function isValid() {
- if ($this->isValid === null) $this->isValid = $this->validate();
+ public function isValid()
+ {
+ if ($this->isValid === null) {
+ $this->isValid = $this->validate();
+ }
return $this->isValid;
}
/**
* Compares two lengths, and returns 1 if greater, -1 if less and 0 if equal.
+ * @param HTMLPurifier_Length $l
+ * @return int
* @warning If both values are too large or small, this calculation will
* not work properly
*/
- public function compareTo($l) {
- if ($l === false) return false;
+ public function compareTo($l)
+ {
+ if ($l === false) {
+ return false;
+ }
if ($l->unit !== $this->unit) {
$converter = new HTMLPurifier_UnitConverter();
$l = $converter->convert($l, $this->unit);
- if ($l === false) return false;
+ if ($l === false) {
+ return false;
+ }
}
return $this->n - $l->n;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer.php b/library/HTMLPurifier/Lexer.php
index b05e11546..43732621d 100644
--- a/library/HTMLPurifier/Lexer.php
+++ b/library/HTMLPurifier/Lexer.php
@@ -62,16 +62,20 @@ class HTMLPurifier_Lexer
* To specify your own prototype, set %Core.LexerImpl to it.
* This change in behavior de-singletonizes the lexer object.
*
- * @param $config Instance of HTMLPurifier_Config
- * @return Concrete lexer.
+ * @param HTMLPurifier_Config $config
+ * @return HTMLPurifier_Lexer
+ * @throws HTMLPurifier_Exception
*/
- public static function create($config) {
-
+ public static function create($config)
+ {
if (!($config instanceof HTMLPurifier_Config)) {
$lexer = $config;
- trigger_error("Passing a prototype to
- HTMLPurifier_Lexer::create() is deprecated, please instead
- use %Core.LexerImpl", E_USER_WARNING);
+ trigger_error(
+ "Passing a prototype to
+ HTMLPurifier_Lexer::create() is deprecated, please instead
+ use %Core.LexerImpl",
+ E_USER_WARNING
+ );
} else {
$lexer = $config->get('Core.LexerImpl');
}
@@ -84,30 +88,28 @@ class HTMLPurifier_Lexer
if (is_object($lexer)) {
$inst = $lexer;
} else {
-
- if (is_null($lexer)) { do {
- // auto-detection algorithm
-
- if ($needs_tracking) {
- $lexer = 'DirectLex';
- break;
- }
-
- if (
- class_exists('DOMDocument') &&
- method_exists('DOMDocument', 'loadHTML') &&
- !extension_loaded('domxml')
- ) {
- // check for DOM support, because while it's part of the
- // core, it can be disabled compile time. Also, the PECL
- // domxml extension overrides the default DOM, and is evil
- // and nasty and we shan't bother to support it
- $lexer = 'DOMLex';
- } else {
- $lexer = 'DirectLex';
- }
-
- } while(0); } // do..while so we can break
+ if (is_null($lexer)) {
+ do {
+ // auto-detection algorithm
+ if ($needs_tracking) {
+ $lexer = 'DirectLex';
+ break;
+ }
+
+ if (class_exists('DOMDocument') &&
+ method_exists('DOMDocument', 'loadHTML') &&
+ !extension_loaded('domxml')
+ ) {
+ // check for DOM support, because while it's part of the
+ // core, it can be disabled compile time. Also, the PECL
+ // domxml extension overrides the default DOM, and is evil
+ // and nasty and we shan't bother to support it
+ $lexer = 'DOMLex';
+ } else {
+ $lexer = 'DirectLex';
+ }
+ } while (0);
+ } // do..while so we can break
// instantiate recognized string names
switch ($lexer) {
@@ -121,16 +123,24 @@ class HTMLPurifier_Lexer
$inst = new HTMLPurifier_Lexer_PH5P();
break;
default:
- throw new HTMLPurifier_Exception("Cannot instantiate unrecognized Lexer type " . htmlspecialchars($lexer));
+ throw new HTMLPurifier_Exception(
+ "Cannot instantiate unrecognized Lexer type " .
+ htmlspecialchars($lexer)
+ );
}
}
- if (!$inst) throw new HTMLPurifier_Exception('No lexer was instantiated');
+ if (!$inst) {
+ throw new HTMLPurifier_Exception('No lexer was instantiated');
+ }
// once PHP DOM implements native line numbers, or we
// hack out something using XSLT, remove this stipulation
if ($needs_tracking && !$inst->tracksLineNumbers) {
- throw new HTMLPurifier_Exception('Cannot use lexer that does not support line numbers with Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)');
+ throw new HTMLPurifier_Exception(
+ 'Cannot use lexer that does not support line numbers with ' .
+ 'Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)'
+ );
}
return $inst;
@@ -139,23 +149,25 @@ class HTMLPurifier_Lexer
// -- CONVENIENCE MEMBERS ---------------------------------------------
- public function __construct() {
+ public function __construct()
+ {
$this->_entity_parser = new HTMLPurifier_EntityParser();
}
/**
* Most common entity to raw value conversion table for special entities.
+ * @type array
*/
protected $_special_entity2str =
- array(
- '&quot;' => '"',
- '&amp;' => '&',
- '&lt;' => '<',
- '&gt;' => '>',
- '&#39;' => "'",
- '&#039;' => "'",
- '&#x27;' => "'"
- );
+ array(
+ '&quot;' => '"',
+ '&amp;' => '&',
+ '&lt;' => '<',
+ '&gt;' => '>',
+ '&#39;' => "'",
+ '&#039;' => "'",
+ '&#x27;' => "'"
+ );
/**
* Parses special entities into the proper characters.
@@ -168,27 +180,33 @@ class HTMLPurifier_Lexer
* completely parsed, but that's only because all other entities should
* have been handled previously in substituteNonSpecialEntities()
*
- * @param $string String character data to be parsed.
- * @returns Parsed character data.
+ * @param string $string String character data to be parsed.
+ * @return string Parsed character data.
*/
- public function parseData($string) {
-
+ public function parseData($string)
+ {
// following functions require at least one character
- if ($string === '') return '';
+ if ($string === '') {
+ return '';
+ }
// subtracts amps that cannot possibly be escaped
$num_amp = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string)-1] === '&' ? 1 : 0);
+ ($string[strlen($string) - 1] === '&' ? 1 : 0);
- if (!$num_amp) return $string; // abort if no entities
+ if (!$num_amp) {
+ return $string;
+ } // abort if no entities
$num_esc_amp = substr_count($string, '&amp;');
$string = strtr($string, $this->_special_entity2str);
// code duplication for sake of optimization, see above
$num_amp_2 = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string)-1] === '&' ? 1 : 0);
+ ($string[strlen($string) - 1] === '&' ? 1 : 0);
- if ($num_amp_2 <= $num_esc_amp) return $string;
+ if ($num_amp_2 <= $num_esc_amp) {
+ return $string;
+ }
// hmm... now we have some uncommon entities. Use the callback.
$string = $this->_entity_parser->substituteSpecialEntities($string);
@@ -197,21 +215,23 @@ class HTMLPurifier_Lexer
/**
* Lexes an HTML string into tokens.
- *
* @param $string String HTML.
- * @return HTMLPurifier_Token array representation of HTML.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[] array representation of HTML.
*/
- public function tokenizeHTML($string, $config, $context) {
+ public function tokenizeHTML($string, $config, $context)
+ {
trigger_error('Call to abstract class', E_USER_ERROR);
}
/**
* Translates CDATA sections into regular sections (through escaping).
- *
- * @param $string HTML string to process.
- * @returns HTML with CDATA sections escaped.
+ * @param string $string HTML string to process.
+ * @return string HTML with CDATA sections escaped.
*/
- protected static function escapeCDATA($string) {
+ protected static function escapeCDATA($string)
+ {
return preg_replace_callback(
'/<!\[CDATA\[(.+?)\]\]>/s',
array('HTMLPurifier_Lexer', 'CDATACallback'),
@@ -221,8 +241,11 @@ class HTMLPurifier_Lexer
/**
* Special CDATA case that is especially convoluted for <script>
+ * @param string $string HTML string to process.
+ * @return string HTML with CDATA sections escaped.
*/
- protected static function escapeCommentedCDATA($string) {
+ protected static function escapeCommentedCDATA($string)
+ {
return preg_replace_callback(
'#<!--//--><!\[CDATA\[//><!--(.+?)//--><!\]\]>#s',
array('HTMLPurifier_Lexer', 'CDATACallback'),
@@ -231,15 +254,30 @@ class HTMLPurifier_Lexer
}
/**
+ * Special Internet Explorer conditional comments should be removed.
+ * @param string $string HTML string to process.
+ * @return string HTML with conditional comments removed.
+ */
+ protected static function removeIEConditional($string)
+ {
+ return preg_replace(
+ '#<!--\[if [^>]+\]>.*?<!\[endif\]-->#si', // probably should generalize for all strings
+ '',
+ $string
+ );
+ }
+
+ /**
* Callback function for escapeCDATA() that does the work.
*
* @warning Though this is public in order to let the callback happen,
* calling it directly is not recommended.
- * @params $matches PCRE matches array, with index 0 the entire match
+ * @param array $matches PCRE matches array, with index 0 the entire match
* and 1 the inside of the CDATA section.
- * @returns Escaped internals of the CDATA section.
+ * @return string Escaped internals of the CDATA section.
*/
- protected static function CDATACallback($matches) {
+ protected static function CDATACallback($matches)
+ {
// not exactly sure why the character set is needed, but whatever
return htmlspecialchars($matches[1], ENT_COMPAT, 'UTF-8');
}
@@ -247,13 +285,19 @@ class HTMLPurifier_Lexer
/**
* Takes a piece of HTML and normalizes it by converting entities, fixing
* encoding, extracting bits, and other good stuff.
+ * @param string $html HTML.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @todo Consider making protected
*/
- public function normalize($html, $config, $context) {
-
+ public function normalize($html, $config, $context)
+ {
// normalize newlines to \n
- $html = str_replace("\r\n", "\n", $html);
- $html = str_replace("\r", "\n", $html);
+ if ($config->get('Core.NormalizeNewlines')) {
+ $html = str_replace("\r\n", "\n", $html);
+ $html = str_replace("\r", "\n", $html);
+ }
if ($config->get('HTML.Trusted')) {
// escape convoluted CDATA
@@ -263,6 +307,8 @@ class HTMLPurifier_Lexer
// escape CDATA
$html = $this->escapeCDATA($html);
+ $html = $this->removeIEConditional($html);
+
// extract body from document if applicable
if ($config->get('Core.ConvertDocumentToFragment')) {
$e = false;
@@ -284,6 +330,11 @@ class HTMLPurifier_Lexer
// represent non-SGML characters (horror, horror!)
$html = HTMLPurifier_Encoder::cleanUTF8($html);
+ // if processing instructions are to removed, remove them now
+ if ($config->get('Core.RemoveProcessingInstructions')) {
+ $html = preg_replace('#<\?.+?\?>#s', '', $html);
+ }
+
return $html;
}
@@ -291,7 +342,8 @@ class HTMLPurifier_Lexer
* Takes a string of HTML (fragment or document) and returns the content
* @todo Consider making protected
*/
- public function extractBody($html) {
+ public function extractBody($html)
+ {
$matches = array();
$result = preg_match('!<body[^>]*>(.*)</body>!is', $html, $matches);
if ($result) {
@@ -300,7 +352,6 @@ class HTMLPurifier_Lexer
return $html;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/DOMLex.php b/library/HTMLPurifier/Lexer/DOMLex.php
index 20dc2ed48..720754454 100644
--- a/library/HTMLPurifier/Lexer/DOMLex.php
+++ b/library/HTMLPurifier/Lexer/DOMLex.php
@@ -27,16 +27,26 @@
class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
{
+ /**
+ * @type HTMLPurifier_TokenFactory
+ */
private $factory;
- public function __construct() {
+ public function __construct()
+ {
// setup the factory
parent::__construct();
$this->factory = new HTMLPurifier_TokenFactory();
}
- public function tokenizeHTML($html, $config, $context) {
-
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
$html = $this->normalize($html, $config, $context);
// attempt to armor stray angled brackets that cannot possibly
@@ -65,30 +75,67 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
$tokens = array();
$this->tokenizeDOM(
$doc->getElementsByTagName('html')->item(0)-> // <html>
- getElementsByTagName('body')->item(0)-> // <body>
- getElementsByTagName('div')->item(0) // <div>
- , $tokens);
+ getElementsByTagName('body')->item(0)-> // <body>
+ getElementsByTagName('div')->item(0), // <div>
+ $tokens
+ );
return $tokens;
}
/**
- * Recursive function that tokenizes a node, putting it into an accumulator.
- *
- * @param $node DOMNode to be tokenized.
- * @param $tokens Array-list of already tokenized tokens.
- * @param $collect Says whether or start and close are collected, set to
- * false at first recursion because it's the implicit DIV
- * tag you're dealing with.
- * @returns Tokens of node appended to previously passed tokens.
+ * Iterative function that tokenizes a node, putting it into an accumulator.
+ * To iterate is human, to recurse divine - L. Peter Deutsch
+ * @param DOMNode $node DOMNode to be tokenized.
+ * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
+ * @return HTMLPurifier_Token of node appended to previously passed tokens.
*/
- protected function tokenizeDOM($node, &$tokens, $collect = false) {
+ protected function tokenizeDOM($node, &$tokens)
+ {
+ $level = 0;
+ $nodes = array($level => new HTMLPurifier_Queue(array($node)));
+ $closingNodes = array();
+ do {
+ while (!$nodes[$level]->isEmpty()) {
+ $node = $nodes[$level]->shift(); // FIFO
+ $collect = $level > 0 ? true : false;
+ $needEndingTag = $this->createStartNode($node, $tokens, $collect);
+ if ($needEndingTag) {
+ $closingNodes[$level][] = $node;
+ }
+ if ($node->childNodes && $node->childNodes->length) {
+ $level++;
+ $nodes[$level] = new HTMLPurifier_Queue();
+ foreach ($node->childNodes as $childNode) {
+ $nodes[$level]->push($childNode);
+ }
+ }
+ }
+ $level--;
+ if ($level && isset($closingNodes[$level])) {
+ while ($node = array_pop($closingNodes[$level])) {
+ $this->createEndNode($node, $tokens);
+ }
+ }
+ } while ($level > 0);
+ }
+ /**
+ * @param DOMNode $node DOMNode to be tokenized.
+ * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
+ * @param bool $collect Says whether or start and close are collected, set to
+ * false at first recursion because it's the implicit DIV
+ * tag you're dealing with.
+ * @return bool if the token needs an endtoken
+ * @todo data and tagName properties don't seem to exist in DOMNode?
+ */
+ protected function createStartNode($node, &$tokens, $collect)
+ {
// intercept non element nodes. WE MUST catch all of them,
// but we're not getting the character reference nodes because
// those should have been preprocessed
if ($node->nodeType === XML_TEXT_NODE) {
$tokens[] = $this->factory->createText($node->data);
- return;
+ return false;
} elseif ($node->nodeType === XML_CDATA_SECTION_NODE) {
// undo libxml's special treatment of <script> and <style> tags
$last = end($tokens);
@@ -106,59 +153,61 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
}
}
$tokens[] = $this->factory->createText($this->parseData($data));
- return;
+ return false;
} elseif ($node->nodeType === XML_COMMENT_NODE) {
// this is code is only invoked for comments in script/style in versions
// of libxml pre-2.6.28 (regular comments, of course, are still
// handled regularly)
$tokens[] = $this->factory->createComment($node->data);
- return;
- } elseif (
+ return false;
+ } elseif ($node->nodeType !== XML_ELEMENT_NODE) {
// not-well tested: there may be other nodes we have to grab
- $node->nodeType !== XML_ELEMENT_NODE
- ) {
- return;
+ return false;
}
- $attr = $node->hasAttributes() ?
- $this->transformAttrToAssoc($node->attributes) :
- array();
+ $attr = $node->hasAttributes() ? $this->transformAttrToAssoc($node->attributes) : array();
// We still have to make sure that the element actually IS empty
if (!$node->childNodes->length) {
if ($collect) {
$tokens[] = $this->factory->createEmpty($node->tagName, $attr);
}
+ return false;
} else {
- if ($collect) { // don't wrap on first iteration
+ if ($collect) {
$tokens[] = $this->factory->createStart(
$tag_name = $node->tagName, // somehow, it get's dropped
$attr
);
}
- foreach ($node->childNodes as $node) {
- // remember, it's an accumulator. Otherwise, we'd have
- // to use array_merge
- $this->tokenizeDOM($node, $tokens, true);
- }
- if ($collect) {
- $tokens[] = $this->factory->createEnd($tag_name);
- }
+ return true;
}
+ }
+ /**
+ * @param DOMNode $node
+ * @param HTMLPurifier_Token[] $tokens
+ */
+ protected function createEndNode($node, &$tokens)
+ {
+ $tokens[] = $this->factory->createEnd($node->tagName);
}
+
/**
* Converts a DOMNamedNodeMap of DOMAttr objects into an assoc array.
*
- * @param $attribute_list DOMNamedNodeMap of DOMAttr objects.
- * @returns Associative array of attributes.
+ * @param DOMNamedNodeMap $node_map DOMNamedNodeMap of DOMAttr objects.
+ * @return array Associative array of attributes.
*/
- protected function transformAttrToAssoc($node_map) {
+ protected function transformAttrToAssoc($node_map)
+ {
// NamedNodeMap is documented very well, so we're using undocumented
// features, namely, the fact that it implements Iterator and
// has a ->length attribute
- if ($node_map->length === 0) return array();
+ if ($node_map->length === 0) {
+ return array();
+ }
$array = array();
foreach ($node_map as $attr) {
$array[$attr->name] = $attr->value;
@@ -168,46 +217,64 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
/**
* An error handler that mutes all errors
+ * @param int $errno
+ * @param string $errstr
*/
- public function muteErrorHandler($errno, $errstr) {}
+ public function muteErrorHandler($errno, $errstr)
+ {
+ }
/**
* Callback function for undoing escaping of stray angled brackets
* in comments
+ * @param array $matches
+ * @return string
*/
- public function callbackUndoCommentSubst($matches) {
- return '<!--' . strtr($matches[1], array('&amp;'=>'&','&lt;'=>'<')) . $matches[2];
+ public function callbackUndoCommentSubst($matches)
+ {
+ return '<!--' . strtr($matches[1], array('&amp;' => '&', '&lt;' => '<')) . $matches[2];
}
/**
* Callback function that entity-izes ampersands in comments so that
* callbackUndoCommentSubst doesn't clobber them
+ * @param array $matches
+ * @return string
*/
- public function callbackArmorCommentEntities($matches) {
+ public function callbackArmorCommentEntities($matches)
+ {
return '<!--' . str_replace('&', '&amp;', $matches[1]) . $matches[2];
}
/**
* Wraps an HTML fragment in the necessary HTML
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- protected function wrapHTML($html, $config, $context) {
+ protected function wrapHTML($html, $config, $context)
+ {
$def = $config->getDefinition('HTML');
$ret = '';
if (!empty($def->doctype->dtdPublic) || !empty($def->doctype->dtdSystem)) {
$ret .= '<!DOCTYPE html ';
- if (!empty($def->doctype->dtdPublic)) $ret .= 'PUBLIC "' . $def->doctype->dtdPublic . '" ';
- if (!empty($def->doctype->dtdSystem)) $ret .= '"' . $def->doctype->dtdSystem . '" ';
+ if (!empty($def->doctype->dtdPublic)) {
+ $ret .= 'PUBLIC "' . $def->doctype->dtdPublic . '" ';
+ }
+ if (!empty($def->doctype->dtdSystem)) {
+ $ret .= '"' . $def->doctype->dtdSystem . '" ';
+ }
$ret .= '>';
}
$ret .= '<html><head>';
$ret .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
// No protection if $html contains a stray </div>!
- $ret .= '</head><body><div>'.$html.'</div></body></html>';
+ $ret .= '</head><body><div>' . $html . '</div></body></html>';
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/DirectLex.php b/library/HTMLPurifier/Lexer/DirectLex.php
index 456e6e190..746b6e315 100644
--- a/library/HTMLPurifier/Lexer/DirectLex.php
+++ b/library/HTMLPurifier/Lexer/DirectLex.php
@@ -12,30 +12,44 @@
*/
class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
{
-
+ /**
+ * @type bool
+ */
public $tracksLineNumbers = true;
/**
* Whitespace characters for str(c)spn.
+ * @type string
*/
protected $_whitespace = "\x20\x09\x0D\x0A";
/**
* Callback function for script CDATA fudge
- * @param $matches, in form of array(opening tag, contents, closing tag)
+ * @param array $matches, in form of array(opening tag, contents, closing tag)
+ * @return string
*/
- protected function scriptCallback($matches) {
+ protected function scriptCallback($matches)
+ {
return $matches[1] . htmlspecialchars($matches[2], ENT_COMPAT, 'UTF-8') . $matches[3];
}
- public function tokenizeHTML($html, $config, $context) {
-
+ /**
+ * @param String $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
// special normalization for script tags without any armor
// our "armor" heurstic is a < sign any number of whitespaces after
// the first script tag
if ($config->get('HTML.Trusted')) {
- $html = preg_replace_callback('#(<script[^>]*>)(\s*[^<].+?)(</script>)#si',
- array($this, 'scriptCallback'), $html);
+ $html = preg_replace_callback(
+ '#(<script[^>]*>)(\s*[^<].+?)(</script>)#si',
+ array($this, 'scriptCallback'),
+ $html
+ );
}
$html = $this->normalize($html, $config, $context);
@@ -55,15 +69,15 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
if ($maintain_line_numbers) {
$current_line = 1;
- $current_col = 0;
+ $current_col = 0;
$length = strlen($html);
} else {
$current_line = false;
- $current_col = false;
+ $current_col = false;
$length = false;
}
$context->register('CurrentLine', $current_line);
- $context->register('CurrentCol', $current_col);
+ $context->register('CurrentCol', $current_col);
$nl = "\n";
// how often to manually recalculate. This will ALWAYS be right,
// but it's pretty wasteful. Set to 0 to turn off
@@ -77,16 +91,14 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// for testing synchronization
$loops = 0;
- while(++$loops) {
-
+ while (++$loops) {
// $cursor is either at the start of a token, or inside of
// a tag (i.e. there was a < immediately before it), as indicated
// by $inside_tag
if ($maintain_line_numbers) {
-
// $rcursor, however, is always at the start of a token.
- $rcursor = $cursor - (int) $inside_tag;
+ $rcursor = $cursor - (int)$inside_tag;
// Column number is cheap, so we calculate it every round.
// We're interested at the *end* of the newline string, so
@@ -96,14 +108,11 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$current_col = $rcursor - (is_bool($nl_pos) ? 0 : $nl_pos + 1);
// recalculate lines
- if (
- $synchronize_interval && // synchronization is on
- $cursor > 0 && // cursor is further than zero
- $loops % $synchronize_interval === 0 // time to synchronize!
- ) {
+ if ($synchronize_interval && // synchronization is on
+ $cursor > 0 && // cursor is further than zero
+ $loops % $synchronize_interval === 0) { // time to synchronize!
$current_line = 1 + $this->substrCount($html, $nl, 0, $cursor);
}
-
}
$position_next_lt = strpos($html, '<', $cursor);
@@ -119,35 +128,42 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
if (!$inside_tag && $position_next_lt !== false) {
// We are not inside tag and there still is another tag to parse
$token = new
- HTMLPurifier_Token_Text(
- $this->parseData(
- substr(
- $html, $cursor, $position_next_lt - $cursor
- )
+ HTMLPurifier_Token_Text(
+ $this->parseData(
+ substr(
+ $html,
+ $cursor,
+ $position_next_lt - $cursor
)
- );
+ )
+ );
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
$current_line += $this->substrCount($html, $nl, $cursor, $position_next_lt - $cursor);
}
$array[] = $token;
- $cursor = $position_next_lt + 1;
+ $cursor = $position_next_lt + 1;
$inside_tag = true;
continue;
} elseif (!$inside_tag) {
// We are not inside tag but there are no more tags
// If we're already at the end, break
- if ($cursor === strlen($html)) break;
+ if ($cursor === strlen($html)) {
+ break;
+ }
// Create Text of rest of string
$token = new
- HTMLPurifier_Token_Text(
- $this->parseData(
- substr(
- $html, $cursor
- )
+ HTMLPurifier_Token_Text(
+ $this->parseData(
+ substr(
+ $html,
+ $cursor
)
- );
- if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col);
+ )
+ );
+ if ($maintain_line_numbers) {
+ $token->rawPosition($current_line, $current_col);
+ }
$array[] = $token;
break;
} elseif ($inside_tag && $position_next_gt !== false) {
@@ -171,16 +187,16 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
// Check if it's a comment
- if (
- substr($segment, 0, 3) === '!--'
- ) {
+ if (substr($segment, 0, 3) === '!--') {
// re-determine segment length, looking for -->
$position_comment_end = strpos($html, '-->', $cursor);
if ($position_comment_end === false) {
// uh oh, we have a comment that extends to
// infinity. Can't be helped: set comment
// end position to end of string
- if ($e) $e->send(E_WARNING, 'Lexer: Unclosed comment');
+ if ($e) {
+ $e->send(E_WARNING, 'Lexer: Unclosed comment');
+ }
$position_comment_end = strlen($html);
$end = true;
} else {
@@ -189,11 +205,13 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$strlen_segment = $position_comment_end - $cursor;
$segment = substr($html, $cursor, $strlen_segment);
$token = new
- HTMLPurifier_Token_Comment(
- substr(
- $segment, 3, $strlen_segment - 3
- )
- );
+ HTMLPurifier_Token_Comment(
+ substr(
+ $segment,
+ 3,
+ $strlen_segment - 3
+ )
+ );
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
$current_line += $this->substrCount($html, $nl, $cursor, $strlen_segment);
@@ -205,7 +223,7 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
// Check if it's an end tag
- $is_end_tag = (strpos($segment,'/') === 0);
+ $is_end_tag = (strpos($segment, '/') === 0);
if ($is_end_tag) {
$type = substr($segment, 1);
$token = new HTMLPurifier_Token_End($type);
@@ -224,7 +242,9 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// text and go our merry way
if (!ctype_alpha($segment[0])) {
// XML: $segment[0] !== '_' && $segment[0] !== ':'
- if ($e) $e->send(E_NOTICE, 'Lexer: Unescaped lt');
+ if ($e) {
+ $e->send(E_NOTICE, 'Lexer: Unescaped lt');
+ }
$token = new HTMLPurifier_Token_Text('<');
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
@@ -239,7 +259,7 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// trailing slash. Remember, we could have a tag like <br>, so
// any later token processing scripts must convert improperly
// classified EmptyTags from StartTags.
- $is_self_closing = (strrpos($segment,'/') === $strlen_segment-1);
+ $is_self_closing = (strrpos($segment, '/') === $strlen_segment - 1);
if ($is_self_closing) {
$strlen_segment--;
$segment = substr($segment, 0, $strlen_segment);
@@ -269,14 +289,16 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$attribute_string =
trim(
substr(
- $segment, $position_first_space
+ $segment,
+ $position_first_space
)
);
if ($attribute_string) {
$attr = $this->parseAttributeString(
- $attribute_string
- , $config, $context
- );
+ $attribute_string,
+ $config,
+ $context
+ );
} else {
$attr = array();
}
@@ -296,15 +318,19 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
continue;
} else {
// inside tag, but there's no ending > sign
- if ($e) $e->send(E_WARNING, 'Lexer: Missing gt');
+ if ($e) {
+ $e->send(E_WARNING, 'Lexer: Missing gt');
+ }
$token = new
- HTMLPurifier_Token_Text(
- '<' .
- $this->parseData(
- substr($html, $cursor)
- )
- );
- if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col);
+ HTMLPurifier_Token_Text(
+ '<' .
+ $this->parseData(
+ substr($html, $cursor)
+ )
+ );
+ if ($maintain_line_numbers) {
+ $token->rawPosition($current_line, $current_col);
+ }
// no cursor scroll? Hmm...
$array[] = $token;
break;
@@ -319,8 +345,14 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
/**
* PHP 5.0.x compatible substr_count that implements offset and length
+ * @param string $haystack
+ * @param string $needle
+ * @param int $offset
+ * @param int $length
+ * @return int
*/
- protected function substrCount($haystack, $needle, $offset, $length) {
+ protected function substrCount($haystack, $needle, $offset, $length)
+ {
static $oldVersion;
if ($oldVersion === null) {
$oldVersion = version_compare(PHP_VERSION, '5.1', '<');
@@ -336,13 +368,18 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
/**
* Takes the inside of an HTML tag and makes an assoc array of attributes.
*
- * @param $string Inside of tag excluding name.
- * @returns Assoc array of attributes.
+ * @param string $string Inside of tag excluding name.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array Assoc array of attributes.
*/
- public function parseAttributeString($string, $config, $context) {
- $string = (string) $string; // quick typecast
+ public function parseAttributeString($string, $config, $context)
+ {
+ $string = (string)$string; // quick typecast
- if ($string == '') return array(); // no attributes
+ if ($string == '') {
+ return array();
+ } // no attributes
$e = false;
if ($config->get('Core.CollectErrors')) {
@@ -361,46 +398,55 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
list($key, $quoted_value) = explode('=', $string);
$quoted_value = trim($quoted_value);
if (!$key) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
return array();
}
- if (!$quoted_value) return array($key => '');
+ if (!$quoted_value) {
+ return array($key => '');
+ }
$first_char = @$quoted_value[0];
- $last_char = @$quoted_value[strlen($quoted_value)-1];
+ $last_char = @$quoted_value[strlen($quoted_value) - 1];
$same_quote = ($first_char == $last_char);
$open_quote = ($first_char == '"' || $first_char == "'");
- if ( $same_quote && $open_quote) {
+ if ($same_quote && $open_quote) {
// well behaved
$value = substr($quoted_value, 1, strlen($quoted_value) - 2);
} else {
// not well behaved
if ($open_quote) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing end quote');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing end quote');
+ }
$value = substr($quoted_value, 1);
} else {
$value = $quoted_value;
}
}
- if ($value === false) $value = '';
+ if ($value === false) {
+ $value = '';
+ }
return array($key => $this->parseData($value));
}
// setup loop environment
- $array = array(); // return assoc array of attributes
+ $array = array(); // return assoc array of attributes
$cursor = 0; // current position in string (moves forward)
- $size = strlen($string); // size of the string (stays the same)
+ $size = strlen($string); // size of the string (stays the same)
// if we have unquoted attributes, the parser expects a terminating
// space, so let's guarantee that there's always a terminating space.
$string .= ' ';
- while(true) {
-
- if ($cursor >= $size) {
- break;
+ $old_cursor = -1;
+ while ($cursor < $size) {
+ if ($old_cursor >= $cursor) {
+ throw new Exception("Infinite loop detected");
}
+ $old_cursor = $cursor;
$cursor += ($value = strspn($string, $this->_whitespace, $cursor));
// grab the key
@@ -415,8 +461,10 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$key = substr($string, $key_begin, $key_end - $key_begin);
if (!$key) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
- $cursor += strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
+ $cursor += 1 + strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop
continue; // empty key
}
@@ -467,24 +515,25 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
$value = substr($string, $value_begin, $value_end - $value_begin);
- if ($value === false) $value = '';
+ if ($value === false) {
+ $value = '';
+ }
$array[$key] = $this->parseData($value);
$cursor++;
-
} else {
// boolattr
if ($key !== '') {
$array[$key] = $key;
} else {
// purely theoretical
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
}
-
}
}
return $array;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/PEARSax3.php b/library/HTMLPurifier/Lexer/PEARSax3.php
deleted file mode 100644
index 1d358c7b6..000000000
--- a/library/HTMLPurifier/Lexer/PEARSax3.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/**
- * Proof-of-concept lexer that uses the PEAR package XML_HTMLSax3 to parse HTML.
- *
- * PEAR, not suprisingly, also has a SAX parser for HTML. I don't know
- * very much about implementation, but it's fairly well written. However, that
- * abstraction comes at a price: performance. You need to have it installed,
- * and if the API changes, it might break our adapter. Not sure whether or not
- * it's UTF-8 aware, but it has some entity parsing trouble (in all areas,
- * text and attributes).
- *
- * Quite personally, I don't recommend using the PEAR class, and the defaults
- * don't use it. The unit tests do perform the tests on the SAX parser too, but
- * whatever it does for poorly formed HTML is up to it.
- *
- * @todo Generalize so that XML_HTMLSax is also supported.
- *
- * @warning Entity-resolution inside attributes is broken.
- */
-
-class HTMLPurifier_Lexer_PEARSax3 extends HTMLPurifier_Lexer
-{
-
- /**
- * Internal accumulator array for SAX parsers.
- */
- protected $tokens = array();
- protected $last_token_was_empty;
-
- private $parent_handler;
- private $stack = array();
-
- public function tokenizeHTML($string, $config, $context) {
-
- $this->tokens = array();
- $this->last_token_was_empty = false;
-
- $string = $this->normalize($string, $config, $context);
-
- $this->parent_handler = set_error_handler(array($this, 'muteStrictErrorHandler'));
-
- $parser = new XML_HTMLSax3();
- $parser->set_object($this);
- $parser->set_element_handler('openHandler','closeHandler');
- $parser->set_data_handler('dataHandler');
- $parser->set_escape_handler('escapeHandler');
-
- // doesn't seem to work correctly for attributes
- $parser->set_option('XML_OPTION_ENTITIES_PARSED', 1);
-
- $parser->parse($string);
-
- restore_error_handler();
-
- return $this->tokens;
-
- }
-
- /**
- * Open tag event handler, interface is defined by PEAR package.
- */
- public function openHandler(&$parser, $name, $attrs, $closed) {
- // entities are not resolved in attrs
- foreach ($attrs as $key => $attr) {
- $attrs[$key] = $this->parseData($attr);
- }
- if ($closed) {
- $this->tokens[] = new HTMLPurifier_Token_Empty($name, $attrs);
- $this->last_token_was_empty = true;
- } else {
- $this->tokens[] = new HTMLPurifier_Token_Start($name, $attrs);
- }
- $this->stack[] = $name;
- return true;
- }
-
- /**
- * Close tag event handler, interface is defined by PEAR package.
- */
- public function closeHandler(&$parser, $name) {
- // HTMLSax3 seems to always send empty tags an extra close tag
- // check and ignore if you see it:
- // [TESTME] to make sure it doesn't overreach
- if ($this->last_token_was_empty) {
- $this->last_token_was_empty = false;
- return true;
- }
- $this->tokens[] = new HTMLPurifier_Token_End($name);
- if (!empty($this->stack)) array_pop($this->stack);
- return true;
- }
-
- /**
- * Data event handler, interface is defined by PEAR package.
- */
- public function dataHandler(&$parser, $data) {
- $this->last_token_was_empty = false;
- $this->tokens[] = new HTMLPurifier_Token_Text($data);
- return true;
- }
-
- /**
- * Escaped text handler, interface is defined by PEAR package.
- */
- public function escapeHandler(&$parser, $data) {
- if (strpos($data, '--') === 0) {
- // remove trailing and leading double-dashes
- $data = substr($data, 2);
- if (strlen($data) >= 2 && substr($data, -2) == "--") {
- $data = substr($data, 0, -2);
- }
- if (isset($this->stack[sizeof($this->stack) - 1]) &&
- $this->stack[sizeof($this->stack) - 1] == "style") {
- $this->tokens[] = new HTMLPurifier_Token_Text($data);
- } else {
- $this->tokens[] = new HTMLPurifier_Token_Comment($data);
- }
- $this->last_token_was_empty = false;
- }
- // CDATA is handled elsewhere, but if it was handled here:
- //if (strpos($data, '[CDATA[') === 0) {
- // $this->tokens[] = new HTMLPurifier_Token_Text(
- // substr($data, 7, strlen($data) - 9) );
- //}
- return true;
- }
-
- /**
- * An error handler that mutes strict errors
- */
- public function muteStrictErrorHandler($errno, $errstr, $errfile=null, $errline=null, $errcontext=null) {
- if ($errno == E_STRICT) return;
- return call_user_func($this->parent_handler, $errno, $errstr, $errfile, $errline, $errcontext);
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/PH5P.php b/library/HTMLPurifier/Lexer/PH5P.php
index fa1bf973e..a4587e4cd 100644
--- a/library/HTMLPurifier/Lexer/PH5P.php
+++ b/library/HTMLPurifier/Lexer/PH5P.php
@@ -3,16 +3,23 @@
/**
* Experimental HTML5-based parser using Jeroen van der Meer's PH5P library.
* Occupies space in the HTML5 pseudo-namespace, which may cause conflicts.
- *
+ *
* @note
* Recent changes to PHP's DOM extension have resulted in some fatal
* error conditions with the original version of PH5P. Pending changes,
- * this lexer will punt to DirectLex if DOM throughs an exception.
+ * this lexer will punt to DirectLex if DOM throws an exception.
*/
-class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex {
-
- public function tokenizeHTML($html, $config, $context) {
+class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex
+{
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
$new_html = $this->normalize($html, $config, $context);
$new_html = $this->wrapHTML($new_html, $config, $context);
try {
@@ -27,40 +34,42 @@ class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex {
$tokens = array();
$this->tokenizeDOM(
$doc->getElementsByTagName('html')->item(0)-> // <html>
- getElementsByTagName('body')->item(0)-> // <body>
- getElementsByTagName('div')->item(0) // <div>
- , $tokens);
+ getElementsByTagName('body')->item(0)-> // <body>
+ getElementsByTagName('div')->item(0) // <div>
+ ,
+ $tokens
+ );
return $tokens;
}
-
}
/*
-Copyright 2007 Jeroen van der Meer <http://jero.net/>
+Copyright 2007 Jeroen van der Meer <http://jero.net/>
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-class HTML5 {
+class HTML5
+{
private $data;
private $char;
private $EOF;
@@ -69,91 +78,418 @@ class HTML5 {
private $token;
private $content_model;
private $escape = false;
- private $entities = array('AElig;','AElig','AMP;','AMP','Aacute;','Aacute',
- 'Acirc;','Acirc','Agrave;','Agrave','Alpha;','Aring;','Aring','Atilde;',
- 'Atilde','Auml;','Auml','Beta;','COPY;','COPY','Ccedil;','Ccedil','Chi;',
- 'Dagger;','Delta;','ETH;','ETH','Eacute;','Eacute','Ecirc;','Ecirc','Egrave;',
- 'Egrave','Epsilon;','Eta;','Euml;','Euml','GT;','GT','Gamma;','Iacute;',
- 'Iacute','Icirc;','Icirc','Igrave;','Igrave','Iota;','Iuml;','Iuml','Kappa;',
- 'LT;','LT','Lambda;','Mu;','Ntilde;','Ntilde','Nu;','OElig;','Oacute;',
- 'Oacute','Ocirc;','Ocirc','Ograve;','Ograve','Omega;','Omicron;','Oslash;',
- 'Oslash','Otilde;','Otilde','Ouml;','Ouml','Phi;','Pi;','Prime;','Psi;',
- 'QUOT;','QUOT','REG;','REG','Rho;','Scaron;','Sigma;','THORN;','THORN',
- 'TRADE;','Tau;','Theta;','Uacute;','Uacute','Ucirc;','Ucirc','Ugrave;',
- 'Ugrave','Upsilon;','Uuml;','Uuml','Xi;','Yacute;','Yacute','Yuml;','Zeta;',
- 'aacute;','aacute','acirc;','acirc','acute;','acute','aelig;','aelig',
- 'agrave;','agrave','alefsym;','alpha;','amp;','amp','and;','ang;','apos;',
- 'aring;','aring','asymp;','atilde;','atilde','auml;','auml','bdquo;','beta;',
- 'brvbar;','brvbar','bull;','cap;','ccedil;','ccedil','cedil;','cedil',
- 'cent;','cent','chi;','circ;','clubs;','cong;','copy;','copy','crarr;',
- 'cup;','curren;','curren','dArr;','dagger;','darr;','deg;','deg','delta;',
- 'diams;','divide;','divide','eacute;','eacute','ecirc;','ecirc','egrave;',
- 'egrave','empty;','emsp;','ensp;','epsilon;','equiv;','eta;','eth;','eth',
- 'euml;','euml','euro;','exist;','fnof;','forall;','frac12;','frac12',
- 'frac14;','frac14','frac34;','frac34','frasl;','gamma;','ge;','gt;','gt',
- 'hArr;','harr;','hearts;','hellip;','iacute;','iacute','icirc;','icirc',
- 'iexcl;','iexcl','igrave;','igrave','image;','infin;','int;','iota;',
- 'iquest;','iquest','isin;','iuml;','iuml','kappa;','lArr;','lambda;','lang;',
- 'laquo;','laquo','larr;','lceil;','ldquo;','le;','lfloor;','lowast;','loz;',
- 'lrm;','lsaquo;','lsquo;','lt;','lt','macr;','macr','mdash;','micro;','micro',
- 'middot;','middot','minus;','mu;','nabla;','nbsp;','nbsp','ndash;','ne;',
- 'ni;','not;','not','notin;','nsub;','ntilde;','ntilde','nu;','oacute;',
- 'oacute','ocirc;','ocirc','oelig;','ograve;','ograve','oline;','omega;',
- 'omicron;','oplus;','or;','ordf;','ordf','ordm;','ordm','oslash;','oslash',
- 'otilde;','otilde','otimes;','ouml;','ouml','para;','para','part;','permil;',
- 'perp;','phi;','pi;','piv;','plusmn;','plusmn','pound;','pound','prime;',
- 'prod;','prop;','psi;','quot;','quot','rArr;','radic;','rang;','raquo;',
- 'raquo','rarr;','rceil;','rdquo;','real;','reg;','reg','rfloor;','rho;',
- 'rlm;','rsaquo;','rsquo;','sbquo;','scaron;','sdot;','sect;','sect','shy;',
- 'shy','sigma;','sigmaf;','sim;','spades;','sub;','sube;','sum;','sup1;',
- 'sup1','sup2;','sup2','sup3;','sup3','sup;','supe;','szlig;','szlig','tau;',
- 'there4;','theta;','thetasym;','thinsp;','thorn;','thorn','tilde;','times;',
- 'times','trade;','uArr;','uacute;','uacute','uarr;','ucirc;','ucirc',
- 'ugrave;','ugrave','uml;','uml','upsih;','upsilon;','uuml;','uuml','weierp;',
- 'xi;','yacute;','yacute','yen;','yen','yuml;','yuml','zeta;','zwj;','zwnj;');
-
- const PCDATA = 0;
- const RCDATA = 1;
- const CDATA = 2;
+ private $entities = array(
+ 'AElig;',
+ 'AElig',
+ 'AMP;',
+ 'AMP',
+ 'Aacute;',
+ 'Aacute',
+ 'Acirc;',
+ 'Acirc',
+ 'Agrave;',
+ 'Agrave',
+ 'Alpha;',
+ 'Aring;',
+ 'Aring',
+ 'Atilde;',
+ 'Atilde',
+ 'Auml;',
+ 'Auml',
+ 'Beta;',
+ 'COPY;',
+ 'COPY',
+ 'Ccedil;',
+ 'Ccedil',
+ 'Chi;',
+ 'Dagger;',
+ 'Delta;',
+ 'ETH;',
+ 'ETH',
+ 'Eacute;',
+ 'Eacute',
+ 'Ecirc;',
+ 'Ecirc',
+ 'Egrave;',
+ 'Egrave',
+ 'Epsilon;',
+ 'Eta;',
+ 'Euml;',
+ 'Euml',
+ 'GT;',
+ 'GT',
+ 'Gamma;',
+ 'Iacute;',
+ 'Iacute',
+ 'Icirc;',
+ 'Icirc',
+ 'Igrave;',
+ 'Igrave',
+ 'Iota;',
+ 'Iuml;',
+ 'Iuml',
+ 'Kappa;',
+ 'LT;',
+ 'LT',
+ 'Lambda;',
+ 'Mu;',
+ 'Ntilde;',
+ 'Ntilde',
+ 'Nu;',
+ 'OElig;',
+ 'Oacute;',
+ 'Oacute',
+ 'Ocirc;',
+ 'Ocirc',
+ 'Ograve;',
+ 'Ograve',
+ 'Omega;',
+ 'Omicron;',
+ 'Oslash;',
+ 'Oslash',
+ 'Otilde;',
+ 'Otilde',
+ 'Ouml;',
+ 'Ouml',
+ 'Phi;',
+ 'Pi;',
+ 'Prime;',
+ 'Psi;',
+ 'QUOT;',
+ 'QUOT',
+ 'REG;',
+ 'REG',
+ 'Rho;',
+ 'Scaron;',
+ 'Sigma;',
+ 'THORN;',
+ 'THORN',
+ 'TRADE;',
+ 'Tau;',
+ 'Theta;',
+ 'Uacute;',
+ 'Uacute',
+ 'Ucirc;',
+ 'Ucirc',
+ 'Ugrave;',
+ 'Ugrave',
+ 'Upsilon;',
+ 'Uuml;',
+ 'Uuml',
+ 'Xi;',
+ 'Yacute;',
+ 'Yacute',
+ 'Yuml;',
+ 'Zeta;',
+ 'aacute;',
+ 'aacute',
+ 'acirc;',
+ 'acirc',
+ 'acute;',
+ 'acute',
+ 'aelig;',
+ 'aelig',
+ 'agrave;',
+ 'agrave',
+ 'alefsym;',
+ 'alpha;',
+ 'amp;',
+ 'amp',
+ 'and;',
+ 'ang;',
+ 'apos;',
+ 'aring;',
+ 'aring',
+ 'asymp;',
+ 'atilde;',
+ 'atilde',
+ 'auml;',
+ 'auml',
+ 'bdquo;',
+ 'beta;',
+ 'brvbar;',
+ 'brvbar',
+ 'bull;',
+ 'cap;',
+ 'ccedil;',
+ 'ccedil',
+ 'cedil;',
+ 'cedil',
+ 'cent;',
+ 'cent',
+ 'chi;',
+ 'circ;',
+ 'clubs;',
+ 'cong;',
+ 'copy;',
+ 'copy',
+ 'crarr;',
+ 'cup;',
+ 'curren;',
+ 'curren',
+ 'dArr;',
+ 'dagger;',
+ 'darr;',
+ 'deg;',
+ 'deg',
+ 'delta;',
+ 'diams;',
+ 'divide;',
+ 'divide',
+ 'eacute;',
+ 'eacute',
+ 'ecirc;',
+ 'ecirc',
+ 'egrave;',
+ 'egrave',
+ 'empty;',
+ 'emsp;',
+ 'ensp;',
+ 'epsilon;',
+ 'equiv;',
+ 'eta;',
+ 'eth;',
+ 'eth',
+ 'euml;',
+ 'euml',
+ 'euro;',
+ 'exist;',
+ 'fnof;',
+ 'forall;',
+ 'frac12;',
+ 'frac12',
+ 'frac14;',
+ 'frac14',
+ 'frac34;',
+ 'frac34',
+ 'frasl;',
+ 'gamma;',
+ 'ge;',
+ 'gt;',
+ 'gt',
+ 'hArr;',
+ 'harr;',
+ 'hearts;',
+ 'hellip;',
+ 'iacute;',
+ 'iacute',
+ 'icirc;',
+ 'icirc',
+ 'iexcl;',
+ 'iexcl',
+ 'igrave;',
+ 'igrave',
+ 'image;',
+ 'infin;',
+ 'int;',
+ 'iota;',
+ 'iquest;',
+ 'iquest',
+ 'isin;',
+ 'iuml;',
+ 'iuml',
+ 'kappa;',
+ 'lArr;',
+ 'lambda;',
+ 'lang;',
+ 'laquo;',
+ 'laquo',
+ 'larr;',
+ 'lceil;',
+ 'ldquo;',
+ 'le;',
+ 'lfloor;',
+ 'lowast;',
+ 'loz;',
+ 'lrm;',
+ 'lsaquo;',
+ 'lsquo;',
+ 'lt;',
+ 'lt',
+ 'macr;',
+ 'macr',
+ 'mdash;',
+ 'micro;',
+ 'micro',
+ 'middot;',
+ 'middot',
+ 'minus;',
+ 'mu;',
+ 'nabla;',
+ 'nbsp;',
+ 'nbsp',
+ 'ndash;',
+ 'ne;',
+ 'ni;',
+ 'not;',
+ 'not',
+ 'notin;',
+ 'nsub;',
+ 'ntilde;',
+ 'ntilde',
+ 'nu;',
+ 'oacute;',
+ 'oacute',
+ 'ocirc;',
+ 'ocirc',
+ 'oelig;',
+ 'ograve;',
+ 'ograve',
+ 'oline;',
+ 'omega;',
+ 'omicron;',
+ 'oplus;',
+ 'or;',
+ 'ordf;',
+ 'ordf',
+ 'ordm;',
+ 'ordm',
+ 'oslash;',
+ 'oslash',
+ 'otilde;',
+ 'otilde',
+ 'otimes;',
+ 'ouml;',
+ 'ouml',
+ 'para;',
+ 'para',
+ 'part;',
+ 'permil;',
+ 'perp;',
+ 'phi;',
+ 'pi;',
+ 'piv;',
+ 'plusmn;',
+ 'plusmn',
+ 'pound;',
+ 'pound',
+ 'prime;',
+ 'prod;',
+ 'prop;',
+ 'psi;',
+ 'quot;',
+ 'quot',
+ 'rArr;',
+ 'radic;',
+ 'rang;',
+ 'raquo;',
+ 'raquo',
+ 'rarr;',
+ 'rceil;',
+ 'rdquo;',
+ 'real;',
+ 'reg;',
+ 'reg',
+ 'rfloor;',
+ 'rho;',
+ 'rlm;',
+ 'rsaquo;',
+ 'rsquo;',
+ 'sbquo;',
+ 'scaron;',
+ 'sdot;',
+ 'sect;',
+ 'sect',
+ 'shy;',
+ 'shy',
+ 'sigma;',
+ 'sigmaf;',
+ 'sim;',
+ 'spades;',
+ 'sub;',
+ 'sube;',
+ 'sum;',
+ 'sup1;',
+ 'sup1',
+ 'sup2;',
+ 'sup2',
+ 'sup3;',
+ 'sup3',
+ 'sup;',
+ 'supe;',
+ 'szlig;',
+ 'szlig',
+ 'tau;',
+ 'there4;',
+ 'theta;',
+ 'thetasym;',
+ 'thinsp;',
+ 'thorn;',
+ 'thorn',
+ 'tilde;',
+ 'times;',
+ 'times',
+ 'trade;',
+ 'uArr;',
+ 'uacute;',
+ 'uacute',
+ 'uarr;',
+ 'ucirc;',
+ 'ucirc',
+ 'ugrave;',
+ 'ugrave',
+ 'uml;',
+ 'uml',
+ 'upsih;',
+ 'upsilon;',
+ 'uuml;',
+ 'uuml',
+ 'weierp;',
+ 'xi;',
+ 'yacute;',
+ 'yacute',
+ 'yen;',
+ 'yen',
+ 'yuml;',
+ 'yuml',
+ 'zeta;',
+ 'zwj;',
+ 'zwnj;'
+ );
+
+ const PCDATA = 0;
+ const RCDATA = 1;
+ const CDATA = 2;
const PLAINTEXT = 3;
- const DOCTYPE = 0;
+ const DOCTYPE = 0;
const STARTTAG = 1;
- const ENDTAG = 2;
- const COMMENT = 3;
+ const ENDTAG = 2;
+ const COMMENT = 3;
const CHARACTR = 4;
- const EOF = 5;
-
- public function __construct($data) {
- $data = str_replace("\r\n", "\n", $data);
- $data = str_replace("\r", null, $data);
+ const EOF = 5;
+ public function __construct($data)
+ {
$this->data = $data;
$this->char = -1;
- $this->EOF = strlen($data);
+ $this->EOF = strlen($data);
$this->tree = new HTML5TreeConstructer;
$this->content_model = self::PCDATA;
$this->state = 'data';
- while($this->state !== null) {
- $this->{$this->state.'State'}();
+ while ($this->state !== null) {
+ $this->{$this->state . 'State'}();
}
}
- public function save() {
+ public function save()
+ {
return $this->tree->save();
}
- private function char() {
+ private function char()
+ {
return ($this->char < $this->EOF)
? $this->data[$this->char]
: false;
}
- private function character($s, $l = 0) {
- if($s + $l < $this->EOF) {
- if($l === 0) {
+ private function character($s, $l = 0)
+ {
+ if ($s + $l < $this->EOF) {
+ if ($l === 0) {
return $this->data[$s];
} else {
return substr($this->data, $s, $l);
@@ -161,46 +497,52 @@ class HTML5 {
}
}
- private function characters($char_class, $start) {
- return preg_replace('#^(['.$char_class.']+).*#s', '\\1', substr($this->data, $start));
+ private function characters($char_class, $start)
+ {
+ return preg_replace('#^([' . $char_class . ']+).*#s', '\\1', substr($this->data, $start));
}
- private function dataState() {
+ private function dataState()
+ {
// Consume the next input character
$this->char++;
$char = $this->char();
- if($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) {
+ if ($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) {
/* U+0026 AMPERSAND (&)
When the content model flag is set to one of the PCDATA or RCDATA
states: switch to the entity data state. Otherwise: treat it as per
the "anything else" entry below. */
$this->state = 'entityData';
- } elseif($char === '-') {
+ } elseif ($char === '-') {
/* If the content model flag is set to either the RCDATA state or
the CDATA state, and the escape flag is false, and there are at
least three characters before this one in the input stream, and the
last four characters in the input stream, including this one, are
U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
and U+002D HYPHEN-MINUS ("<!--"), then set the escape flag to true. */
- if(($this->content_model === self::RCDATA || $this->content_model ===
- self::CDATA) && $this->escape === false &&
- $this->char >= 3 && $this->character($this->char - 4, 4) === '<!--') {
+ if (($this->content_model === self::RCDATA || $this->content_model ===
+ self::CDATA) && $this->escape === false &&
+ $this->char >= 3 && $this->character($this->char - 4, 4) === '<!--'
+ ) {
$this->escape = true;
}
/* In any case, emit the input character as a character token. Stay
in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
- /* U+003C LESS-THAN SIGN (<) */
- } elseif($char === '<' && ($this->content_model === self::PCDATA ||
- (($this->content_model === self::RCDATA ||
- $this->content_model === self::CDATA) && $this->escape === false))) {
+ /* U+003C LESS-THAN SIGN (<) */
+ } elseif ($char === '<' && ($this->content_model === self::PCDATA ||
+ (($this->content_model === self::RCDATA ||
+ $this->content_model === self::CDATA) && $this->escape === false))
+ ) {
/* When the content model flag is set to the PCDATA state: switch
to the tag open state.
@@ -211,39 +553,44 @@ class HTML5 {
Otherwise: treat it as per the "anything else" entry below. */
$this->state = 'tagOpen';
- /* U+003E GREATER-THAN SIGN (>) */
- } elseif($char === '>') {
+ /* U+003E GREATER-THAN SIGN (>) */
+ } elseif ($char === '>') {
/* If the content model flag is set to either the RCDATA state or
the CDATA state, and the escape flag is true, and the last three
characters in the input stream including this one are U+002D
HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN SIGN ("-->"),
set the escape flag to false. */
- if(($this->content_model === self::RCDATA ||
- $this->content_model === self::CDATA) && $this->escape === true &&
- $this->character($this->char, 3) === '-->') {
+ if (($this->content_model === self::RCDATA ||
+ $this->content_model === self::CDATA) && $this->escape === true &&
+ $this->character($this->char, 3) === '-->'
+ ) {
$this->escape = false;
}
/* In any case, emit the input character as a character token.
Stay in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Emit an end-of-file token. */
$this->EOF();
- } elseif($this->content_model === self::PLAINTEXT) {
+ } elseif ($this->content_model === self::PLAINTEXT) {
/* When the content model flag is set to the PLAINTEXT state
THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of
the text and emit it as a character token. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => substr($this->data, $this->char)
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => substr($this->data, $this->char)
+ )
+ );
$this->EOF();
@@ -252,37 +599,43 @@ class HTML5 {
THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that
otherwise would also be treated as a character token and emit it
as a single character token. Stay in the data state. */
- $len = strcspn($this->data, '<&', $this->char);
+ $len = strcspn($this->data, '<&', $this->char);
$char = substr($this->data, $this->char, $len);
$this->char += $len - 1;
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
$this->state = 'data';
}
}
- private function entityDataState() {
+ private function entityDataState()
+ {
// Attempt to consume an entity.
$entity = $this->entity();
// If nothing is returned, emit a U+0026 AMPERSAND character token.
// Otherwise, emit the character token that was returned.
$char = (!$entity) ? '&' : $entity;
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
// Finally, switch to the data state.
$this->state = 'data';
}
- private function tagOpenState() {
- switch($this->content_model) {
+ private function tagOpenState()
+ {
+ switch ($this->content_model) {
case self::RCDATA:
case self::CDATA:
/* If the next input character is a U+002F SOLIDUS (/) character,
@@ -290,19 +643,21 @@ class HTML5 {
input character is not a U+002F SOLIDUS (/) character, emit a
U+003C LESS-THAN SIGN character token and switch to the data
state to process the next input character. */
- if($this->character($this->char + 1) === '/') {
+ if ($this->character($this->char + 1) === '/') {
$this->char++;
$this->state = 'closeTagOpen';
} else {
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<'
+ )
+ );
$this->state = 'data';
}
- break;
+ break;
case self::PCDATA:
// If the content model flag is set to the PCDATA state
@@ -310,42 +665,44 @@ class HTML5 {
$this->char++;
$char = $this->char();
- if($char === '!') {
+ if ($char === '!') {
/* U+0021 EXCLAMATION MARK (!)
Switch to the markup declaration open state. */
$this->state = 'markupDeclarationOpen';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Switch to the close tag open state. */
$this->state = 'closeTagOpen';
- } elseif(preg_match('/^[A-Za-z]$/', $char)) {
+ } elseif (preg_match('/^[A-Za-z]$/', $char)) {
/* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
Create a new start tag token, set its tag name to the lowercase
version of the input character (add 0x0020 to the character's code
point), then switch to the tag name state. (Don't emit the token
yet; further details will be filled in before it is emitted.) */
$this->token = array(
- 'name' => strtolower($char),
- 'type' => self::STARTTAG,
- 'attr' => array()
+ 'name' => strtolower($char),
+ 'type' => self::STARTTAG,
+ 'attr' => array()
);
$this->state = 'tagName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Parse error. Emit a U+003C LESS-THAN SIGN character token and a
U+003E GREATER-THAN SIGN character token. Switch to the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<>'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<>'
+ )
+ );
$this->state = 'data';
- } elseif($char === '?') {
+ } elseif ($char === '?') {
/* U+003F QUESTION MARK (?)
Parse error. Switch to the bogus comment state. */
$this->state = 'bogusComment';
@@ -354,25 +711,31 @@ class HTML5 {
/* Anything else
Parse error. Emit a U+003C LESS-THAN SIGN character token and
reconsume the current input character in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<'
+ )
+ );
$this->char--;
$this->state = 'data';
}
- break;
+ break;
}
}
- private function closeTagOpenState() {
+ private function closeTagOpenState()
+ {
$next_node = strtolower($this->characters('A-Za-z', $this->char + 1));
$the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName;
- if(($this->content_model === self::RCDATA || $this->content_model === self::CDATA) &&
- (!$the_same || ($the_same && (!preg_match('/[\t\n\x0b\x0c >\/]/',
- $this->character($this->char + 1 + strlen($next_node))) || $this->EOF === $this->char)))) {
+ if (($this->content_model === self::RCDATA || $this->content_model === self::CDATA) &&
+ (!$the_same || ($the_same && (!preg_match(
+ '/[\t\n\x0b\x0c >\/]/',
+ $this->character($this->char + 1 + strlen($next_node))
+ ) || $this->EOF === $this->char)))
+ ) {
/* If the content model flag is set to the RCDATA or CDATA states then
examine the next few characters. If they do not match the tag name of
the last start tag token emitted (case insensitively), or if they do but
@@ -388,10 +751,12 @@ class HTML5 {
...then there is a parse error. Emit a U+003C LESS-THAN SIGN character
token, a U+002F SOLIDUS character token, and switch to the data state
to process the next input character. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '</'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '</'
+ )
+ );
$this->state = 'data';
@@ -402,32 +767,34 @@ class HTML5 {
$this->char++;
$char = $this->char();
- if(preg_match('/^[A-Za-z]$/', $char)) {
+ if (preg_match('/^[A-Za-z]$/', $char)) {
/* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
Create a new end tag token, set its tag name to the lowercase version
of the input character (add 0x0020 to the character's code point), then
switch to the tag name state. (Don't emit the token yet; further details
will be filled in before it is emitted.) */
$this->token = array(
- 'name' => strtolower($char),
- 'type' => self::ENDTAG
+ 'name' => strtolower($char),
+ 'type' => self::ENDTAG
);
$this->state = 'tagName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Parse error. Switch to the data state. */
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F
SOLIDUS character token. Reconsume the EOF character in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '</'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '</'
+ )
+ );
$this->char--;
$this->state = 'data';
@@ -439,12 +806,13 @@ class HTML5 {
}
}
- private function tagNameState() {
+ private function tagNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -453,13 +821,13 @@ class HTML5 {
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -468,7 +836,7 @@ class HTML5 {
$this->char--;
$this->state = 'data';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the before
attribute name state. */
@@ -483,12 +851,13 @@ class HTML5 {
}
}
- private function beforeAttributeNameState() {
+ private function beforeAttributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -497,19 +866,19 @@ class HTML5 {
Stay in the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Stay in the before
attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -524,7 +893,7 @@ class HTML5 {
name to the current input character, and its value to the empty string.
Switch to the attribute name state. */
$this->token['attr'][] = array(
- 'name' => strtolower($char),
+ 'name' => strtolower($char),
'value' => null
);
@@ -532,12 +901,13 @@ class HTML5 {
}
}
- private function attributeNameState() {
+ private function attributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -546,24 +916,24 @@ class HTML5 {
Stay in the before attribute name state. */
$this->state = 'afterAttributeName';
- } elseif($char === '=') {
+ } elseif ($char === '=') {
/* U+003D EQUALS SIGN (=)
Switch to the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/' && $this->character($this->char + 1) !== '>') {
+ } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the before
attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -583,12 +953,13 @@ class HTML5 {
}
}
- private function afterAttributeNameState() {
+ private function afterAttributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -597,24 +968,24 @@ class HTML5 {
Stay in the after attribute name state. */
$this->state = 'afterAttributeName';
- } elseif($char === '=') {
+ } elseif ($char === '=') {
/* U+003D EQUALS SIGN (=)
Switch to the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/' && $this->character($this->char + 1) !== '>') {
+ } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the
before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -629,7 +1000,7 @@ class HTML5 {
name to the current input character, and its value to the empty string.
Switch to the attribute name state. */
$this->token['attr'][] = array(
- 'name' => strtolower($char),
+ 'name' => strtolower($char),
'value' => null
);
@@ -637,12 +1008,13 @@ class HTML5 {
}
}
- private function beforeAttributeValueState() {
+ private function beforeAttributeValueState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -651,24 +1023,24 @@ class HTML5 {
Stay in the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '"') {
+ } elseif ($char === '"') {
/* U+0022 QUOTATION MARK (")
Switch to the attribute value (double-quoted) state. */
$this->state = 'attributeValueDoubleQuoted';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the attribute value (unquoted) state and reconsume
this input character. */
$this->char--;
$this->state = 'attributeValueUnquoted';
- } elseif($char === '\'') {
+ } elseif ($char === '\'') {
/* U+0027 APOSTROPHE (')
Switch to the attribute value (single-quoted) state. */
$this->state = 'attributeValueSingleQuoted';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
@@ -685,22 +1057,23 @@ class HTML5 {
}
}
- private function attributeValueDoubleQuotedState() {
+ private function attributeValueDoubleQuotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if($char === '"') {
+ if ($char === '"') {
/* U+0022 QUOTATION MARK (")
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState('double');
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the character
in the data state. */
@@ -720,22 +1093,23 @@ class HTML5 {
}
}
- private function attributeValueSingleQuotedState() {
+ private function attributeValueSingleQuotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if($char === '\'') {
+ if ($char === '\'') {
/* U+0022 QUOTATION MARK (')
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState('single');
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the character
in the data state. */
@@ -755,12 +1129,13 @@ class HTML5 {
}
}
- private function attributeValueUnquotedState() {
+ private function attributeValueUnquotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -769,12 +1144,12 @@ class HTML5 {
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState();
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
@@ -791,7 +1166,8 @@ class HTML5 {
}
}
- private function entityInAttributeValueState() {
+ private function entityInAttributeValueState()
+ {
// Attempt to consume an entity.
$entity = $this->entity();
@@ -806,7 +1182,8 @@ class HTML5 {
$this->token['attr'][$last]['value'] .= $char;
}
- private function bogusCommentState() {
+ private function bogusCommentState()
+ {
/* Consume every character up to the first U+003E GREATER-THAN SIGN
character (>) or the end of the file (EOF), whichever comes first. Emit
a comment token whose data is the concatenation of all the characters
@@ -816,10 +1193,12 @@ class HTML5 {
end of the file otherwise. (If the comment was started by the end of
the file (EOF), the token is empty.) */
$data = $this->characters('^>', $this->char);
- $this->emitToken(array(
- 'data' => $data,
- 'type' => self::COMMENT
- ));
+ $this->emitToken(
+ array(
+ 'data' => $data,
+ 'type' => self::COMMENT
+ )
+ );
$this->char += strlen($data);
@@ -827,16 +1206,17 @@ class HTML5 {
$this->state = 'data';
/* If the end of the file was reached, reconsume the EOF character. */
- if($this->char === $this->EOF) {
+ if ($this->char === $this->EOF) {
$this->char = $this->EOF - 1;
}
}
- private function markupDeclarationOpenState() {
+ private function markupDeclarationOpenState()
+ {
/* If the next two characters are both U+002D HYPHEN-MINUS (-)
characters, consume those two characters, create a comment token whose
data is the empty string, and switch to the comment state. */
- if($this->character($this->char + 1, 2) === '--') {
+ if ($this->character($this->char + 1, 2) === '--') {
$this->char += 2;
$this->state = 'comment';
$this->token = array(
@@ -844,41 +1224,42 @@ class HTML5 {
'type' => self::COMMENT
);
- /* Otherwise if the next seven chacacters are a case-insensitive match
- for the word "DOCTYPE", then consume those characters and switch to the
- DOCTYPE state. */
- } elseif(strtolower($this->character($this->char + 1, 7)) === 'doctype') {
+ /* Otherwise if the next seven chacacters are a case-insensitive match
+ for the word "DOCTYPE", then consume those characters and switch to the
+ DOCTYPE state. */
+ } elseif (strtolower($this->character($this->char + 1, 7)) === 'doctype') {
$this->char += 7;
$this->state = 'doctype';
- /* Otherwise, is is a parse error. Switch to the bogus comment state.
- The next character that is consumed, if any, is the first character
- that will be in the comment. */
+ /* Otherwise, is is a parse error. Switch to the bogus comment state.
+ The next character that is consumed, if any, is the first character
+ that will be in the comment. */
} else {
$this->char++;
$this->state = 'bogusComment';
}
}
- private function commentState() {
+ private function commentState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
/* U+002D HYPHEN-MINUS (-) */
- if($char === '-') {
+ if ($char === '-') {
/* Switch to the comment dash state */
$this->state = 'commentDash';
- /* EOF */
- } elseif($this->char === $this->EOF) {
+ /* EOF */
+ } elseif ($this->char === $this->EOF) {
/* Parse error. Emit the comment token. Reconsume the EOF character
in the data state. */
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
- /* Anything else */
+ /* Anything else */
} else {
/* Append the input character to the comment token's data. Stay in
the comment state. */
@@ -886,62 +1267,65 @@ class HTML5 {
}
}
- private function commentDashState() {
+ private function commentDashState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
/* U+002D HYPHEN-MINUS (-) */
- if($char === '-') {
+ if ($char === '-') {
/* Switch to the comment end state */
$this->state = 'commentEnd';
- /* EOF */
- } elseif($this->char === $this->EOF) {
+ /* EOF */
+ } elseif ($this->char === $this->EOF) {
/* Parse error. Emit the comment token. Reconsume the EOF character
in the data state. */
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
- /* Anything else */
+ /* Anything else */
} else {
/* Append a U+002D HYPHEN-MINUS (-) character and the input
character to the comment token's data. Switch to the comment state. */
- $this->token['data'] .= '-'.$char;
+ $this->token['data'] .= '-' . $char;
$this->state = 'comment';
}
}
- private function commentEndState() {
+ private function commentEndState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if($char === '>') {
+ if ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '-') {
+ } elseif ($char === '-') {
$this->token['data'] .= '-';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
} else {
- $this->token['data'] .= '--'.$char;
+ $this->token['data'] .= '--' . $char;
$this->state = 'comment';
}
}
- private function doctypeState() {
+ private function doctypeState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
$this->state = 'beforeDoctypeName';
} else {
@@ -950,15 +1334,16 @@ class HTML5 {
}
}
- private function beforeDoctypeNameState() {
+ private function beforeDoctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
// Stay in the before DOCTYPE name state.
- } elseif(preg_match('/^[a-z]$/', $char)) {
+ } elseif (preg_match('/^[a-z]$/', $char)) {
$this->token = array(
'name' => strtoupper($char),
'type' => self::DOCTYPE,
@@ -967,21 +1352,25 @@ class HTML5 {
$this->state = 'doctypeName';
- } elseif($char === '>') {
- $this->emitToken(array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- ));
+ } elseif ($char === '>') {
+ $this->emitToken(
+ array(
+ 'name' => null,
+ 'type' => self::DOCTYPE,
+ 'error' => true
+ )
+ );
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
- $this->emitToken(array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- ));
+ } elseif ($this->char === $this->EOF) {
+ $this->emitToken(
+ array(
+ 'name' => null,
+ 'type' => self::DOCTYPE,
+ 'error' => true
+ )
+ );
$this->char--;
$this->state = 'data';
@@ -997,22 +1386,23 @@ class HTML5 {
}
}
- private function doctypeNameState() {
+ private function doctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
$this->state = 'AfterDoctypeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif(preg_match('/^[a-z]$/', $char)) {
+ } elseif (preg_match('/^[a-z]$/', $char)) {
$this->token['name'] .= strtoupper($char);
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1026,19 +1416,20 @@ class HTML5 {
: true;
}
- private function afterDoctypeNameState() {
+ private function afterDoctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
// Stay in the DOCTYPE name state.
- } elseif($char === '>') {
+ } elseif ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1049,16 +1440,17 @@ class HTML5 {
}
}
- private function bogusDoctypeState() {
+ private function bogusDoctypeState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if($char === '>') {
+ if ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1068,22 +1460,23 @@ class HTML5 {
}
}
- private function entity() {
+ private function entity()
+ {
$start = $this->char;
// This section defines how to consume an entity. This definition is
// used when parsing entities in text and in attributes.
// The behaviour depends on the identity of the next character (the
- // one immediately after the U+0026 AMPERSAND character):
+ // one immediately after the U+0026 AMPERSAND character):
- switch($this->character($this->char + 1)) {
+ switch ($this->character($this->char + 1)) {
// U+0023 NUMBER SIGN (#)
case '#':
// The behaviour further depends on the character after the
// U+0023 NUMBER SIGN:
- switch($this->character($this->char + 1)) {
+ switch ($this->character($this->char + 1)) {
// U+0078 LATIN SMALL LETTER X
// U+0058 LATIN CAPITAL LETTER X
case 'x':
@@ -1096,7 +1489,7 @@ class HTML5 {
// words, 0-9, A-F, a-f).
$char = 1;
$char_class = '0-9A-Fa-f';
- break;
+ break;
// Anything else
default:
@@ -1105,7 +1498,7 @@ class HTML5 {
// NINE (i.e. just 0-9).
$char = 0;
$char_class = '0-9';
- break;
+ break;
}
// Consume as many characters as match the range of characters
@@ -1116,7 +1509,7 @@ class HTML5 {
$cond = strlen($e_name) > 0;
// The rest of the parsing happens bellow.
- break;
+ break;
// Anything else
default:
@@ -1126,12 +1519,12 @@ class HTML5 {
$e_name = $this->characters('0-9A-Za-z;', $this->char + 1);
$len = strlen($e_name);
- for($c = 1; $c <= $len; $c++) {
+ for ($c = 1; $c <= $len; $c++) {
$id = substr($e_name, 0, $c);
$this->char++;
- if(in_array($id, $this->entities)) {
- if ($e_name[$c-1] !== ';') {
+ if (in_array($id, $this->entities)) {
+ if ($e_name[$c - 1] !== ';') {
if ($c < $len && $e_name[$c] == ';') {
$this->char++; // consume extra semicolon
}
@@ -1143,10 +1536,10 @@ class HTML5 {
$cond = isset($entity);
// The rest of the parsing happens bellow.
- break;
+ break;
}
- if(!$cond) {
+ if (!$cond) {
// If no match can be made, then this is a parse error. No
// characters are consumed, and nothing is returned.
$this->char = $start;
@@ -1155,81 +1548,157 @@ class HTML5 {
// Return a character token for the character corresponding to the
// entity name (as given by the second column of the entities table).
- return html_entity_decode('&'.$entity.';', ENT_QUOTES, 'UTF-8');
+ return html_entity_decode('&' . $entity . ';', ENT_QUOTES, 'UTF-8');
}
- private function emitToken($token) {
+ private function emitToken($token)
+ {
$emit = $this->tree->emitToken($token);
- if(is_int($emit)) {
+ if (is_int($emit)) {
$this->content_model = $emit;
- } elseif($token['type'] === self::ENDTAG) {
+ } elseif ($token['type'] === self::ENDTAG) {
$this->content_model = self::PCDATA;
}
}
- private function EOF() {
+ private function EOF()
+ {
$this->state = null;
- $this->tree->emitToken(array(
- 'type' => self::EOF
- ));
+ $this->tree->emitToken(
+ array(
+ 'type' => self::EOF
+ )
+ );
}
}
-class HTML5TreeConstructer {
+class HTML5TreeConstructer
+{
public $stack = array();
private $phase;
private $mode;
private $dom;
private $foster_parent = null;
- private $a_formatting = array();
+ private $a_formatting = array();
private $head_pointer = null;
private $form_pointer = null;
- private $scoping = array('button','caption','html','marquee','object','table','td','th');
- private $formatting = array('a','b','big','em','font','i','nobr','s','small','strike','strong','tt','u');
- private $special = array('address','area','base','basefont','bgsound',
- 'blockquote','body','br','center','col','colgroup','dd','dir','div','dl',
- 'dt','embed','fieldset','form','frame','frameset','h1','h2','h3','h4','h5',
- 'h6','head','hr','iframe','image','img','input','isindex','li','link',
- 'listing','menu','meta','noembed','noframes','noscript','ol','optgroup',
- 'option','p','param','plaintext','pre','script','select','spacer','style',
- 'tbody','textarea','tfoot','thead','title','tr','ul','wbr');
+ private $scoping = array('button', 'caption', 'html', 'marquee', 'object', 'table', 'td', 'th');
+ private $formatting = array(
+ 'a',
+ 'b',
+ 'big',
+ 'em',
+ 'font',
+ 'i',
+ 'nobr',
+ 's',
+ 'small',
+ 'strike',
+ 'strong',
+ 'tt',
+ 'u'
+ );
+ private $special = array(
+ 'address',
+ 'area',
+ 'base',
+ 'basefont',
+ 'bgsound',
+ 'blockquote',
+ 'body',
+ 'br',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'embed',
+ 'fieldset',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'hr',
+ 'iframe',
+ 'image',
+ 'img',
+ 'input',
+ 'isindex',
+ 'li',
+ 'link',
+ 'listing',
+ 'menu',
+ 'meta',
+ 'noembed',
+ 'noframes',
+ 'noscript',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'plaintext',
+ 'pre',
+ 'script',
+ 'select',
+ 'spacer',
+ 'style',
+ 'tbody',
+ 'textarea',
+ 'tfoot',
+ 'thead',
+ 'title',
+ 'tr',
+ 'ul',
+ 'wbr'
+ );
// The different phases.
const INIT_PHASE = 0;
const ROOT_PHASE = 1;
const MAIN_PHASE = 2;
- const END_PHASE = 3;
+ const END_PHASE = 3;
// The different insertion modes for the main phase.
const BEFOR_HEAD = 0;
- const IN_HEAD = 1;
+ const IN_HEAD = 1;
const AFTER_HEAD = 2;
- const IN_BODY = 3;
- const IN_TABLE = 4;
+ const IN_BODY = 3;
+ const IN_TABLE = 4;
const IN_CAPTION = 5;
- const IN_CGROUP = 6;
- const IN_TBODY = 7;
- const IN_ROW = 8;
- const IN_CELL = 9;
- const IN_SELECT = 10;
+ const IN_CGROUP = 6;
+ const IN_TBODY = 7;
+ const IN_ROW = 8;
+ const IN_CELL = 9;
+ const IN_SELECT = 10;
const AFTER_BODY = 11;
- const IN_FRAME = 12;
+ const IN_FRAME = 12;
const AFTR_FRAME = 13;
// The different types of elements.
- const SPECIAL = 0;
- const SCOPING = 1;
+ const SPECIAL = 0;
+ const SCOPING = 1;
const FORMATTING = 2;
- const PHRASING = 3;
+ const PHRASING = 3;
- const MARKER = 0;
+ const MARKER = 0;
- public function __construct() {
+ public function __construct()
+ {
$this->phase = self::INIT_PHASE;
$this->mode = self::BEFOR_HEAD;
$this->dom = new DOMDocument;
@@ -1241,16 +1710,26 @@ class HTML5TreeConstructer {
}
// Process tag tokens
- public function emitToken($token) {
- switch($this->phase) {
- case self::INIT_PHASE: return $this->initPhase($token); break;
- case self::ROOT_PHASE: return $this->rootElementPhase($token); break;
- case self::MAIN_PHASE: return $this->mainPhase($token); break;
- case self::END_PHASE : return $this->trailingEndPhase($token); break;
+ public function emitToken($token)
+ {
+ switch ($this->phase) {
+ case self::INIT_PHASE:
+ return $this->initPhase($token);
+ break;
+ case self::ROOT_PHASE:
+ return $this->rootElementPhase($token);
+ break;
+ case self::MAIN_PHASE:
+ return $this->mainPhase($token);
+ break;
+ case self::END_PHASE :
+ return $this->trailingEndPhase($token);
+ break;
}
}
- private function initPhase($token) {
+ private function initPhase($token)
+ {
/* Initially, the tree construction stage must handle each token
emitted from the tokenisation stage as follows: */
@@ -1262,13 +1741,14 @@ class HTML5TreeConstructer {
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE
An end-of-file token */
- if((isset($token['error']) && $token['error']) ||
- $token['type'] === HTML5::COMMENT ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF ||
- ($token['type'] === HTML5::CHARACTR && isset($token['data']) &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))) {
+ if ((isset($token['error']) && $token['error']) ||
+ $token['type'] === HTML5::COMMENT ||
+ $token['type'] === HTML5::STARTTAG ||
+ $token['type'] === HTML5::ENDTAG ||
+ $token['type'] === HTML5::EOF ||
+ ($token['type'] === HTML5::CHARACTR && isset($token['data']) &&
+ !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))
+ ) {
/* This specification does not define how to handle this case. In
particular, user agents may ignore the entirety of this specification
altogether for such documents, and instead invoke special parse modes
@@ -1277,8 +1757,8 @@ class HTML5TreeConstructer {
$this->phase = self::ROOT_PHASE;
return $this->rootElementPhase($token);
- /* A DOCTYPE token marked as being correct */
- } elseif(isset($token['error']) && !$token['error']) {
+ /* A DOCTYPE token marked as being correct */
+ } elseif (isset($token['error']) && !$token['error']) {
/* Append a DocumentType node to the Document node, with the name
attribute set to the name given in the DOCTYPE token (which will be
"HTML"), and the other attributes specific to DocumentType objects
@@ -1289,52 +1769,58 @@ class HTML5TreeConstructer {
stage. */
$this->phase = self::ROOT_PHASE;
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif(isset($token['data']) && preg_match('/^[\t\n\x0b\x0c ]+$/',
- $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif (isset($token['data']) && preg_match(
+ '/^[\t\n\x0b\x0c ]+$/',
+ $token['data']
+ )
+ ) {
/* Append that character to the Document node. */
$text = $this->dom->createTextNode($token['data']);
$this->dom->appendChild($text);
}
}
- private function rootElementPhase($token) {
+ private function rootElementPhase($token)
+ {
/* After the initial phase, as each token is emitted from the tokenisation
stage, it must be processed as described in this section. */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the Document object with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->dom->appendChild($comment);
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append that character to the Document node. */
$text = $this->dom->createTextNode($token['data']);
$this->dom->appendChild($text);
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED
- (FF), or U+0020 SPACE
- A start tag token
- An end tag token
- An end-of-file token */
- } elseif(($token['type'] === HTML5::CHARACTR &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF) {
+ /* A character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED
+ (FF), or U+0020 SPACE
+ A start tag token
+ An end tag token
+ An end-of-file token */
+ } elseif (($token['type'] === HTML5::CHARACTR &&
+ !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
+ $token['type'] === HTML5::STARTTAG ||
+ $token['type'] === HTML5::ENDTAG ||
+ $token['type'] === HTML5::EOF
+ ) {
/* Create an HTMLElement node with the tag name html, in the HTML
namespace. Append it to the Document object. Switch to the main
phase and reprocess the current token. */
@@ -1347,15 +1833,16 @@ class HTML5TreeConstructer {
}
}
- private function mainPhase($token) {
+ private function mainPhase($token)
+ {
/* Tokens in the main phase must be handled as follows: */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A start tag token with the tag name "html" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') {
+ /* A start tag token with the tag name "html" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') {
/* If this start tag token was not the first start tag token, then
it is a parse error. */
@@ -1363,59 +1850,91 @@ class HTML5TreeConstructer {
is already present on the top element of the stack of open elements.
If it is not, add the attribute and its corresponding value to that
element. */
- foreach($token['attr'] as $attr) {
- if(!$this->stack[0]->hasAttribute($attr['name'])) {
+ foreach ($token['attr'] as $attr) {
+ if (!$this->stack[0]->hasAttribute($attr['name'])) {
$this->stack[0]->setAttribute($attr['name'], $attr['value']);
}
}
- /* An end-of-file token */
- } elseif($token['type'] === HTML5::EOF) {
+ /* An end-of-file token */
+ } elseif ($token['type'] === HTML5::EOF) {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
- /* Anything else. */
+ /* Anything else. */
} else {
/* Depends on the insertion mode: */
- switch($this->mode) {
- case self::BEFOR_HEAD: return $this->beforeHead($token); break;
- case self::IN_HEAD: return $this->inHead($token); break;
- case self::AFTER_HEAD: return $this->afterHead($token); break;
- case self::IN_BODY: return $this->inBody($token); break;
- case self::IN_TABLE: return $this->inTable($token); break;
- case self::IN_CAPTION: return $this->inCaption($token); break;
- case self::IN_CGROUP: return $this->inColumnGroup($token); break;
- case self::IN_TBODY: return $this->inTableBody($token); break;
- case self::IN_ROW: return $this->inRow($token); break;
- case self::IN_CELL: return $this->inCell($token); break;
- case self::IN_SELECT: return $this->inSelect($token); break;
- case self::AFTER_BODY: return $this->afterBody($token); break;
- case self::IN_FRAME: return $this->inFrameset($token); break;
- case self::AFTR_FRAME: return $this->afterFrameset($token); break;
- case self::END_PHASE: return $this->trailingEndPhase($token); break;
+ switch ($this->mode) {
+ case self::BEFOR_HEAD:
+ return $this->beforeHead($token);
+ break;
+ case self::IN_HEAD:
+ return $this->inHead($token);
+ break;
+ case self::AFTER_HEAD:
+ return $this->afterHead($token);
+ break;
+ case self::IN_BODY:
+ return $this->inBody($token);
+ break;
+ case self::IN_TABLE:
+ return $this->inTable($token);
+ break;
+ case self::IN_CAPTION:
+ return $this->inCaption($token);
+ break;
+ case self::IN_CGROUP:
+ return $this->inColumnGroup($token);
+ break;
+ case self::IN_TBODY:
+ return $this->inTableBody($token);
+ break;
+ case self::IN_ROW:
+ return $this->inRow($token);
+ break;
+ case self::IN_CELL:
+ return $this->inCell($token);
+ break;
+ case self::IN_SELECT:
+ return $this->inSelect($token);
+ break;
+ case self::AFTER_BODY:
+ return $this->afterBody($token);
+ break;
+ case self::IN_FRAME:
+ return $this->inFrameset($token);
+ break;
+ case self::AFTR_FRAME:
+ return $this->afterFrameset($token);
+ break;
+ case self::END_PHASE:
+ return $this->trailingEndPhase($token);
+ break;
}
}
}
- private function beforeHead($token) {
+ private function beforeHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token with the tag name "head" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') {
+ /* A start tag token with the tag name "head" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') {
/* Create an element for the token, append the new element to the
current node and push it onto the stack of open elements. */
$element = $this->insertElement($token);
@@ -1426,32 +1945,38 @@ class HTML5TreeConstructer {
/* Change the insertion mode to "in head". */
$this->mode = self::IN_HEAD;
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title". Or an end tag with the tag name "html".
- Or a character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or any other start tag token */
- } elseif($token['type'] === HTML5::STARTTAG ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') ||
- ($token['type'] === HTML5::CHARACTR && !preg_match('/^[\t\n\x0b\x0c ]$/',
- $token['data']))) {
+ /* A start tag token whose tag name is one of: "base", "link", "meta",
+ "script", "style", "title". Or an end tag with the tag name "html".
+ Or a character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE. Or any other start tag token */
+ } elseif ($token['type'] === HTML5::STARTTAG ||
+ ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') ||
+ ($token['type'] === HTML5::CHARACTR && !preg_match(
+ '/^[\t\n\x0b\x0c ]$/',
+ $token['data']
+ ))
+ ) {
/* Act as if a start tag token with the tag name "head" and no
attributes had been seen, then reprocess the current token. */
- $this->beforeHead(array(
- 'name' => 'head',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->beforeHead(
+ array(
+ 'name' => 'head',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inHead($token);
- /* Any other end tag */
- } elseif($token['type'] === HTML5::ENDTAG) {
+ /* Any other end tag */
+ } elseif ($token['type'] === HTML5::ENDTAG) {
/* Parse error. Ignore the token. */
}
}
- private function inHead($token) {
+ private function inHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
@@ -1461,30 +1986,34 @@ class HTML5TreeConstructer {
THIS DIFFERS FROM THE SPEC: If the current node is either a title, style
or script element, append the character to the current node regardless
of its content. */
- if(($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || (
- $token['type'] === HTML5::CHARACTR && in_array(end($this->stack)->nodeName,
- array('title', 'style', 'script')))) {
+ if (($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || (
+ $token['type'] === HTML5::CHARACTR && in_array(
+ end($this->stack)->nodeName,
+ array('title', 'style', 'script')
+ ))
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('title', 'style', 'script'))) {
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('title', 'style', 'script'))
+ ) {
array_pop($this->stack);
return HTML5::PCDATA;
- /* A start tag with the tag name "title" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') {
+ /* A start tag with the tag name "title" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1495,12 +2024,12 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the RCDATA state. */
return HTML5::RCDATA;
- /* A start tag with the tag name "style" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') {
+ /* A start tag with the tag name "style" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1511,8 +2040,8 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the CDATA state. */
return HTML5::CDATA;
- /* A start tag with the tag name "script" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') {
+ /* A start tag with the tag name "script" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') {
/* Create an element for the token. */
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1520,13 +2049,16 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the CDATA state. */
return HTML5::CDATA;
- /* A start tag with the tag name "base", "link", or "meta" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('base', 'link', 'meta'))) {
+ /* A start tag with the tag name "base", "link", or "meta" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('base', 'link', 'meta')
+ )
+ ) {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
array_pop($this->stack);
@@ -1535,14 +2067,14 @@ class HTML5TreeConstructer {
$this->insertElement($token);
}
- /* An end tag with the tag name "head" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') {
+ /* An end tag with the tag name "head" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') {
/* If the current node is a head element, pop the current node off
the stack of open elements. */
- if($this->head_pointer->isSameNode(end($this->stack))) {
+ if ($this->head_pointer->isSameNode(end($this->stack))) {
array_pop($this->stack);
- /* Otherwise, this is a parse error. */
+ /* Otherwise, this is a parse error. */
} else {
// k
}
@@ -1550,22 +2082,25 @@ class HTML5TreeConstructer {
/* Change the insertion mode to "after head". */
$this->mode = self::AFTER_HEAD;
- /* A start tag with the tag name "head" or an end tag except "html". */
- } elseif(($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')) {
+ /* A start tag with the tag name "head" or an end tag except "html". */
+ } elseif (($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') ||
+ ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* If the current node is a head element, act as if an end tag
token with the tag name "head" had been seen. */
- if($this->head_pointer->isSameNode(end($this->stack))) {
- $this->inHead(array(
- 'name' => 'head',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->head_pointer->isSameNode(end($this->stack))) {
+ $this->inHead(
+ array(
+ 'name' => 'head',
+ 'type' => HTML5::ENDTAG
+ )
+ );
- /* Otherwise, change the insertion mode to "after head". */
+ /* Otherwise, change the insertion mode to "after head". */
} else {
$this->mode = self::AFTER_HEAD;
}
@@ -1575,66 +2110,74 @@ class HTML5TreeConstructer {
}
}
- private function afterHead($token) {
+ private function afterHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token with the tag name "body" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') {
+ /* A start tag token with the tag name "body" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') {
/* Insert a body element for the token. */
$this->insertElement($token);
/* Change the insertion mode to "in body". */
$this->mode = self::IN_BODY;
- /* A start tag token with the tag name "frameset" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') {
+ /* A start tag token with the tag name "frameset" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') {
/* Insert a frameset element for the token. */
$this->insertElement($token);
/* Change the insertion mode to "in frameset". */
$this->mode = self::IN_FRAME;
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('base', 'link', 'meta', 'script', 'style', 'title'))) {
+ /* A start tag token whose tag name is one of: "base", "link", "meta",
+ "script", "style", "title" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('base', 'link', 'meta', 'script', 'style', 'title')
+ )
+ ) {
/* Parse error. Switch the insertion mode back to "in head" and
reprocess the token. */
$this->mode = self::IN_HEAD;
return $this->inHead($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Act as if a start tag token with the tag name "body" and no
attributes had been seen, and then reprocess the current token. */
- $this->afterHead(array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->afterHead(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inBody($token);
}
}
- private function inBody($token) {
+ private function inBody($token)
+ {
/* Handle the token as follows: */
- switch($token['type']) {
+ switch ($token['type']) {
/* A character token */
case HTML5::CHARACTR:
/* Reconstruct the active formatting elements, if any. */
@@ -1642,1015 +2185,1159 @@ class HTML5TreeConstructer {
/* Append the token's character to the current node. */
$this->insertText($token['data']);
- break;
+ break;
/* A comment token */
case HTML5::COMMENT:
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- break;
+ break;
case HTML5::STARTTAG:
- switch($token['name']) {
- /* A start tag token whose tag name is one of: "script",
- "style" */
- case 'script': case 'style':
- /* Process the token as if the insertion mode had been "in
- head". */
- return $this->inHead($token);
- break;
+ switch ($token['name']) {
+ /* A start tag token whose tag name is one of: "script",
+ "style" */
+ case 'script':
+ case 'style':
+ /* Process the token as if the insertion mode had been "in
+ head". */
+ return $this->inHead($token);
+ break;
- /* A start tag token whose tag name is one of: "base", "link",
- "meta", "title" */
- case 'base': case 'link': case 'meta': case 'title':
- /* Parse error. Process the token as if the insertion mode
- had been "in head". */
- return $this->inHead($token);
- break;
+ /* A start tag token whose tag name is one of: "base", "link",
+ "meta", "title" */
+ case 'base':
+ case 'link':
+ case 'meta':
+ case 'title':
+ /* Parse error. Process the token as if the insertion mode
+ had been "in head". */
+ return $this->inHead($token);
+ break;
- /* A start tag token with the tag name "body" */
- case 'body':
- /* Parse error. If the second element on the stack of open
- elements is not a body element, or, if the stack of open
- elements has only one node on it, then ignore the token.
- (innerHTML case) */
- if(count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') {
- // Ignore
-
- /* Otherwise, for each attribute on the token, check to see
- if the attribute is already present on the body element (the
- second element) on the stack of open elements. If it is not,
- add the attribute and its corresponding value to that
- element. */
- } else {
- foreach($token['attr'] as $attr) {
- if(!$this->stack[1]->hasAttribute($attr['name'])) {
- $this->stack[1]->setAttribute($attr['name'], $attr['value']);
+ /* A start tag token with the tag name "body" */
+ case 'body':
+ /* Parse error. If the second element on the stack of open
+ elements is not a body element, or, if the stack of open
+ elements has only one node on it, then ignore the token.
+ (innerHTML case) */
+ if (count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') {
+ // Ignore
+
+ /* Otherwise, for each attribute on the token, check to see
+ if the attribute is already present on the body element (the
+ second element) on the stack of open elements. If it is not,
+ add the attribute and its corresponding value to that
+ element. */
+ } else {
+ foreach ($token['attr'] as $attr) {
+ if (!$this->stack[1]->hasAttribute($attr['name'])) {
+ $this->stack[1]->setAttribute($attr['name'], $attr['value']);
+ }
}
}
- }
- break;
-
- /* A start tag whose tag name is one of: "address",
- "blockquote", "center", "dir", "div", "dl", "fieldset",
- "listing", "menu", "ol", "p", "ul" */
- case 'address': case 'blockquote': case 'center': case 'dir':
- case 'div': case 'dl': case 'fieldset': case 'listing':
- case 'menu': case 'ol': case 'p': case 'ul':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
+ break;
- /* A start tag whose tag name is "form" */
- case 'form':
- /* If the form element pointer is not null, ignore the
- token with a parse error. */
- if($this->form_pointer !== null) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* If the stack of open elements has a p element in
- scope, then act as if an end tag with the tag name p
- had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
+ /* A start tag whose tag name is one of: "address",
+ "blockquote", "center", "dir", "div", "dl", "fieldset",
+ "listing", "menu", "ol", "p", "ul" */
+ case 'address':
+ case 'blockquote':
+ case 'center':
+ case 'dir':
+ case 'div':
+ case 'dl':
+ case 'fieldset':
+ case 'listing':
+ case 'menu':
+ case 'ol':
+ case 'p':
+ case 'ul':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- /* Insert an HTML element for the token, and set the
- form element pointer to point to the element created. */
- $element = $this->insertElement($token);
- $this->form_pointer = $element;
- }
- break;
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+ break;
- /* A start tag whose tag name is "li", "dd" or "dt" */
- case 'li': case 'dd': case 'dt':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag whose tag name is "form" */
+ case 'form':
+ /* If the form element pointer is not null, ignore the
+ token with a parse error. */
+ if ($this->form_pointer !== null) {
+ // Ignore.
- $stack_length = count($this->stack) - 1;
-
- for($n = $stack_length; 0 <= $n; $n--) {
- /* 1. Initialise node to be the current node (the
- bottommost node of the stack). */
- $stop = false;
- $node = $this->stack[$n];
- $cat = $this->getElementCategory($node->tagName);
-
- /* 2. If node is an li, dd or dt element, then pop all
- the nodes from the current node up to node, including
- node, then stop this algorithm. */
- if($token['name'] === $node->tagName || ($token['name'] !== 'li'
- && ($node->tagName === 'dd' || $node->tagName === 'dt'))) {
- for($x = $stack_length; $x >= $n ; $x--) {
- array_pop($this->stack);
+ /* Otherwise: */
+ } else {
+ /* If the stack of open elements has a p element in
+ scope, then act as if an end tag with the tag name p
+ had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- break;
+ /* Insert an HTML element for the token, and set the
+ form element pointer to point to the element created. */
+ $element = $this->insertElement($token);
+ $this->form_pointer = $element;
}
+ break;
- /* 3. If node is not in the formatting category, and is
- not in the phrasing category, and is not an address or
- div element, then stop this algorithm. */
- if($cat !== self::FORMATTING && $cat !== self::PHRASING &&
- $node->tagName !== 'address' && $node->tagName !== 'div') {
- break;
+ /* A start tag whose tag name is "li", "dd" or "dt" */
+ case 'li':
+ case 'dd':
+ case 'dt':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- }
- /* Finally, insert an HTML element with the same tag
- name as the token's. */
- $this->insertElement($token);
- break;
+ $stack_length = count($this->stack) - 1;
+
+ for ($n = $stack_length; 0 <= $n; $n--) {
+ /* 1. Initialise node to be the current node (the
+ bottommost node of the stack). */
+ $stop = false;
+ $node = $this->stack[$n];
+ $cat = $this->getElementCategory($node->tagName);
+
+ /* 2. If node is an li, dd or dt element, then pop all
+ the nodes from the current node up to node, including
+ node, then stop this algorithm. */
+ if ($token['name'] === $node->tagName || ($token['name'] !== 'li'
+ && ($node->tagName === 'dd' || $node->tagName === 'dt'))
+ ) {
+ for ($x = $stack_length; $x >= $n; $x--) {
+ array_pop($this->stack);
+ }
- /* A start tag token whose tag name is "plaintext" */
- case 'plaintext':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ break;
+ }
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* 3. If node is not in the formatting category, and is
+ not in the phrasing category, and is not an address or
+ div element, then stop this algorithm. */
+ if ($cat !== self::FORMATTING && $cat !== self::PHRASING &&
+ $node->tagName !== 'address' && $node->tagName !== 'div'
+ ) {
+ break;
+ }
+ }
- return HTML5::PLAINTEXT;
- break;
+ /* Finally, insert an HTML element with the same tag
+ name as the token's. */
+ $this->insertElement($token);
+ break;
- /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag token whose tag name is "plaintext" */
+ case 'plaintext':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- this is a parse error; pop elements from the stack until an
- element with one of those tag names has been popped from the
- stack. */
- while($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) {
- array_pop($this->stack);
- }
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
+ return HTML5::PLAINTEXT;
+ break;
- /* A start tag whose tag name is "a" */
- case 'a':
- /* If the list of active formatting elements contains
- an element whose tag name is "a" between the end of the
- list and the last marker on the list (or the start of
- the list if there is no marker on the list), then this
- is a parse error; act as if an end tag with the tag name
- "a" had been seen, then remove that element from the list
- of active formatting elements and the stack of open
- elements if the end tag didn't already remove it (it
- might not have if the element is not in table scope). */
- $leng = count($this->a_formatting);
-
- for($n = $leng - 1; $n >= 0; $n--) {
- if($this->a_formatting[$n] === self::MARKER) {
- break;
-
- } elseif($this->a_formatting[$n]->nodeName === 'a') {
- $this->emitToken(array(
- 'name' => 'a',
- 'type' => HTML5::ENDTAG
- ));
- break;
+ /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
+ "h5", "h6" */
+ case 'h1':
+ case 'h2':
+ case 'h3':
+ case 'h4':
+ case 'h5':
+ case 'h6':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- }
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* If the stack of open elements has in scope an element whose
+ tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
+ this is a parse error; pop elements from the stack until an
+ element with one of those tag names has been popped from the
+ stack. */
+ while ($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) {
+ array_pop($this->stack);
+ }
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+ break;
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
+ /* A start tag whose tag name is "a" */
+ case 'a':
+ /* If the list of active formatting elements contains
+ an element whose tag name is "a" between the end of the
+ list and the last marker on the list (or the start of
+ the list if there is no marker on the list), then this
+ is a parse error; act as if an end tag with the tag name
+ "a" had been seen, then remove that element from the list
+ of active formatting elements and the stack of open
+ elements if the end tag didn't already remove it (it
+ might not have if the element is not in table scope). */
+ $leng = count($this->a_formatting);
+
+ for ($n = $leng - 1; $n >= 0; $n--) {
+ if ($this->a_formatting[$n] === self::MARKER) {
+ break;
- /* A start tag whose tag name is one of: "b", "big", "em", "font",
- "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'b': case 'big': case 'em': case 'font': case 'i':
- case 'nobr': case 's': case 'small': case 'strike':
- case 'strong': case 'tt': case 'u':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ } elseif ($this->a_formatting[$n]->nodeName === 'a') {
+ $this->emitToken(
+ array(
+ 'name' => 'a',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ break;
+ }
+ }
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
+ /* Insert an HTML element for the token. */
+ $el = $this->insertElement($token);
- /* A start tag token whose tag name is "button" */
- case 'button':
- /* If the stack of open elements has a button element in scope,
- then this is a parse error; act as if an end tag with the tag
- name "button" had been seen, then reprocess the token. (We don't
- do that. Unnecessary.) */
- if($this->elementInScope('button')) {
- $this->inBody(array(
- 'name' => 'button',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* Add that element to the list of active formatting
+ elements. */
+ $this->a_formatting[] = $el;
+ break;
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start tag whose tag name is one of: "b", "big", "em", "font",
+ "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
+ case 'b':
+ case 'big':
+ case 'em':
+ case 'font':
+ case 'i':
+ case 'nobr':
+ case 's':
+ case 'small':
+ case 'strike':
+ case 'strong':
+ case 'tt':
+ case 'u':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
+
+ /* Insert an HTML element for the token. */
+ $el = $this->insertElement($token);
+
+ /* Add that element to the list of active formatting
+ elements. */
+ $this->a_formatting[] = $el;
+ break;
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* A start tag token whose tag name is "button" */
+ case 'button':
+ /* If the stack of open elements has a button element in scope,
+ then this is a parse error; act as if an end tag with the tag
+ name "button" had been seen, then reprocess the token. (We don't
+ do that. Unnecessary.) */
+ if ($this->elementInScope('button')) {
+ $this->inBody(
+ array(
+ 'name' => 'button',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag token whose tag name is one of: "marquee", "object" */
- case 'marquee': case 'object':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert a marker at the end of the list of active
+ formatting elements. */
+ $this->a_formatting[] = self::MARKER;
+ break;
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
+ /* A start tag token whose tag name is one of: "marquee", "object" */
+ case 'marquee':
+ case 'object':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag token whose tag name is "xmp" */
- case 'xmp':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert a marker at the end of the list of active
+ formatting elements. */
+ $this->a_formatting[] = self::MARKER;
+ break;
- /* Switch the content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
+ /* A start tag token whose tag name is "xmp" */
+ case 'xmp':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag whose tag name is "table" */
- case 'table':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Switch the content model flag to the CDATA state. */
+ return HTML5::CDATA;
+ break;
- /* Change the insertion mode to "in table". */
- $this->mode = self::IN_TABLE;
- break;
+ /* A start tag whose tag name is "table" */
+ case 'table':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* A start tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
- case 'area': case 'basefont': case 'bgsound': case 'br':
- case 'embed': case 'img': case 'param': case 'spacer':
- case 'wbr':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Change the insertion mode to "in table". */
+ $this->mode = self::IN_TABLE;
+ break;
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* A start tag whose tag name is one of: "area", "basefont",
+ "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
+ case 'area':
+ case 'basefont':
+ case 'bgsound':
+ case 'br':
+ case 'embed':
+ case 'img':
+ case 'param':
+ case 'spacer':
+ case 'wbr':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
+
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+
+ /* Immediately pop the current node off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "hr" */
- case 'hr':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag whose tag name is "hr" */
+ case 'hr':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* Immediately pop the current node off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "image" */
- case 'image':
- /* Parse error. Change the token's tag name to "img" and
- reprocess it. (Don't ask.) */
- $token['name'] = 'img';
- return $this->inBody($token);
- break;
+ /* A start tag whose tag name is "image" */
+ case 'image':
+ /* Parse error. Change the token's tag name to "img" and
+ reprocess it. (Don't ask.) */
+ $token['name'] = 'img';
+ return $this->inBody($token);
+ break;
- /* A start tag whose tag name is "input" */
- case 'input':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start tag whose tag name is "input" */
+ case 'input':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Insert an input element for the token. */
- $element = $this->insertElement($token, false);
+ /* Insert an input element for the token. */
+ $element = $this->insertElement($token, false);
- /* If the form element pointer is not null, then associate the
- input element with the form element pointed to by the form
- element pointer. */
- $this->form_pointer !== null
- ? $this->form_pointer->appendChild($element)
- : end($this->stack)->appendChild($element);
+ /* If the form element pointer is not null, then associate the
+ input element with the form element pointed to by the form
+ element pointer. */
+ $this->form_pointer !== null
+ ? $this->form_pointer->appendChild($element)
+ : end($this->stack)->appendChild($element);
- /* Pop that input element off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* Pop that input element off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "isindex" */
- case 'isindex':
- /* Parse error. */
- // w/e
-
- /* If the form element pointer is not null,
- then ignore the token. */
- if($this->form_pointer === null) {
- /* Act as if a start tag token with the tag name "form" had
- been seen. */
- $this->inBody(array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(array(
- 'name' => 'hr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "p" had
- been seen. */
- $this->inBody(array(
- 'name' => 'p',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "label"
- had been seen. */
- $this->inBody(array(
- 'name' => 'label',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a stream of character tokens had been seen. */
- $this->insertText('This is a searchable index. '.
- 'Insert your search keywords here: ');
-
- /* Act as if a start tag token with the tag name "input"
- had been seen, with all the attributes from the "isindex"
- token, except with the "name" attribute set to the value
- "isindex" (ignoring any explicit "name" attribute). */
- $attr = $token['attr'];
- $attr[] = array('name' => 'name', 'value' => 'isindex');
-
- $this->inBody(array(
- 'name' => 'input',
- 'type' => HTML5::STARTTAG,
- 'attr' => $attr
- ));
-
- /* Act as if a stream of character tokens had been seen
- (see below for what they should say). */
- $this->insertText('This is a searchable index. '.
- 'Insert your search keywords here: ');
-
- /* Act as if an end tag token with the tag name "label"
- had been seen. */
- $this->inBody(array(
- 'name' => 'label',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if an end tag token with the tag name "p" had
- been seen. */
- $this->inBody(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(array(
- 'name' => 'hr',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if an end tag token with the tag name "form" had
- been seen. */
- $this->inBody(array(
- 'name' => 'form',
- 'type' => HTML5::ENDTAG
- ));
- }
- break;
+ /* A start tag whose tag name is "isindex" */
+ case 'isindex':
+ /* Parse error. */
+ // w/e
- /* A start tag whose tag name is "textarea" */
- case 'textarea':
- $this->insertElement($token);
+ /* If the form element pointer is not null,
+ then ignore the token. */
+ if ($this->form_pointer === null) {
+ /* Act as if a start tag token with the tag name "form" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "hr" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'hr',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "p" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "label"
+ had been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'label',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a stream of character tokens had been seen. */
+ $this->insertText(
+ 'This is a searchable index. ' .
+ 'Insert your search keywords here: '
+ );
+
+ /* Act as if a start tag token with the tag name "input"
+ had been seen, with all the attributes from the "isindex"
+ token, except with the "name" attribute set to the value
+ "isindex" (ignoring any explicit "name" attribute). */
+ $attr = $token['attr'];
+ $attr[] = array('name' => 'name', 'value' => 'isindex');
+
+ $this->inBody(
+ array(
+ 'name' => 'input',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => $attr
+ )
+ );
+
+ /* Act as if a stream of character tokens had been seen
+ (see below for what they should say). */
+ $this->insertText(
+ 'This is a searchable index. ' .
+ 'Insert your search keywords here: '
+ );
+
+ /* Act as if an end tag token with the tag name "label"
+ had been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'label',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if an end tag token with the tag name "p" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "hr" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'hr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if an end tag token with the tag name "form" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'form',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
+ break;
- /* Switch the tokeniser's content model flag to the
- RCDATA state. */
- return HTML5::RCDATA;
- break;
+ /* A start tag whose tag name is "textarea" */
+ case 'textarea':
+ $this->insertElement($token);
- /* A start tag whose tag name is one of: "iframe", "noembed",
- "noframes" */
- case 'iframe': case 'noembed': case 'noframes':
- $this->insertElement($token);
+ /* Switch the tokeniser's content model flag to the
+ RCDATA state. */
+ return HTML5::RCDATA;
+ break;
- /* Switch the tokeniser's content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
+ /* A start tag whose tag name is one of: "iframe", "noembed",
+ "noframes" */
+ case 'iframe':
+ case 'noembed':
+ case 'noframes':
+ $this->insertElement($token);
- /* A start tag whose tag name is "select" */
- case 'select':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Switch the tokeniser's content model flag to the CDATA state. */
+ return HTML5::CDATA;
+ break;
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* A start tag whose tag name is "select" */
+ case 'select':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Change the insertion mode to "in select". */
- $this->mode = self::IN_SELECT;
- break;
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* A start or end tag whose tag name is one of: "caption", "col",
- "colgroup", "frame", "frameset", "head", "option", "optgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr". */
- case 'caption': case 'col': case 'colgroup': case 'frame':
- case 'frameset': case 'head': case 'option': case 'optgroup':
- case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead':
- case 'tr':
- // Parse error. Ignore the token.
- break;
+ /* Change the insertion mode to "in select". */
+ $this->mode = self::IN_SELECT;
+ break;
- /* A start or end tag whose tag name is one of: "event-source",
- "section", "nav", "article", "aside", "header", "footer",
- "datagrid", "command" */
- case 'event-source': case 'section': case 'nav': case 'article':
- case 'aside': case 'header': case 'footer': case 'datagrid':
- case 'command':
- // Work in progress!
- break;
+ /* A start or end tag whose tag name is one of: "caption", "col",
+ "colgroup", "frame", "frameset", "head", "option", "optgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr". */
+ case 'caption':
+ case 'col':
+ case 'colgroup':
+ case 'frame':
+ case 'frameset':
+ case 'head':
+ case 'option':
+ case 'optgroup':
+ case 'tbody':
+ case 'td':
+ case 'tfoot':
+ case 'th':
+ case 'thead':
+ case 'tr':
+ // Parse error. Ignore the token.
+ break;
- /* A start tag token not covered by the previous entries */
- default:
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start or end tag whose tag name is one of: "event-source",
+ "section", "nav", "article", "aside", "header", "footer",
+ "datagrid", "command" */
+ case 'event-source':
+ case 'section':
+ case 'nav':
+ case 'article':
+ case 'aside':
+ case 'header':
+ case 'footer':
+ case 'datagrid':
+ case 'command':
+ // Work in progress!
+ break;
+
+ /* A start tag token not covered by the previous entries */
+ default:
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- $this->insertElement($token, true, true);
+ $this->insertElement($token, true, true);
+ break;
+ }
break;
- }
- break;
case HTML5::ENDTAG:
- switch($token['name']) {
- /* An end tag with the tag name "body" */
- case 'body':
- /* If the second element in the stack of open elements is
- not a body element, this is a parse error. Ignore the token.
- (innerHTML case) */
- if(count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') {
- // Ignore.
-
- /* If the current node is not the body element, then this
- is a parse error. */
- } elseif(end($this->stack)->nodeName !== 'body') {
- // Parse error.
- }
+ switch ($token['name']) {
+ /* An end tag with the tag name "body" */
+ case 'body':
+ /* If the second element in the stack of open elements is
+ not a body element, this is a parse error. Ignore the token.
+ (innerHTML case) */
+ if (count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') {
+ // Ignore.
+
+ /* If the current node is not the body element, then this
+ is a parse error. */
+ } elseif (end($this->stack)->nodeName !== 'body') {
+ // Parse error.
+ }
- /* Change the insertion mode to "after body". */
- $this->mode = self::AFTER_BODY;
- break;
+ /* Change the insertion mode to "after body". */
+ $this->mode = self::AFTER_BODY;
+ break;
- /* An end tag with the tag name "html" */
- case 'html':
- /* Act as if an end tag with tag name "body" had been seen,
- then, if that token wasn't ignored, reprocess the current
- token. */
- $this->inBody(array(
- 'name' => 'body',
- 'type' => HTML5::ENDTAG
- ));
+ /* An end tag with the tag name "html" */
+ case 'html':
+ /* Act as if an end tag with tag name "body" had been seen,
+ then, if that token wasn't ignored, reprocess the current
+ token. */
+ $this->inBody(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::ENDTAG
+ )
+ );
- return $this->afterBody($token);
- break;
+ return $this->afterBody($token);
+ break;
- /* An end tag whose tag name is one of: "address", "blockquote",
- "center", "dir", "div", "dl", "fieldset", "listing", "menu",
- "ol", "pre", "ul" */
- case 'address': case 'blockquote': case 'center': case 'dir':
- case 'div': case 'dl': case 'fieldset': case 'listing':
- case 'menu': case 'ol': case 'pre': case 'ul':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with
- the same tag name as that of the token, then this
- is a parse error. */
- // w/e
+ /* An end tag whose tag name is one of: "address", "blockquote",
+ "center", "dir", "div", "dl", "fieldset", "listing", "menu",
+ "ol", "pre", "ul" */
+ case 'address':
+ case 'blockquote':
+ case 'center':
+ case 'dir':
+ case 'div':
+ case 'dl':
+ case 'fieldset':
+ case 'listing':
+ case 'menu':
+ case 'ol':
+ case 'pre':
+ case 'ul':
+ /* If the stack of open elements has an element in scope
+ with the same tag name as that of the token, then generate
+ implied end tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- /* If the stack of open elements has an element in
- scope with the same tag name as that of the token,
- then pop elements from this stack until an element
- with that tag name has been popped from the stack. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
+ /* Now, if the current node is not an element with
+ the same tag name as that of the token, then this
+ is a parse error. */
+ // w/e
+
+ /* If the stack of open elements has an element in
+ scope with the same tag name as that of the token,
+ then pop elements from this stack until an element
+ with that tag name has been popped from the stack. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
+
+ array_pop($this->stack);
}
+ }
+ break;
+
+ /* An end tag whose tag name is "form" */
+ case 'form':
+ /* If the stack of open elements has an element in scope
+ with the same tag name as that of the token, then generate
+ implied end tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- array_pop($this->stack);
}
- }
- break;
- /* An end tag whose tag name is "form" */
- case 'form':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
+ if (end($this->stack)->nodeName !== $token['name']) {
+ /* Now, if the current node is not an element with the
+ same tag name as that of the token, then this is a parse
+ error. */
+ // w/e
- }
+ } else {
+ /* Otherwise, if the current node is an element with
+ the same tag name as that of the token pop that element
+ from the stack. */
+ array_pop($this->stack);
+ }
- if(end($this->stack)->nodeName !== $token['name']) {
- /* Now, if the current node is not an element with the
- same tag name as that of the token, then this is a parse
- error. */
- // w/e
+ /* In any case, set the form element pointer to null. */
+ $this->form_pointer = null;
+ break;
- } else {
- /* Otherwise, if the current node is an element with
- the same tag name as that of the token pop that element
- from the stack. */
- array_pop($this->stack);
- }
+ /* An end tag whose tag name is "p" */
+ case 'p':
+ /* If the stack of open elements has a p element in scope,
+ then generate implied end tags, except for p elements. */
+ if ($this->elementInScope('p')) {
+ $this->generateImpliedEndTags(array('p'));
- /* In any case, set the form element pointer to null. */
- $this->form_pointer = null;
- break;
+ /* If the current node is not a p element, then this is
+ a parse error. */
+ // k
- /* An end tag whose tag name is "p" */
- case 'p':
- /* If the stack of open elements has a p element in scope,
- then generate implied end tags, except for p elements. */
- if($this->elementInScope('p')) {
- $this->generateImpliedEndTags(array('p'));
-
- /* If the current node is not a p element, then this is
- a parse error. */
- // k
-
- /* If the stack of open elements has a p element in
- scope, then pop elements from this stack until the stack
- no longer has a p element in scope. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->elementInScope('p')) {
- array_pop($this->stack);
+ /* If the stack of open elements has a p element in
+ scope, then pop elements from this stack until the stack
+ no longer has a p element in scope. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->elementInScope('p')) {
+ array_pop($this->stack);
- } else {
- break;
+ } else {
+ break;
+ }
}
}
- }
- break;
-
- /* An end tag whose tag name is "dd", "dt", or "li" */
- case 'dd': case 'dt': case 'li':
- /* If the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then
- generate implied end tags, except for elements with the
- same tag name as the token. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags(array($token['name']));
-
- /* If the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // w/e
+ break;
+ /* An end tag whose tag name is "dd", "dt", or "li" */
+ case 'dd':
+ case 'dt':
+ case 'li':
/* If the stack of open elements has an element in scope
whose tag name matches the tag name of the token, then
- pop elements from this stack until an element with that
- tag name has been popped from the stack. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
+ generate implied end tags, except for elements with the
+ same tag name as the token. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags(array($token['name']));
+
+ /* If the current node is not an element with the same
+ tag name as the token, then this is a parse error. */
+ // w/e
+
+ /* If the stack of open elements has an element in scope
+ whose tag name matches the tag name of the token, then
+ pop elements from this stack until an element with that
+ tag name has been popped from the stack. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
- array_pop($this->stack);
+ array_pop($this->stack);
+ }
}
- }
- break;
-
- /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
- $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
+ break;
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- generate implied end tags. */
- if($this->elementInScope($elements)) {
- $this->generateImpliedEndTags();
+ /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
+ "h5", "h6" */
+ case 'h1':
+ case 'h2':
+ case 'h3':
+ case 'h4':
+ case 'h5':
+ case 'h6':
+ $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
+
+ /* If the stack of open elements has in scope an element whose
+ tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
+ generate implied end tags. */
+ if ($this->elementInScope($elements)) {
+ $this->generateImpliedEndTags();
- /* Now, if the current node is not an element with the same
- tag name as that of the token, then this is a parse error. */
- // w/e
+ /* Now, if the current node is not an element with the same
+ tag name as that of the token, then this is a parse error. */
+ // w/e
- /* If the stack of open elements has in scope an element
- whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
- "h6", then pop elements from the stack until an element
- with one of those tag names has been popped from the stack. */
- while($this->elementInScope($elements)) {
- array_pop($this->stack);
+ /* If the stack of open elements has in scope an element
+ whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
+ "h6", then pop elements from the stack until an element
+ with one of those tag names has been popped from the stack. */
+ while ($this->elementInScope($elements)) {
+ array_pop($this->stack);
+ }
}
- }
- break;
+ break;
- /* An end tag whose tag name is one of: "a", "b", "big", "em",
- "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'a': case 'b': case 'big': case 'em': case 'font':
- case 'i': case 'nobr': case 's': case 'small': case 'strike':
- case 'strong': case 'tt': case 'u':
- /* 1. Let the formatting element be the last element in
- the list of active formatting elements that:
- * is between the end of the list and the last scope
- marker in the list, if any, or the start of the list
- otherwise, and
- * has the same tag name as the token.
- */
- while(true) {
- for($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
- if($this->a_formatting[$a] === self::MARKER) {
+ /* An end tag whose tag name is one of: "a", "b", "big", "em",
+ "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
+ case 'a':
+ case 'b':
+ case 'big':
+ case 'em':
+ case 'font':
+ case 'i':
+ case 'nobr':
+ case 's':
+ case 'small':
+ case 'strike':
+ case 'strong':
+ case 'tt':
+ case 'u':
+ /* 1. Let the formatting element be the last element in
+ the list of active formatting elements that:
+ * is between the end of the list and the last scope
+ marker in the list, if any, or the start of the list
+ otherwise, and
+ * has the same tag name as the token.
+ */
+ while (true) {
+ for ($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
+ if ($this->a_formatting[$a] === self::MARKER) {
+ break;
+
+ } elseif ($this->a_formatting[$a]->tagName === $token['name']) {
+ $formatting_element = $this->a_formatting[$a];
+ $in_stack = in_array($formatting_element, $this->stack, true);
+ $fe_af_pos = $a;
+ break;
+ }
+ }
+
+ /* If there is no such node, or, if that node is
+ also in the stack of open elements but the element
+ is not in scope, then this is a parse error. Abort
+ these steps. The token is ignored. */
+ if (!isset($formatting_element) || ($in_stack &&
+ !$this->elementInScope($token['name']))
+ ) {
break;
- } elseif($this->a_formatting[$a]->tagName === $token['name']) {
- $formatting_element = $this->a_formatting[$a];
- $in_stack = in_array($formatting_element, $this->stack, true);
- $fe_af_pos = $a;
+ /* Otherwise, if there is such a node, but that node
+ is not in the stack of open elements, then this is a
+ parse error; remove the element from the list, and
+ abort these steps. */
+ } elseif (isset($formatting_element) && !$in_stack) {
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
break;
}
- }
-
- /* If there is no such node, or, if that node is
- also in the stack of open elements but the element
- is not in scope, then this is a parse error. Abort
- these steps. The token is ignored. */
- if(!isset($formatting_element) || ($in_stack &&
- !$this->elementInScope($token['name']))) {
- break;
-
- /* Otherwise, if there is such a node, but that node
- is not in the stack of open elements, then this is a
- parse error; remove the element from the list, and
- abort these steps. */
- } elseif(isset($formatting_element) && !$in_stack) {
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
- /* 2. Let the furthest block be the topmost node in the
- stack of open elements that is lower in the stack
- than the formatting element, and is not an element in
- the phrasing or formatting categories. There might
- not be one. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $length = count($this->stack);
+ /* 2. Let the furthest block be the topmost node in the
+ stack of open elements that is lower in the stack
+ than the formatting element, and is not an element in
+ the phrasing or formatting categories. There might
+ not be one. */
+ $fe_s_pos = array_search($formatting_element, $this->stack, true);
+ $length = count($this->stack);
- for($s = $fe_s_pos + 1; $s < $length; $s++) {
- $category = $this->getElementCategory($this->stack[$s]->nodeName);
+ for ($s = $fe_s_pos + 1; $s < $length; $s++) {
+ $category = $this->getElementCategory($this->stack[$s]->nodeName);
- if($category !== self::PHRASING && $category !== self::FORMATTING) {
- $furthest_block = $this->stack[$s];
+ if ($category !== self::PHRASING && $category !== self::FORMATTING) {
+ $furthest_block = $this->stack[$s];
+ }
}
- }
- /* 3. If there is no furthest block, then the UA must
- skip the subsequent steps and instead just pop all
- the nodes from the bottom of the stack of open
- elements, from the current node up to the formatting
- element, and remove the formatting element from the
- list of active formatting elements. */
- if(!isset($furthest_block)) {
- for($n = $length - 1; $n >= $fe_s_pos; $n--) {
- array_pop($this->stack);
- }
+ /* 3. If there is no furthest block, then the UA must
+ skip the subsequent steps and instead just pop all
+ the nodes from the bottom of the stack of open
+ elements, from the current node up to the formatting
+ element, and remove the formatting element from the
+ list of active formatting elements. */
+ if (!isset($furthest_block)) {
+ for ($n = $length - 1; $n >= $fe_s_pos; $n--) {
+ array_pop($this->stack);
+ }
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
+ break;
+ }
- /* 4. Let the common ancestor be the element
- immediately above the formatting element in the stack
- of open elements. */
- $common_ancestor = $this->stack[$fe_s_pos - 1];
+ /* 4. Let the common ancestor be the element
+ immediately above the formatting element in the stack
+ of open elements. */
+ $common_ancestor = $this->stack[$fe_s_pos - 1];
- /* 5. If the furthest block has a parent node, then
- remove the furthest block from its parent node. */
- if($furthest_block->parentNode !== null) {
- $furthest_block->parentNode->removeChild($furthest_block);
- }
+ /* 5. If the furthest block has a parent node, then
+ remove the furthest block from its parent node. */
+ if ($furthest_block->parentNode !== null) {
+ $furthest_block->parentNode->removeChild($furthest_block);
+ }
- /* 6. Let a bookmark note the position of the
- formatting element in the list of active formatting
- elements relative to the elements on either side
- of it in the list. */
- $bookmark = $fe_af_pos;
-
- /* 7. Let node and last node be the furthest block.
- Follow these steps: */
- $node = $furthest_block;
- $last_node = $furthest_block;
-
- while(true) {
- for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
- /* 7.1 Let node be the element immediately
- prior to node in the stack of open elements. */
- $node = $this->stack[$n];
-
- /* 7.2 If node is not in the list of active
- formatting elements, then remove node from
- the stack of open elements and then go back
- to step 1. */
- if(!in_array($node, $this->a_formatting, true)) {
- unset($this->stack[$n]);
- $this->stack = array_merge($this->stack);
+ /* 6. Let a bookmark note the position of the
+ formatting element in the list of active formatting
+ elements relative to the elements on either side
+ of it in the list. */
+ $bookmark = $fe_af_pos;
+
+ /* 7. Let node and last node be the furthest block.
+ Follow these steps: */
+ $node = $furthest_block;
+ $last_node = $furthest_block;
+
+ while (true) {
+ for ($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
+ /* 7.1 Let node be the element immediately
+ prior to node in the stack of open elements. */
+ $node = $this->stack[$n];
+
+ /* 7.2 If node is not in the list of active
+ formatting elements, then remove node from
+ the stack of open elements and then go back
+ to step 1. */
+ if (!in_array($node, $this->a_formatting, true)) {
+ unset($this->stack[$n]);
+ $this->stack = array_merge($this->stack);
+
+ } else {
+ break;
+ }
+ }
- } else {
+ /* 7.3 Otherwise, if node is the formatting
+ element, then go to the next step in the overall
+ algorithm. */
+ if ($node === $formatting_element) {
break;
+
+ /* 7.4 Otherwise, if last node is the furthest
+ block, then move the aforementioned bookmark to
+ be immediately after the node in the list of
+ active formatting elements. */
+ } elseif ($last_node === $furthest_block) {
+ $bookmark = array_search($node, $this->a_formatting, true) + 1;
}
- }
- /* 7.3 Otherwise, if node is the formatting
- element, then go to the next step in the overall
- algorithm. */
- if($node === $formatting_element) {
- break;
+ /* 7.5 If node has any children, perform a
+ shallow clone of node, replace the entry for
+ node in the list of active formatting elements
+ with an entry for the clone, replace the entry
+ for node in the stack of open elements with an
+ entry for the clone, and let node be the clone. */
+ if ($node->hasChildNodes()) {
+ $clone = $node->cloneNode();
+ $s_pos = array_search($node, $this->stack, true);
+ $a_pos = array_search($node, $this->a_formatting, true);
+
+ $this->stack[$s_pos] = $clone;
+ $this->a_formatting[$a_pos] = $clone;
+ $node = $clone;
+ }
- /* 7.4 Otherwise, if last node is the furthest
- block, then move the aforementioned bookmark to
- be immediately after the node in the list of
- active formatting elements. */
- } elseif($last_node === $furthest_block) {
- $bookmark = array_search($node, $this->a_formatting, true) + 1;
- }
+ /* 7.6 Insert last node into node, first removing
+ it from its previous parent node if any. */
+ if ($last_node->parentNode !== null) {
+ $last_node->parentNode->removeChild($last_node);
+ }
+
+ $node->appendChild($last_node);
- /* 7.5 If node has any children, perform a
- shallow clone of node, replace the entry for
- node in the list of active formatting elements
- with an entry for the clone, replace the entry
- for node in the stack of open elements with an
- entry for the clone, and let node be the clone. */
- if($node->hasChildNodes()) {
- $clone = $node->cloneNode();
- $s_pos = array_search($node, $this->stack, true);
- $a_pos = array_search($node, $this->a_formatting, true);
-
- $this->stack[$s_pos] = $clone;
- $this->a_formatting[$a_pos] = $clone;
- $node = $clone;
+ /* 7.7 Let last node be node. */
+ $last_node = $node;
}
- /* 7.6 Insert last node into node, first removing
- it from its previous parent node if any. */
- if($last_node->parentNode !== null) {
+ /* 8. Insert whatever last node ended up being in
+ the previous step into the common ancestor node,
+ first removing it from its previous parent node if
+ any. */
+ if ($last_node->parentNode !== null) {
$last_node->parentNode->removeChild($last_node);
}
- $node->appendChild($last_node);
+ $common_ancestor->appendChild($last_node);
- /* 7.7 Let last node be node. */
- $last_node = $node;
- }
+ /* 9. Perform a shallow clone of the formatting
+ element. */
+ $clone = $formatting_element->cloneNode();
- /* 8. Insert whatever last node ended up being in
- the previous step into the common ancestor node,
- first removing it from its previous parent node if
- any. */
- if($last_node->parentNode !== null) {
- $last_node->parentNode->removeChild($last_node);
- }
+ /* 10. Take all of the child nodes of the furthest
+ block and append them to the clone created in the
+ last step. */
+ while ($furthest_block->hasChildNodes()) {
+ $child = $furthest_block->firstChild;
+ $furthest_block->removeChild($child);
+ $clone->appendChild($child);
+ }
- $common_ancestor->appendChild($last_node);
+ /* 11. Append that clone to the furthest block. */
+ $furthest_block->appendChild($clone);
- /* 9. Perform a shallow clone of the formatting
- element. */
- $clone = $formatting_element->cloneNode();
+ /* 12. Remove the formatting element from the list
+ of active formatting elements, and insert the clone
+ into the list of active formatting elements at the
+ position of the aforementioned bookmark. */
+ $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
- /* 10. Take all of the child nodes of the furthest
- block and append them to the clone created in the
- last step. */
- while($furthest_block->hasChildNodes()) {
- $child = $furthest_block->firstChild;
- $furthest_block->removeChild($child);
- $clone->appendChild($child);
+ $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
+ $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting));
+ $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
+
+ /* 13. Remove the formatting element from the stack
+ of open elements, and insert the clone into the stack
+ of open elements immediately after (i.e. in a more
+ deeply nested position than) the position of the
+ furthest block in that stack. */
+ $fe_s_pos = array_search($formatting_element, $this->stack, true);
+ $fb_s_pos = array_search($furthest_block, $this->stack, true);
+ unset($this->stack[$fe_s_pos]);
+
+ $s_part1 = array_slice($this->stack, 0, $fb_s_pos);
+ $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack));
+ $this->stack = array_merge($s_part1, array($clone), $s_part2);
+
+ /* 14. Jump back to step 1 in this series of steps. */
+ unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
}
+ break;
- /* 11. Append that clone to the furthest block. */
- $furthest_block->appendChild($clone);
-
- /* 12. Remove the formatting element from the list
- of active formatting elements, and insert the clone
- into the list of active formatting elements at the
- position of the aforementioned bookmark. */
- $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
-
- $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
- $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting));
- $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
-
- /* 13. Remove the formatting element from the stack
- of open elements, and insert the clone into the stack
- of open elements immediately after (i.e. in a more
- deeply nested position than) the position of the
- furthest block in that stack. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $fb_s_pos = array_search($furthest_block, $this->stack, true);
- unset($this->stack[$fe_s_pos]);
-
- $s_part1 = array_slice($this->stack, 0, $fb_s_pos);
- $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack));
- $this->stack = array_merge($s_part1, array($clone), $s_part2);
-
- /* 14. Jump back to step 1 in this series of steps. */
- unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
- }
- break;
+ /* An end tag token whose tag name is one of: "button",
+ "marquee", "object" */
+ case 'button':
+ case 'marquee':
+ case 'object':
+ /* If the stack of open elements has an element in scope whose
+ tag name matches the tag name of the token, then generate implied
+ tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- /* An end tag token whose tag name is one of: "button",
- "marquee", "object" */
- case 'button': case 'marquee': case 'object':
- /* If the stack of open elements has an element in scope whose
- tag name matches the tag name of the token, then generate implied
- tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // k
-
- /* Now, if the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then pop
- elements from the stack until that element has been popped from
- the stack, and clear the list of active formatting elements up
- to the last marker. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
+ /* Now, if the current node is not an element with the same
+ tag name as the token, then this is a parse error. */
+ // k
- array_pop($this->stack);
- }
+ /* Now, if the stack of open elements has an element in scope
+ whose tag name matches the tag name of the token, then pop
+ elements from the stack until that element has been popped from
+ the stack, and clear the list of active formatting elements up
+ to the last marker. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
- $marker = end(array_keys($this->a_formatting, self::MARKER, true));
+ array_pop($this->stack);
+ }
- for($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
- array_pop($this->a_formatting);
- }
- }
- break;
+ $marker = end(array_keys($this->a_formatting, self::MARKER, true));
- /* Or an end tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "hr", "iframe", "image", "img",
- "input", "isindex", "noembed", "noframes", "param", "select",
- "spacer", "table", "textarea", "wbr" */
- case 'area': case 'basefont': case 'bgsound': case 'br':
- case 'embed': case 'hr': case 'iframe': case 'image':
- case 'img': case 'input': case 'isindex': case 'noembed':
- case 'noframes': case 'param': case 'select': case 'spacer':
- case 'table': case 'textarea': case 'wbr':
- // Parse error. Ignore the token.
- break;
+ for ($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
+ array_pop($this->a_formatting);
+ }
+ }
+ break;
- /* An end tag token not covered by the previous entries */
- default:
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- /* Initialise node to be the current node (the bottommost
- node of the stack). */
- $node = end($this->stack);
-
- /* If node has the same tag name as the end tag token,
- then: */
- if($token['name'] === $node->nodeName) {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
+ /* Or an end tag whose tag name is one of: "area", "basefont",
+ "bgsound", "br", "embed", "hr", "iframe", "image", "img",
+ "input", "isindex", "noembed", "noframes", "param", "select",
+ "spacer", "table", "textarea", "wbr" */
+ case 'area':
+ case 'basefont':
+ case 'bgsound':
+ case 'br':
+ case 'embed':
+ case 'hr':
+ case 'iframe':
+ case 'image':
+ case 'img':
+ case 'input':
+ case 'isindex':
+ case 'noembed':
+ case 'noframes':
+ case 'param':
+ case 'select':
+ case 'spacer':
+ case 'table':
+ case 'textarea':
+ case 'wbr':
+ // Parse error. Ignore the token.
+ break;
- /* If the tag name of the end tag token does not
- match the tag name of the current node, this is a
- parse error. */
- // k
+ /* An end tag token not covered by the previous entries */
+ default:
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ /* Initialise node to be the current node (the bottommost
+ node of the stack). */
+ $node = end($this->stack);
+
+ /* If node has the same tag name as the end tag token,
+ then: */
+ if ($token['name'] === $node->nodeName) {
+ /* Generate implied end tags. */
+ $this->generateImpliedEndTags();
+
+ /* If the tag name of the end tag token does not
+ match the tag name of the current node, this is a
+ parse error. */
+ // k
+
+ /* Pop all the nodes from the current node up to
+ node, including node, then stop this algorithm. */
+ for ($x = count($this->stack) - $n; $x >= $n; $x--) {
+ array_pop($this->stack);
+ }
- /* Pop all the nodes from the current node up to
- node, including node, then stop this algorithm. */
- for($x = count($this->stack) - $n; $x >= $n; $x--) {
- array_pop($this->stack);
- }
-
- } else {
- $category = $this->getElementCategory($node);
-
- if($category !== self::SPECIAL && $category !== self::SCOPING) {
- /* Otherwise, if node is in neither the formatting
- category nor the phrasing category, then this is a
- parse error. Stop this algorithm. The end tag token
- is ignored. */
- return false;
+ } else {
+ $category = $this->getElementCategory($node);
+
+ if ($category !== self::SPECIAL && $category !== self::SCOPING) {
+ /* Otherwise, if node is in neither the formatting
+ category nor the phrasing category, then this is a
+ parse error. Stop this algorithm. The end tag token
+ is ignored. */
+ return false;
+ }
}
}
- }
+ break;
+ }
break;
- }
- break;
}
}
- private function inTable($token) {
+ private function inTable($token)
+ {
$clear = array('html', 'table');
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$text = $this->dom->createTextNode($token['data']);
end($this->stack)->appendChild($text);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
end($this->stack)->appendChild($comment);
- /* A start tag whose tag name is "caption" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'caption') {
+ /* A start tag whose tag name is "caption" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'caption'
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2663,9 +3350,10 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_CAPTION;
- /* A start tag whose tag name is "colgroup" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'colgroup') {
+ /* A start tag whose tag name is "colgroup" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'colgroup'
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2674,20 +3362,26 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_CGROUP;
- /* A start tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'col') {
- $this->inTable(array(
- 'name' => 'colgroup',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ /* A start tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'col'
+ ) {
+ $this->inTable(
+ array(
+ 'name' => 'colgroup',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
$this->inColumnGroup($token);
- /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('tbody', 'tfoot', 'thead'))) {
+ /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('tbody', 'tfoot', 'thead')
+ )
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2696,42 +3390,49 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_TBODY;
- /* A start tag whose tag name is one of: "td", "th", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- in_array($token['name'], array('td', 'th', 'tr'))) {
+ /* A start tag whose tag name is one of: "td", "th", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ in_array($token['name'], array('td', 'th', 'tr'))
+ ) {
/* Act as if a start tag token with the tag name "tbody" had been
seen, then reprocess the current token. */
- $this->inTable(array(
- 'name' => 'tbody',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->inTable(
+ array(
+ 'name' => 'tbody',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inTableBody($token);
- /* A start tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'table') {
+ /* A start tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'table'
+ ) {
/* Parse error. Act as if an end tag token with the tag name "table"
had been seen, then, if that token wasn't ignored, reprocess the
current token. */
- $this->inTable(array(
- 'name' => 'table',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inTable(
+ array(
+ 'name' => 'table',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->mainPhase($token);
- /* An end tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table') {
+ /* An end tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'table'
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
return false;
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
@@ -2742,11 +3443,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until a table element has been
popped from the stack. */
- while(true) {
+ while (true) {
$current = end($this->stack)->nodeName;
array_pop($this->stack);
- if($current === 'table') {
+ if ($current === 'table') {
break;
}
}
@@ -2755,14 +3456,28 @@ class HTML5TreeConstructer {
$this->resetInsertionMode();
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td',
- 'tfoot', 'th', 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array(
+ 'body',
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'html',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Process the token as if the insertion mode was "in
body", with the following exception: */
@@ -2770,8 +3485,11 @@ class HTML5TreeConstructer {
/* If the current node is a table, tbody, tfoot, thead, or tr
element, then, whenever a node would be inserted into the current
node, it must instead be inserted into the foster parent element. */
- if(in_array(end($this->stack)->nodeName,
- array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ if (in_array(
+ end($this->stack)->nodeName,
+ array('table', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* The foster parent element is the parent element of the last
table element in the stack of open elements, if there is a
table element and it has such a parent element. If there is no
@@ -2783,21 +3501,22 @@ class HTML5TreeConstructer {
its parent node is not an element, then the foster parent
element is the element before the last table element in the
stack of open elements. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === 'table') {
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === 'table') {
$table = $this->stack[$n];
break;
}
}
- if(isset($table) && $table->parentNode !== null) {
+ if (isset($table) && $table->parentNode !== null) {
$this->foster_parent = $table->parentNode;
- } elseif(!isset($table)) {
+ } elseif (!isset($table)) {
$this->foster_parent = $this->stack[0];
- } elseif(isset($table) && ($table->parentNode === null ||
- $table->parentNode->nodeType !== XML_ELEMENT_NODE)) {
+ } elseif (isset($table) && ($table->parentNode === null ||
+ $table->parentNode->nodeType !== XML_ELEMENT_NODE)
+ ) {
$this->foster_parent = $this->stack[$n - 1];
}
}
@@ -2806,16 +3525,17 @@ class HTML5TreeConstructer {
}
}
- private function inCaption($token) {
+ private function inCaption($token)
+ {
/* An end tag whose tag name is "caption" */
- if($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') {
+ if ($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
@@ -2826,11 +3546,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until a caption element has
been popped from the stack. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
array_pop($this->stack);
- if($node === 'caption') {
+ if ($node === 'caption') {
break;
}
}
@@ -2843,99 +3563,131 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TABLE;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
- name is "table" */
- } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) || ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table')) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
+ name is "table" */
+ } elseif (($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )) || ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'table')
+ ) {
/* Parse error. Act as if an end tag with the tag name "caption"
had been seen, then, if that token wasn't ignored, reprocess the
current token. */
- $this->inCaption(array(
- 'name' => 'caption',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inCaption(
+ array(
+ 'name' => 'caption',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inTable($token);
- /* An end tag whose tag name is one of: "body", "col", "colgroup",
- "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "col", "colgroup",
+ "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array(
+ 'body',
+ 'col',
+ 'colgroup',
+ 'html',
+ 'tbody',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in body". */
$this->inBody($token);
}
}
- private function inColumnGroup($token) {
+ private function inColumnGroup($token)
+ {
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$text = $this->dom->createTextNode($token['data']);
end($this->stack)->appendChild($text);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
end($this->stack)->appendChild($comment);
- /* A start tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') {
+ /* A start tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') {
/* Insert a col element for the token. Immediately pop the current
node off the stack of open elements. */
$this->insertElement($token);
array_pop($this->stack);
- /* An end tag whose tag name is "colgroup" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'colgroup') {
+ /* An end tag whose tag name is "colgroup" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'colgroup'
+ ) {
/* If the current node is the root html element, then this is a
parse error, ignore the token. (innerHTML case) */
- if(end($this->stack)->nodeName === 'html') {
+ if (end($this->stack)->nodeName === 'html') {
// Ignore
- /* Otherwise, pop the current node (which will be a colgroup
- element) from the stack of open elements. Switch the insertion
- mode to "in table". */
+ /* Otherwise, pop the current node (which will be a colgroup
+ element) from the stack of open elements. Switch the insertion
+ mode to "in table". */
} else {
array_pop($this->stack);
$this->mode = self::IN_TABLE;
}
- /* An end tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') {
+ /* An end tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Act as if an end tag with the tag name "colgroup" had been seen,
and then, if that token wasn't ignored, reprocess the current token. */
- $this->inColumnGroup(array(
- 'name' => 'colgroup',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inColumnGroup(
+ array(
+ 'name' => 'colgroup',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inTable($token);
}
}
- private function inTableBody($token) {
+ private function inTableBody($token)
+ {
$clear = array('tbody', 'tfoot', 'thead', 'html');
/* A start tag whose tag name is "tr" */
- if($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') {
+ if ($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2944,29 +3696,33 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_ROW;
- /* A start tag whose tag name is one of: "th", "td" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')) {
+ /* A start tag whose tag name is one of: "th", "td" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ ($token['name'] === 'th' || $token['name'] === 'td')
+ ) {
/* Parse error. Act as if a start tag with the tag name "tr" had
been seen, then reprocess the current token. */
- $this->inTableBody(array(
- 'name' => 'tr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->inTableBody(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inRow($token);
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
+ /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('tbody', 'tfoot', 'thead'))
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2977,18 +3733,21 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TABLE;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
- } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead'))) ||
- ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
+ } elseif (($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead')
+ )) ||
+ ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')
+ ) {
/* If the stack of open elements does not have a tbody, thead, or
tfoot element in table scope, this is a parse error. Ignore the
token. (innerHTML case) */
- if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) {
+ if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2996,33 +3755,40 @@ class HTML5TreeConstructer {
/* Act as if an end tag with the same tag name as the current
node ("tbody", "tfoot", or "thead") had been seen, then
reprocess the current token. */
- $this->inTableBody(array(
- 'name' => end($this->stack)->nodeName,
- 'type' => HTML5::ENDTAG
- ));
+ $this->inTableBody(
+ array(
+ 'name' => end($this->stack)->nodeName,
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->mainPhase($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "td", "th", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in table". */
$this->inTable($token);
}
}
- private function inRow($token) {
+ private function inRow($token)
+ {
$clear = array('tr', 'html');
/* A start tag whose tag name is one of: "th", "td" */
- if($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')) {
+ if ($token['type'] === HTML5::STARTTAG &&
+ ($token['name'] === 'th' || $token['name'] === 'td')
+ ) {
/* Clear the stack back to a table row context. */
$this->clearStackToTableContext($clear);
@@ -3035,15 +3801,15 @@ class HTML5TreeConstructer {
elements. */
$this->a_formatting[] = self::MARKER;
- /* An end tag whose tag name is "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') {
+ /* An end tag whose tag name is "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table row context. */
$this->clearStackToTableContext($clear);
@@ -3055,64 +3821,77 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TBODY;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* Act as if an end tag with the tag name "tr" had been seen, then,
if that token wasn't ignored, reprocess the current token. */
- $this->inRow(array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inRow(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inCell($token);
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
+ /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('tbody', 'tfoot', 'thead'))
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Otherwise, act as if an end tag with the tag name "tr" had
been seen, then reprocess the current token. */
- $this->inRow(array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inRow(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inCell($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "td", "th" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in table". */
$this->inTable($token);
}
}
- private function inCell($token) {
+ private function inCell($token)
+ {
/* An end tag whose tag name is one of: "td", "th" */
- if($token['type'] === HTML5::ENDTAG &&
- ($token['name'] === 'td' || $token['name'] === 'th')) {
+ if ($token['type'] === HTML5::ENDTAG &&
+ ($token['name'] === 'td' || $token['name'] === 'th')
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as that of the token, then this is a
parse error and the token must be ignored. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags, except for elements with the same
tag name as the token. */
@@ -3124,11 +3903,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until an element with the same
tag name as the token has been popped from the stack. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
array_pop($this->stack);
- if($node === $token['name']) {
+ if ($node === $token['name']) {
break;
}
}
@@ -3142,178 +3921,223 @@ class HTML5TreeConstructer {
$this->mode = self::IN_ROW;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
/* If the stack of open elements does not have a td or th element
in table scope, then this is a parse error; ignore the token.
(innerHTML case) */
- if(!$this->elementInScope(array('td', 'th'), true)) {
+ if (!$this->elementInScope(array('td', 'th'), true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
/* If the stack of open elements does not have a td or th element
in table scope, then this is a parse error; ignore the token.
(innerHTML case) */
- if(!$this->elementInScope(array('td', 'th'), true)) {
+ if (!$this->elementInScope(array('td', 'th'), true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
- "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
+ "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('table', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as that of the token (which can only
happen for "tbody", "tfoot" and "thead", or, in the innerHTML case),
then this is a parse error and the token must be ignored. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in body". */
$this->inBody($token);
}
}
- private function inSelect($token) {
+ private function inSelect($token)
+ {
/* Handle the token as follows: */
/* A character token */
- if($token['type'] === HTML5::CHARACTR) {
+ if ($token['type'] === HTML5::CHARACTR) {
/* Append the token's character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token whose tag name is "option" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'option') {
+ /* A start tag token whose tag name is "option" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'option'
+ ) {
/* If the current node is an option element, act as if an end tag
with the tag name "option" had been seen. */
- if(end($this->stack)->nodeName === 'option') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'option') {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* Insert an HTML element for the token. */
$this->insertElement($token);
- /* A start tag token whose tag name is "optgroup" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'optgroup') {
+ /* A start tag token whose tag name is "optgroup" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'optgroup'
+ ) {
/* If the current node is an option element, act as if an end tag
with the tag name "option" had been seen. */
- if(end($this->stack)->nodeName === 'option') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'option') {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* If the current node is an optgroup element, act as if an end tag
with the tag name "optgroup" had been seen. */
- if(end($this->stack)->nodeName === 'optgroup') {
- $this->inSelect(array(
- 'name' => 'optgroup',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'optgroup') {
+ $this->inSelect(
+ array(
+ 'name' => 'optgroup',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* Insert an HTML element for the token. */
$this->insertElement($token);
- /* An end tag token whose tag name is "optgroup" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'optgroup') {
+ /* An end tag token whose tag name is "optgroup" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'optgroup'
+ ) {
/* First, if the current node is an option element, and the node
immediately before it in the stack of open elements is an optgroup
element, then act as if an end tag with the tag name "option" had
been seen. */
$elements_in_stack = count($this->stack);
- if($this->stack[$elements_in_stack - 1]->nodeName === 'option' &&
- $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->stack[$elements_in_stack - 1]->nodeName === 'option' &&
+ $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup'
+ ) {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* If the current node is an optgroup element, then pop that node
from the stack of open elements. Otherwise, this is a parse error,
ignore the token. */
- if($this->stack[$elements_in_stack - 1] === 'optgroup') {
+ if ($this->stack[$elements_in_stack - 1] === 'optgroup') {
array_pop($this->stack);
}
- /* An end tag token whose tag name is "option" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'option') {
+ /* An end tag token whose tag name is "option" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'option'
+ ) {
/* If the current node is an option element, then pop that node
from the stack of open elements. Otherwise, this is a parse error,
ignore the token. */
- if(end($this->stack)->nodeName === 'option') {
+ if (end($this->stack)->nodeName === 'option') {
array_pop($this->stack);
}
- /* An end tag whose tag name is "select" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'select') {
+ /* An end tag whose tag name is "select" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'select'
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// w/e
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Pop elements from the stack of open elements until a select
element has been popped from the stack. */
- while(true) {
+ while (true) {
$current = end($this->stack)->nodeName;
array_pop($this->stack);
- if($current === 'select') {
+ if ($current === 'select') {
break;
}
}
@@ -3322,20 +4146,35 @@ class HTML5TreeConstructer {
$this->resetInsertionMode();
}
- /* A start tag whose tag name is "select" */
- } elseif($token['name'] === 'select' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag whose tag name is "select" */
+ } elseif ($token['name'] === 'select' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Parse error. Act as if the token had been an end tag with the
tag name "select" instead. */
- $this->inSelect(array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- ));
-
- /* An end tag whose tag name is one of: "caption", "table", "tbody",
- "tfoot", "thead", "tr", "td", "th" */
- } elseif(in_array($token['name'], array('caption', 'table', 'tbody',
- 'tfoot', 'thead', 'tr', 'td', 'th')) && $token['type'] === HTML5::ENDTAG) {
+ $this->inSelect(
+ array(
+ 'name' => 'select',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* An end tag whose tag name is one of: "caption", "table", "tbody",
+ "tfoot", "thead", "tr", "td", "th" */
+ } elseif (in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'table',
+ 'tbody',
+ 'tfoot',
+ 'thead',
+ 'tr',
+ 'td',
+ 'th'
+ )
+ ) && $token['type'] === HTML5::ENDTAG
+ ) {
/* Parse error. */
// w/e
@@ -3343,43 +4182,47 @@ class HTML5TreeConstructer {
the same tag name as that of the token, then act as if an end tag
with the tag name "select" had been seen, and reprocess the token.
Otherwise, ignore the token. */
- if($this->elementInScope($token['name'], true)) {
- $this->inSelect(array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->elementInScope($token['name'], true)) {
+ $this->inSelect(
+ array(
+ 'name' => 'select',
+ 'type' => HTML5::ENDTAG
+ )
+ );
$this->mainPhase($token);
}
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function afterBody($token) {
+ private function afterBody($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Process the token as it would be processed if the insertion mode
was "in body". */
$this->inBody($token);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the first element in the stack of open
elements (the html element), with the data attribute set to the
data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->stack[0]->appendChild($comment);
- /* An end tag with the tag name "html" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') {
+ /* An end tag with the tag name "html" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') {
/* If the parser was originally created in order to handle the
setting of an element's innerHTML attribute, this is a parse error;
ignore the token. (The element will be an html element in this
@@ -3388,7 +4231,7 @@ class HTML5TreeConstructer {
/* Otherwise, switch to the trailing end phase. */
$this->phase = self::END_PHASE;
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Set the insertion mode to "in body" and reprocess
the token. */
@@ -3397,34 +4240,38 @@ class HTML5TreeConstructer {
}
}
- private function inFrameset($token) {
+ private function inFrameset($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag with the tag name "frameset" */
- } elseif($token['name'] === 'frameset' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "frameset" */
+ } elseif ($token['name'] === 'frameset' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
$this->insertElement($token);
- /* An end tag with the tag name "frameset" */
- } elseif($token['name'] === 'frameset' &&
- $token['type'] === HTML5::ENDTAG) {
+ /* An end tag with the tag name "frameset" */
+ } elseif ($token['name'] === 'frameset' &&
+ $token['type'] === HTML5::ENDTAG
+ ) {
/* If the current node is the root html element, then this is a
parse error; ignore the token. (innerHTML case) */
- if(end($this->stack)->nodeName === 'html') {
+ if (end($this->stack)->nodeName === 'html') {
// Ignore
} else {
@@ -3439,103 +4286,113 @@ class HTML5TreeConstructer {
$this->mode = self::AFTR_FRAME;
}
- /* A start tag with the tag name "frame" */
- } elseif($token['name'] === 'frame' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "frame" */
+ } elseif ($token['name'] === 'frame' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Insert an HTML element for the token. */
$this->insertElement($token);
/* Immediately pop the current node off the stack of open elements. */
array_pop($this->stack);
- /* A start tag with the tag name "noframes" */
- } elseif($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "noframes" */
+ } elseif ($token['name'] === 'noframes' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Process the token as if the insertion mode had been "in body". */
$this->inBody($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function afterFrameset($token) {
+ private function afterFrameset($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* An end tag with the tag name "html" */
- } elseif($token['name'] === 'html' &&
- $token['type'] === HTML5::ENDTAG) {
+ /* An end tag with the tag name "html" */
+ } elseif ($token['name'] === 'html' &&
+ $token['type'] === HTML5::ENDTAG
+ ) {
/* Switch to the trailing end phase. */
$this->phase = self::END_PHASE;
- /* A start tag with the tag name "noframes" */
- } elseif($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "noframes" */
+ } elseif ($token['name'] === 'noframes' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Process the token as if the insertion mode had been "in body". */
$this->inBody($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function trailingEndPhase($token) {
+ private function trailingEndPhase($token)
+ {
/* After the main phase, as each token is emitted from the tokenisation
stage, it must be processed as described in this section. */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the Document object with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->dom->appendChild($comment);
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Process the token as it would be processed in the main phase. */
$this->mainPhase($token);
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or a start tag token. Or an end tag token. */
- } elseif(($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG) {
+ /* A character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE. Or a start tag token. Or an end tag token. */
+ } elseif (($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
+ $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG
+ ) {
/* Parse error. Switch back to the main phase and reprocess the
token. */
$this->phase = self::MAIN_PHASE;
return $this->mainPhase($token);
- /* An end-of-file token */
- } elseif($token['type'] === HTML5::EOF) {
+ /* An end-of-file token */
+ } elseif ($token['type'] === HTML5::EOF) {
/* OMG DONE!! */
}
}
- private function insertElement($token, $append = true, $check = false) {
+ private function insertElement($token, $append = true, $check = false)
+ {
// Proprietary workaround for libxml2's limitations with tag names
if ($check) {
// Slightly modified HTML5 tag-name modification,
@@ -3544,13 +4401,15 @@ class HTML5TreeConstructer {
// Remove leading hyphens and numbers
$token['name'] = ltrim($token['name'], '-0..9');
// In theory, this should ever be needed, but just in case
- if ($token['name'] === '') $token['name'] = 'span'; // arbitrary generic choice
+ if ($token['name'] === '') {
+ $token['name'] = 'span';
+ } // arbitrary generic choice
}
-
+
$el = $this->dom->createElement($token['name']);
- foreach($token['attr'] as $attr) {
- if(!$el->hasAttribute($attr['name'])) {
+ foreach ($token['attr'] as $attr) {
+ if (!$el->hasAttribute($attr['name'])) {
$el->setAttribute($attr['name'], $attr['value']);
}
}
@@ -3561,48 +4420,54 @@ class HTML5TreeConstructer {
return $el;
}
- private function insertText($data) {
+ private function insertText($data)
+ {
$text = $this->dom->createTextNode($data);
$this->appendToRealParent($text);
}
- private function insertComment($data) {
+ private function insertComment($data)
+ {
$comment = $this->dom->createComment($data);
$this->appendToRealParent($comment);
}
- private function appendToRealParent($node) {
- if($this->foster_parent === null) {
+ private function appendToRealParent($node)
+ {
+ if ($this->foster_parent === null) {
end($this->stack)->appendChild($node);
- } elseif($this->foster_parent !== null) {
+ } elseif ($this->foster_parent !== null) {
/* If the foster parent element is the parent element of the
last table element in the stack of open elements, then the new
node must be inserted immediately before the last table element
in the stack of open elements in the foster parent element;
otherwise, the new node must be appended to the foster parent
element. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === 'table' &&
- $this->stack[$n]->parentNode !== null) {
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === 'table' &&
+ $this->stack[$n]->parentNode !== null
+ ) {
$table = $this->stack[$n];
break;
}
}
- if(isset($table) && $this->foster_parent->isSameNode($table->parentNode))
+ if (isset($table) && $this->foster_parent->isSameNode($table->parentNode)) {
$this->foster_parent->insertBefore($node, $table);
- else
+ } else {
$this->foster_parent->appendChild($node);
+ }
$this->foster_parent = null;
}
}
- private function elementInScope($el, $table = false) {
- if(is_array($el)) {
- foreach($el as $element) {
- if($this->elementInScope($element, $table)) {
+ private function elementInScope($el, $table = false)
+ {
+ if (is_array($el)) {
+ foreach ($el as $element) {
+ if ($this->elementInScope($element, $table)) {
return true;
}
}
@@ -3612,28 +4477,38 @@ class HTML5TreeConstructer {
$leng = count($this->stack);
- for($n = 0; $n < $leng; $n++) {
+ for ($n = 0; $n < $leng; $n++) {
/* 1. Initialise node to be the current node (the bottommost node of
the stack). */
$node = $this->stack[$leng - 1 - $n];
- if($node->tagName === $el) {
+ if ($node->tagName === $el) {
/* 2. If node is the target node, terminate in a match state. */
return true;
- } elseif($node->tagName === 'table') {
+ } elseif ($node->tagName === 'table') {
/* 3. Otherwise, if node is a table element, terminate in a failure
state. */
return false;
- } elseif($table === true && in_array($node->tagName, array('caption', 'td',
- 'th', 'button', 'marquee', 'object'))) {
+ } elseif ($table === true && in_array(
+ $node->tagName,
+ array(
+ 'caption',
+ 'td',
+ 'th',
+ 'button',
+ 'marquee',
+ 'object'
+ )
+ )
+ ) {
/* 4. Otherwise, if the algorithm is the "has an element in scope"
variant (rather than the "has an element in table scope" variant),
and node is one of the following, terminate in a failure state. */
return false;
- } elseif($node === $node->ownerDocument->documentElement) {
+ } elseif ($node === $node->ownerDocument->documentElement) {
/* 5. Otherwise, if node is an html element (root element), terminate
in a failure state. (This can only happen if the node is the topmost
node of the stack of open elements, and prevents the next step from
@@ -3648,12 +4523,13 @@ class HTML5TreeConstructer {
}
}
- private function reconstructActiveFormattingElements() {
+ private function reconstructActiveFormattingElements()
+ {
/* 1. If there are no entries in the list of active formatting elements,
then there is nothing to reconstruct; stop this algorithm. */
$formatting_elements = count($this->a_formatting);
- if($formatting_elements === 0) {
+ if ($formatting_elements === 0) {
return false;
}
@@ -3665,14 +4541,14 @@ class HTML5TreeConstructer {
formatting elements is a marker, or if it is an element that is in the
stack of open elements, then there is nothing to reconstruct; stop this
algorithm. */
- if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
+ if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
return false;
}
- for($a = $formatting_elements - 1; $a >= 0; true) {
+ for ($a = $formatting_elements - 1; $a >= 0; true) {
/* 4. If there are no entries before entry in the list of active
formatting elements, then jump to step 8. */
- if($a === 0) {
+ if ($a === 0) {
$step_seven = false;
break;
}
@@ -3684,15 +4560,15 @@ class HTML5TreeConstructer {
/* 6. If entry is neither a marker nor an element that is also in
thetack of open elements, go to step 4. */
- if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
+ if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
break;
}
}
- while(true) {
+ while (true) {
/* 7. Let entry be the element one later than entry in the list of
active formatting elements. */
- if(isset($step_seven) && $step_seven === true) {
+ if (isset($step_seven) && $step_seven === true) {
$a++;
$entry = $this->a_formatting[$a];
}
@@ -3711,7 +4587,7 @@ class HTML5TreeConstructer {
/* 11. If the entry for clone in the list of active formatting
elements is not the last entry in the list, return to step 7. */
- if(end($this->a_formatting) !== $clone) {
+ if (end($this->a_formatting) !== $clone) {
$step_seven = true;
} else {
break;
@@ -3719,12 +4595,13 @@ class HTML5TreeConstructer {
}
}
- private function clearTheActiveFormattingElementsUpToTheLastMarker() {
+ private function clearTheActiveFormattingElementsUpToTheLastMarker()
+ {
/* When the steps below require the UA to clear the list of active
formatting elements up to the last marker, the UA must perform the
following steps: */
- while(true) {
+ while (true) {
/* 1. Let entry be the last (most recently added) entry in the list
of active formatting elements. */
$entry = end($this->a_formatting);
@@ -3734,13 +4611,14 @@ class HTML5TreeConstructer {
/* 3. If entry was a marker, then stop the algorithm at this point.
The list has been cleared up to the last marker. */
- if($entry === self::MARKER) {
+ if ($entry === self::MARKER) {
break;
}
}
}
- private function generateImpliedEndTags($exclude = array()) {
+ private function generateImpliedEndTags($exclude = array())
+ {
/* When the steps below require the UA to generate implied end tags,
then, if the current node is a dd element, a dt element, an li element,
a p element, a td element, a th element, or a tr element, the UA must
@@ -3749,36 +4627,36 @@ class HTML5TreeConstructer {
$node = end($this->stack);
$elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude);
- while(in_array(end($this->stack)->nodeName, $elements)) {
+ while (in_array(end($this->stack)->nodeName, $elements)) {
array_pop($this->stack);
}
}
- private function getElementCategory($node) {
+ private function getElementCategory($node)
+ {
$name = $node->tagName;
- if(in_array($name, $this->special))
+ if (in_array($name, $this->special)) {
return self::SPECIAL;
-
- elseif(in_array($name, $this->scoping))
+ } elseif (in_array($name, $this->scoping)) {
return self::SCOPING;
-
- elseif(in_array($name, $this->formatting))
+ } elseif (in_array($name, $this->formatting)) {
return self::FORMATTING;
-
- else
+ } else {
return self::PHRASING;
+ }
}
- private function clearStackToTableContext($elements) {
+ private function clearStackToTableContext($elements)
+ {
/* When the steps above require the UA to clear the stack back to a
table context, it means that the UA must, while the current node is not
a table element or an html element, pop elements from the stack of open
elements. If this causes any elements to be popped from the stack, then
this is a parse error. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
- if(in_array($node, $elements)) {
+ if (in_array($node, $elements)) {
break;
} else {
array_pop($this->stack);
@@ -3786,12 +4664,13 @@ class HTML5TreeConstructer {
}
}
- private function resetInsertionMode() {
+ private function resetInsertionMode()
+ {
/* 1. Let last be false. */
$last = false;
$leng = count($this->stack);
- for($n = $leng - 1; $n >= 0; $n--) {
+ for ($n = $leng - 1; $n >= 0; $n--) {
/* 2. Let node be the last node in the stack of open elements. */
$node = $this->stack[$n];
@@ -3799,108 +4678,111 @@ class HTML5TreeConstructer {
set last to true. If the element whose innerHTML attribute is being
set is neither a td element nor a th element, then set node to the
element whose innerHTML attribute is being set. (innerHTML case) */
- if($this->stack[0]->isSameNode($node)) {
+ if ($this->stack[0]->isSameNode($node)) {
$last = true;
}
/* 4. If node is a select element, then switch the insertion mode to
"in select" and abort these steps. (innerHTML case) */
- if($node->nodeName === 'select') {
+ if ($node->nodeName === 'select') {
$this->mode = self::IN_SELECT;
break;
- /* 5. If node is a td or th element, then switch the insertion mode
- to "in cell" and abort these steps. */
- } elseif($node->nodeName === 'td' || $node->nodeName === 'th') {
+ /* 5. If node is a td or th element, then switch the insertion mode
+ to "in cell" and abort these steps. */
+ } elseif ($node->nodeName === 'td' || $node->nodeName === 'th') {
$this->mode = self::IN_CELL;
break;
- /* 6. If node is a tr element, then switch the insertion mode to
- "in row" and abort these steps. */
- } elseif($node->nodeName === 'tr') {
+ /* 6. If node is a tr element, then switch the insertion mode to
+ "in row" and abort these steps. */
+ } elseif ($node->nodeName === 'tr') {
$this->mode = self::IN_ROW;
break;
- /* 7. If node is a tbody, thead, or tfoot element, then switch the
- insertion mode to "in table body" and abort these steps. */
- } elseif(in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) {
+ /* 7. If node is a tbody, thead, or tfoot element, then switch the
+ insertion mode to "in table body" and abort these steps. */
+ } elseif (in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) {
$this->mode = self::IN_TBODY;
break;
- /* 8. If node is a caption element, then switch the insertion mode
- to "in caption" and abort these steps. */
- } elseif($node->nodeName === 'caption') {
+ /* 8. If node is a caption element, then switch the insertion mode
+ to "in caption" and abort these steps. */
+ } elseif ($node->nodeName === 'caption') {
$this->mode = self::IN_CAPTION;
break;
- /* 9. If node is a colgroup element, then switch the insertion mode
- to "in column group" and abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'colgroup') {
+ /* 9. If node is a colgroup element, then switch the insertion mode
+ to "in column group" and abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'colgroup') {
$this->mode = self::IN_CGROUP;
break;
- /* 10. If node is a table element, then switch the insertion mode
- to "in table" and abort these steps. */
- } elseif($node->nodeName === 'table') {
+ /* 10. If node is a table element, then switch the insertion mode
+ to "in table" and abort these steps. */
+ } elseif ($node->nodeName === 'table') {
$this->mode = self::IN_TABLE;
break;
- /* 11. If node is a head element, then switch the insertion mode
- to "in body" ("in body"! not "in head"!) and abort these steps.
- (innerHTML case) */
- } elseif($node->nodeName === 'head') {
+ /* 11. If node is a head element, then switch the insertion mode
+ to "in body" ("in body"! not "in head"!) and abort these steps.
+ (innerHTML case) */
+ } elseif ($node->nodeName === 'head') {
$this->mode = self::IN_BODY;
break;
- /* 12. If node is a body element, then switch the insertion mode to
- "in body" and abort these steps. */
- } elseif($node->nodeName === 'body') {
+ /* 12. If node is a body element, then switch the insertion mode to
+ "in body" and abort these steps. */
+ } elseif ($node->nodeName === 'body') {
$this->mode = self::IN_BODY;
break;
- /* 13. If node is a frameset element, then switch the insertion
- mode to "in frameset" and abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'frameset') {
+ /* 13. If node is a frameset element, then switch the insertion
+ mode to "in frameset" and abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'frameset') {
$this->mode = self::IN_FRAME;
break;
- /* 14. If node is an html element, then: if the head element
- pointer is null, switch the insertion mode to "before head",
- otherwise, switch the insertion mode to "after head". In either
- case, abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'html') {
+ /* 14. If node is an html element, then: if the head element
+ pointer is null, switch the insertion mode to "before head",
+ otherwise, switch the insertion mode to "after head". In either
+ case, abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'html') {
$this->mode = ($this->head_pointer === null)
? self::BEFOR_HEAD
: self::AFTER_HEAD;
break;
- /* 15. If last is true, then set the insertion mode to "in body"
- and abort these steps. (innerHTML case) */
- } elseif($last) {
+ /* 15. If last is true, then set the insertion mode to "in body"
+ and abort these steps. (innerHTML case) */
+ } elseif ($last) {
$this->mode = self::IN_BODY;
break;
}
}
}
- private function closeCell() {
+ private function closeCell()
+ {
/* If the stack of open elements has a td or th element in table scope,
then act as if an end tag token with that tag name had been seen. */
- foreach(array('td', 'th') as $cell) {
- if($this->elementInScope($cell, true)) {
- $this->inCell(array(
- 'name' => $cell,
- 'type' => HTML5::ENDTAG
- ));
+ foreach (array('td', 'th') as $cell) {
+ if ($this->elementInScope($cell, true)) {
+ $this->inCell(
+ array(
+ 'name' => $cell,
+ 'type' => HTML5::ENDTAG
+ )
+ );
break;
}
}
}
- public function save() {
+ public function save()
+ {
return $this->dom;
}
}
-?>
diff --git a/library/HTMLPurifier/Node.php b/library/HTMLPurifier/Node.php
new file mode 100644
index 000000000..3995fec9f
--- /dev/null
+++ b/library/HTMLPurifier/Node.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Abstract base node class that all others inherit from.
+ *
+ * Why do we not use the DOM extension? (1) It is not always available,
+ * (2) it has funny constraints on the data it can represent,
+ * whereas we want a maximally flexible representation, and (3) its
+ * interface is a bit cumbersome.
+ */
+abstract class HTMLPurifier_Node
+{
+ /**
+ * Line number of the start token in the source document
+ * @type int
+ */
+ public $line;
+
+ /**
+ * Column number of the start token in the source document. Null if unknown.
+ * @type int
+ */
+ public $col;
+
+ /**
+ * Lookup array of processing that this token is exempt from.
+ * Currently, valid values are "ValidateAttributes".
+ * @type array
+ */
+ public $armor = array();
+
+ /**
+ * When true, this node should be ignored as non-existent.
+ *
+ * Who is responsible for ignoring dead nodes? FixNesting is
+ * responsible for removing them before passing on to child
+ * validators.
+ */
+ public $dead = false;
+
+ /**
+ * Returns a pair of start and end tokens, where the end token
+ * is null if it is not necessary. Does not include children.
+ * @type array
+ */
+ abstract public function toTokenPair();
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Node/Comment.php b/library/HTMLPurifier/Node/Comment.php
new file mode 100644
index 000000000..38ba19394
--- /dev/null
+++ b/library/HTMLPurifier/Node/Comment.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Concrete comment node class.
+ */
+class HTMLPurifier_Node_Comment extends HTMLPurifier_Node
+{
+ /**
+ * Character data within comment.
+ * @type string
+ */
+ public $data;
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace = true;
+
+ /**
+ * Transparent constructor.
+ *
+ * @param string $data String comment data.
+ * @param int $line
+ * @param int $col
+ */
+ public function __construct($data, $line = null, $col = null)
+ {
+ $this->data = $data;
+ $this->line = $line;
+ $this->col = $col;
+ }
+
+ public function toTokenPair() {
+ return array(new HTMLPurifier_Token_Comment($this->data, $this->line, $this->col), null);
+ }
+}
diff --git a/library/HTMLPurifier/Node/Element.php b/library/HTMLPurifier/Node/Element.php
new file mode 100644
index 000000000..6cbf56dad
--- /dev/null
+++ b/library/HTMLPurifier/Node/Element.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Concrete element node class.
+ */
+class HTMLPurifier_Node_Element extends HTMLPurifier_Node
+{
+ /**
+ * The lower-case name of the tag, like 'a', 'b' or 'blockquote'.
+ *
+ * @note Strictly speaking, XML tags are case sensitive, so we shouldn't
+ * be lower-casing them, but these tokens cater to HTML tags, which are
+ * insensitive.
+ * @type string
+ */
+ public $name;
+
+ /**
+ * Associative array of the node's attributes.
+ * @type array
+ */
+ public $attr = array();
+
+ /**
+ * List of child elements.
+ * @type array
+ */
+ public $children = array();
+
+ /**
+ * Does this use the <a></a> form or the </a> form, i.e.
+ * is it a pair of start/end tokens or an empty token.
+ * @bool
+ */
+ public $empty = false;
+
+ public $endCol = null, $endLine = null, $endArmor = array();
+
+ public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array()) {
+ $this->name = $name;
+ $this->attr = $attr;
+ $this->line = $line;
+ $this->col = $col;
+ $this->armor = $armor;
+ }
+
+ public function toTokenPair() {
+ // XXX inefficiency here, normalization is not necessary
+ if ($this->empty) {
+ return array(new HTMLPurifier_Token_Empty($this->name, $this->attr, $this->line, $this->col, $this->armor), null);
+ } else {
+ $start = new HTMLPurifier_Token_Start($this->name, $this->attr, $this->line, $this->col, $this->armor);
+ $end = new HTMLPurifier_Token_End($this->name, array(), $this->endLine, $this->endCol, $this->endArmor);
+ //$end->start = $start;
+ return array($start, $end);
+ }
+ }
+}
+
diff --git a/library/HTMLPurifier/Node/Text.php b/library/HTMLPurifier/Node/Text.php
new file mode 100644
index 000000000..aec916647
--- /dev/null
+++ b/library/HTMLPurifier/Node/Text.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * Concrete text token class.
+ *
+ * Text tokens comprise of regular parsed character data (PCDATA) and raw
+ * character data (from the CDATA sections). Internally, their
+ * data is parsed with all entities expanded. Surprisingly, the text token
+ * does have a "tag name" called #PCDATA, which is how the DTD represents it
+ * in permissible child nodes.
+ */
+class HTMLPurifier_Node_Text extends HTMLPurifier_Node
+{
+
+ /**
+ * PCDATA tag name compatible with DTD, see
+ * HTMLPurifier_ChildDef_Custom for details.
+ * @type string
+ */
+ public $name = '#PCDATA';
+
+ /**
+ * @type string
+ */
+ public $data;
+ /**< Parsed character data of text. */
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace;
+
+ /**< Bool indicating if node is whitespace. */
+
+ /**
+ * Constructor, accepts data and determines if it is whitespace.
+ * @param string $data String parsed character data.
+ * @param int $line
+ * @param int $col
+ */
+ public function __construct($data, $is_whitespace, $line = null, $col = null)
+ {
+ $this->data = $data;
+ $this->is_whitespace = $is_whitespace;
+ $this->line = $line;
+ $this->col = $col;
+ }
+
+ public function toTokenPair() {
+ return array(new HTMLPurifier_Token_Text($this->data, $this->line, $this->col), null);
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/PercentEncoder.php b/library/HTMLPurifier/PercentEncoder.php
index a43c44f4c..18c8bbb00 100644
--- a/library/HTMLPurifier/PercentEncoder.php
+++ b/library/HTMLPurifier/PercentEncoder.php
@@ -13,17 +13,26 @@ class HTMLPurifier_PercentEncoder
/**
* Reserved characters to preserve when using encode().
+ * @type array
*/
protected $preserve = array();
/**
* String of characters that should be preserved while using encode().
+ * @param bool $preserve
*/
- public function __construct($preserve = false) {
+ public function __construct($preserve = false)
+ {
// unreserved letters, ought to const-ify
- for ($i = 48; $i <= 57; $i++) $this->preserve[$i] = true; // digits
- for ($i = 65; $i <= 90; $i++) $this->preserve[$i] = true; // upper-case
- for ($i = 97; $i <= 122; $i++) $this->preserve[$i] = true; // lower-case
+ for ($i = 48; $i <= 57; $i++) { // digits
+ $this->preserve[$i] = true;
+ }
+ for ($i = 65; $i <= 90; $i++) { // upper-case
+ $this->preserve[$i] = true;
+ }
+ for ($i = 97; $i <= 122; $i++) { // lower-case
+ $this->preserve[$i] = true;
+ }
$this->preserve[45] = true; // Dash -
$this->preserve[46] = true; // Period .
$this->preserve[95] = true; // Underscore _
@@ -44,13 +53,14 @@ class HTMLPurifier_PercentEncoder
* Assumes that the string has already been normalized, making any
* and all percent escape sequences valid. Percents will not be
* re-escaped, regardless of their status in $preserve
- * @param $string String to be encoded
- * @return Encoded string.
+ * @param string $string String to be encoded
+ * @return string Encoded string.
*/
- public function encode($string) {
+ public function encode($string)
+ {
$ret = '';
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
- if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])]) ) {
+ if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])])) {
$ret .= '%' . sprintf('%02X', $int);
} else {
$ret .= $string[$i];
@@ -64,10 +74,14 @@ class HTMLPurifier_PercentEncoder
* @warning This function is affected by $preserve, even though the
* usual desired behavior is for this not to preserve those
* characters. Be careful when reusing instances of PercentEncoder!
- * @param $string String to normalize
+ * @param string $string String to normalize
+ * @return string
*/
- public function normalize($string) {
- if ($string == '') return '';
+ public function normalize($string)
+ {
+ if ($string == '') {
+ return '';
+ }
$parts = explode('%', $string);
$ret = array_shift($parts);
foreach ($parts as $part) {
@@ -92,7 +106,6 @@ class HTMLPurifier_PercentEncoder
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer.php b/library/HTMLPurifier/Printer.php
index e7eb82e83..549e4cea1 100644
--- a/library/HTMLPurifier/Printer.php
+++ b/library/HTMLPurifier/Printer.php
@@ -7,25 +7,30 @@ class HTMLPurifier_Printer
{
/**
- * Instance of HTMLPurifier_Generator for HTML generation convenience funcs
+ * For HTML generation convenience funcs.
+ * @type HTMLPurifier_Generator
*/
protected $generator;
/**
- * Instance of HTMLPurifier_Config, for easy access
+ * For easy access.
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
* Initialize $generator.
*/
- public function __construct() {
+ public function __construct()
+ {
}
/**
* Give generator necessary configuration if possible
+ * @param HTMLPurifier_Config $config
*/
- public function prepareGenerator($config) {
+ public function prepareGenerator($config)
+ {
$all = $config->getAll();
$context = new HTMLPurifier_Context();
$this->generator = new HTMLPurifier_Generator($config, $context);
@@ -39,45 +44,62 @@ class HTMLPurifier_Printer
/**
* Returns a start tag
- * @param $tag Tag name
- * @param $attr Attribute array
+ * @param string $tag Tag name
+ * @param array $attr Attribute array
+ * @return string
*/
- protected function start($tag, $attr = array()) {
+ protected function start($tag, $attr = array())
+ {
return $this->generator->generateFromToken(
- new HTMLPurifier_Token_Start($tag, $attr ? $attr : array())
- );
+ new HTMLPurifier_Token_Start($tag, $attr ? $attr : array())
+ );
}
/**
- * Returns an end teg
- * @param $tag Tag name
+ * Returns an end tag
+ * @param string $tag Tag name
+ * @return string
*/
- protected function end($tag) {
+ protected function end($tag)
+ {
return $this->generator->generateFromToken(
- new HTMLPurifier_Token_End($tag)
- );
+ new HTMLPurifier_Token_End($tag)
+ );
}
/**
* Prints a complete element with content inside
- * @param $tag Tag name
- * @param $contents Element contents
- * @param $attr Tag attributes
- * @param $escape Bool whether or not to escape contents
+ * @param string $tag Tag name
+ * @param string $contents Element contents
+ * @param array $attr Tag attributes
+ * @param bool $escape whether or not to escape contents
+ * @return string
*/
- protected function element($tag, $contents, $attr = array(), $escape = true) {
+ protected function element($tag, $contents, $attr = array(), $escape = true)
+ {
return $this->start($tag, $attr) .
- ($escape ? $this->escape($contents) : $contents) .
- $this->end($tag);
+ ($escape ? $this->escape($contents) : $contents) .
+ $this->end($tag);
}
- protected function elementEmpty($tag, $attr = array()) {
+ /**
+ * @param string $tag
+ * @param array $attr
+ * @return string
+ */
+ protected function elementEmpty($tag, $attr = array())
+ {
return $this->generator->generateFromToken(
new HTMLPurifier_Token_Empty($tag, $attr)
);
}
- protected function text($text) {
+ /**
+ * @param string $text
+ * @return string
+ */
+ protected function text($text)
+ {
return $this->generator->generateFromToken(
new HTMLPurifier_Token_Text($text)
);
@@ -85,24 +107,29 @@ class HTMLPurifier_Printer
/**
* Prints a simple key/value row in a table.
- * @param $name Key
- * @param $value Value
+ * @param string $name Key
+ * @param mixed $value Value
+ * @return string
*/
- protected function row($name, $value) {
- if (is_bool($value)) $value = $value ? 'On' : 'Off';
+ protected function row($name, $value)
+ {
+ if (is_bool($value)) {
+ $value = $value ? 'On' : 'Off';
+ }
return
$this->start('tr') . "\n" .
- $this->element('th', $name) . "\n" .
- $this->element('td', $value) . "\n" .
- $this->end('tr')
- ;
+ $this->element('th', $name) . "\n" .
+ $this->element('td', $value) . "\n" .
+ $this->end('tr');
}
/**
* Escapes a string for HTML output.
- * @param $string String to escape
+ * @param string $string String to escape
+ * @return string
*/
- protected function escape($string) {
+ protected function escape($string)
+ {
$string = HTMLPurifier_Encoder::cleanUTF8($string);
$string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8');
return $string;
@@ -110,32 +137,46 @@ class HTMLPurifier_Printer
/**
* Takes a list of strings and turns them into a single list
- * @param $array List of strings
- * @param $polite Bool whether or not to add an end before the last
+ * @param string[] $array List of strings
+ * @param bool $polite Bool whether or not to add an end before the last
+ * @return string
*/
- protected function listify($array, $polite = false) {
- if (empty($array)) return 'None';
+ protected function listify($array, $polite = false)
+ {
+ if (empty($array)) {
+ return 'None';
+ }
$ret = '';
$i = count($array);
foreach ($array as $value) {
$i--;
$ret .= $value;
- if ($i > 0 && !($polite && $i == 1)) $ret .= ', ';
- if ($polite && $i == 1) $ret .= 'and ';
+ if ($i > 0 && !($polite && $i == 1)) {
+ $ret .= ', ';
+ }
+ if ($polite && $i == 1) {
+ $ret .= 'and ';
+ }
}
return $ret;
}
/**
* Retrieves the class of an object without prefixes, as well as metadata
- * @param $obj Object to determine class of
- * @param $prefix Further prefix to remove
+ * @param object $obj Object to determine class of
+ * @param string $sec_prefix Further prefix to remove
+ * @return string
*/
- protected function getClass($obj, $sec_prefix = '') {
+ protected function getClass($obj, $sec_prefix = '')
+ {
static $five = null;
- if ($five === null) $five = version_compare(PHP_VERSION, '5', '>=');
+ if ($five === null) {
+ $five = version_compare(PHP_VERSION, '5', '>=');
+ }
$prefix = 'HTMLPurifier_' . $sec_prefix;
- if (!$five) $prefix = strtolower($prefix);
+ if (!$five) {
+ $prefix = strtolower($prefix);
+ }
$class = str_replace($prefix, '', get_class($obj));
$lclass = strtolower($class);
$class .= '(';
@@ -164,13 +205,14 @@ class HTMLPurifier_Printer
break;
case 'css_importantdecorator':
$class .= $this->getClass($obj->def, $sec_prefix);
- if ($obj->allow) $class .= ', !important';
+ if ($obj->allow) {
+ $class .= ', !important';
+ }
break;
}
$class .= ')';
return $class;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer/CSSDefinition.php b/library/HTMLPurifier/Printer/CSSDefinition.php
index 81f986590..29505fe12 100644
--- a/library/HTMLPurifier/Printer/CSSDefinition.php
+++ b/library/HTMLPurifier/Printer/CSSDefinition.php
@@ -2,10 +2,17 @@
class HTMLPurifier_Printer_CSSDefinition extends HTMLPurifier_Printer
{
-
+ /**
+ * @type HTMLPurifier_CSSDefinition
+ */
protected $def;
- public function render($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return string
+ */
+ public function render($config)
+ {
$this->def = $config->getCSSDefinition();
$ret = '';
@@ -32,7 +39,6 @@ class HTMLPurifier_Printer_CSSDefinition extends HTMLPurifier_Printer
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer/ConfigForm.php b/library/HTMLPurifier/Printer/ConfigForm.php
index 02aa65689..36100ce73 100644
--- a/library/HTMLPurifier/Printer/ConfigForm.php
+++ b/library/HTMLPurifier/Printer/ConfigForm.php
@@ -7,17 +7,20 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
{
/**
- * Printers for specific fields
+ * Printers for specific fields.
+ * @type HTMLPurifier_Printer[]
*/
protected $fields = array();
/**
- * Documentation URL, can have fragment tagged on end
+ * Documentation URL, can have fragment tagged on end.
+ * @type string
*/
protected $docURL;
/**
- * Name of form element to stuff config in
+ * Name of form element to stuff config in.
+ * @type string
*/
protected $name;
@@ -25,24 +28,27 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
* Whether or not to compress directive names, clipping them off
* after a certain amount of letters. False to disable or integer letters
* before clipping.
+ * @type bool
*/
protected $compress = false;
/**
- * @param $name Form element name for directives to be stuffed into
- * @param $doc_url String documentation URL, will have fragment tagged on
- * @param $compress Integer max length before compressing a directive name, set to false to turn off
+ * @param string $name Form element name for directives to be stuffed into
+ * @param string $doc_url String documentation URL, will have fragment tagged on
+ * @param bool $compress Integer max length before compressing a directive name, set to false to turn off
*/
public function __construct(
- $name, $doc_url = null, $compress = false
+ $name,
+ $doc_url = null,
+ $compress = false
) {
parent::__construct();
$this->docURL = $doc_url;
- $this->name = $name;
+ $this->name = $name;
$this->compress = $compress;
// initialize sub-printers
- $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default();
- $this->fields[HTMLPurifier_VarParser::BOOL] = new HTMLPurifier_Printer_ConfigForm_bool();
+ $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default();
+ $this->fields[HTMLPurifier_VarParser::BOOL] = new HTMLPurifier_Printer_ConfigForm_bool();
}
/**
@@ -50,32 +56,42 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
* @param $cols Integer columns of textarea, null to use default
* @param $rows Integer rows of textarea, null to use default
*/
- public function setTextareaDimensions($cols = null, $rows = null) {
- if ($cols) $this->fields['default']->cols = $cols;
- if ($rows) $this->fields['default']->rows = $rows;
+ public function setTextareaDimensions($cols = null, $rows = null)
+ {
+ if ($cols) {
+ $this->fields['default']->cols = $cols;
+ }
+ if ($rows) {
+ $this->fields['default']->rows = $rows;
+ }
}
/**
* Retrieves styling, in case it is not accessible by webserver
*/
- public static function getCSS() {
+ public static function getCSS()
+ {
return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.css');
}
/**
* Retrieves JavaScript, in case it is not accessible by webserver
*/
- public static function getJavaScript() {
+ public static function getJavaScript()
+ {
return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.js');
}
/**
* Returns HTML output for a configuration form
- * @param $config Configuration object of current form state, or an array
+ * @param HTMLPurifier_Config|array $config Configuration object of current form state, or an array
* where [0] has an HTML namespace and [1] is being rendered.
- * @param $allowed Optional namespace(s) and directives to restrict form to.
+ * @param array|bool $allowed Optional namespace(s) and directives to restrict form to.
+ * @param bool $render_controls
+ * @return string
*/
- public function render($config, $allowed = true, $render_controls = true) {
+ public function render($config, $allowed = true, $render_controls = true)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -91,29 +107,29 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
$all = array();
foreach ($allowed as $key) {
list($ns, $directive) = $key;
- $all[$ns][$directive] = $config->get($ns .'.'. $directive);
+ $all[$ns][$directive] = $config->get($ns . '.' . $directive);
}
$ret = '';
$ret .= $this->start('table', array('class' => 'hp-config'));
$ret .= $this->start('thead');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive'));
- $ret .= $this->element('th', 'Value', array('class' => 'hp-value'));
+ $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive'));
+ $ret .= $this->element('th', 'Value', array('class' => 'hp-value'));
$ret .= $this->end('tr');
$ret .= $this->end('thead');
foreach ($all as $ns => $directives) {
$ret .= $this->renderNamespace($ns, $directives);
}
if ($render_controls) {
- $ret .= $this->start('tbody');
- $ret .= $this->start('tr');
- $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls'));
- $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit'));
- $ret .= '[<a href="?">Reset</a>]';
- $ret .= $this->end('td');
- $ret .= $this->end('tr');
- $ret .= $this->end('tbody');
+ $ret .= $this->start('tbody');
+ $ret .= $this->start('tr');
+ $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls'));
+ $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit'));
+ $ret .= '[<a href="?">Reset</a>]';
+ $ret .= $this->end('td');
+ $ret .= $this->end('tr');
+ $ret .= $this->end('tbody');
}
$ret .= $this->end('table');
return $ret;
@@ -122,13 +138,15 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
/**
* Renders a single namespace
* @param $ns String namespace name
- * @param $directive Associative array of directives to values
+ * @param array $directives array of directives to values
+ * @return string
*/
- protected function renderNamespace($ns, $directives) {
+ protected function renderNamespace($ns, $directives)
+ {
$ret = '';
$ret .= $this->start('tbody', array('class' => 'namespace'));
$ret .= $this->start('tr');
- $ret .= $this->element('th', $ns, array('colspan' => 2));
+ $ret .= $this->element('th', $ns, array('colspan' => 2));
$ret .= $this->end('tr');
$ret .= $this->end('tbody');
$ret .= $this->start('tbody');
@@ -139,40 +157,44 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
$url = str_replace('%s', urlencode("$ns.$directive"), $this->docURL);
$ret .= $this->start('a', array('href' => $url));
}
- $attr = array('for' => "{$this->name}:$ns.$directive");
-
- // crop directive name if it's too long
- if (!$this->compress || (strlen($directive) < $this->compress)) {
- $directive_disp = $directive;
- } else {
- $directive_disp = substr($directive, 0, $this->compress - 2) . '...';
- $attr['title'] = $directive;
- }
+ $attr = array('for' => "{$this->name}:$ns.$directive");
+
+ // crop directive name if it's too long
+ if (!$this->compress || (strlen($directive) < $this->compress)) {
+ $directive_disp = $directive;
+ } else {
+ $directive_disp = substr($directive, 0, $this->compress - 2) . '...';
+ $attr['title'] = $directive;
+ }
- $ret .= $this->element(
- 'label',
- $directive_disp,
- // component printers must create an element with this id
- $attr
- );
- if ($this->docURL) $ret .= $this->end('a');
+ $ret .= $this->element(
+ 'label',
+ $directive_disp,
+ // component printers must create an element with this id
+ $attr
+ );
+ if ($this->docURL) {
+ $ret .= $this->end('a');
+ }
$ret .= $this->end('th');
$ret .= $this->start('td');
- $def = $this->config->def->info["$ns.$directive"];
- if (is_int($def)) {
- $allow_null = $def < 0;
- $type = abs($def);
- } else {
- $type = $def->type;
- $allow_null = isset($def->allow_null);
- }
- if (!isset($this->fields[$type])) $type = 0; // default
- $type_obj = $this->fields[$type];
- if ($allow_null) {
- $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj);
- }
- $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config));
+ $def = $this->config->def->info["$ns.$directive"];
+ if (is_int($def)) {
+ $allow_null = $def < 0;
+ $type = abs($def);
+ } else {
+ $type = $def->type;
+ $allow_null = isset($def->allow_null);
+ }
+ if (!isset($this->fields[$type])) {
+ $type = 0;
+ } // default
+ $type_obj = $this->fields[$type];
+ if ($allow_null) {
+ $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj);
+ }
+ $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config));
$ret .= $this->end('td');
$ret .= $this->end('tr');
}
@@ -185,19 +207,33 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
/**
* Printer decorator for directives that accept null
*/
-class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer {
+class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
+{
/**
* Printer being decorated
+ * @type HTMLPurifier_Printer
*/
protected $obj;
+
/**
- * @param $obj Printer to decorate
+ * @param HTMLPurifier_Printer $obj Printer to decorate
*/
- public function __construct($obj) {
+ public function __construct($obj)
+ {
parent::__construct();
$this->obj = $obj;
}
- public function render($ns, $directive, $value, $name, $config) {
+
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -215,15 +251,19 @@ class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
'type' => 'checkbox',
'value' => '1',
'class' => 'null-toggle',
- 'name' => "$name"."[Null_$ns.$directive]",
+ 'name' => "$name" . "[Null_$ns.$directive]",
'id' => "$name:Null_$ns.$directive",
'onclick' => "toggleWriteability('$name:$ns.$directive',checked)" // INLINE JAVASCRIPT!!!!
);
if ($this->obj instanceof HTMLPurifier_Printer_ConfigForm_bool) {
// modify inline javascript slightly
- $attr['onclick'] = "toggleWriteability('$name:Yes_$ns.$directive',checked);toggleWriteability('$name:No_$ns.$directive',checked)";
+ $attr['onclick'] =
+ "toggleWriteability('$name:Yes_$ns.$directive',checked);" .
+ "toggleWriteability('$name:No_$ns.$directive',checked)";
+ }
+ if ($value === null) {
+ $attr['checked'] = 'checked';
}
- if ($value === null) $attr['checked'] = 'checked';
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->text(' or ');
$ret .= $this->elementEmpty('br');
@@ -235,10 +275,28 @@ class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
/**
* Swiss-army knife configuration form field printer
*/
-class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
+class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer
+{
+ /**
+ * @type int
+ */
public $cols = 18;
+
+ /**
+ * @type int
+ */
public $rows = 5;
- public function render($ns, $directive, $value, $name, $config) {
+
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -262,6 +320,7 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
foreach ($array as $val => $b) {
$value[] = $val;
}
+ //TODO does this need a break?
case HTMLPurifier_VarParser::ALIST:
$value = implode(PHP_EOL, $value);
break;
@@ -281,25 +340,27 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
$value = serialize($value);
}
$attr = array(
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:$ns.$directive"
);
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
if (isset($def->allowed)) {
$ret .= $this->start('select', $attr);
foreach ($def->allowed as $val => $b) {
$attr = array();
- if ($value == $val) $attr['selected'] = 'selected';
+ if ($value == $val) {
+ $attr['selected'] = 'selected';
+ }
$ret .= $this->element('option', $val, $attr);
}
$ret .= $this->end('select');
- } elseif (
- $type === HTMLPurifier_VarParser::TEXT ||
- $type === HTMLPurifier_VarParser::ITEXT ||
- $type === HTMLPurifier_VarParser::ALIST ||
- $type === HTMLPurifier_VarParser::HASH ||
- $type === HTMLPurifier_VarParser::LOOKUP
- ) {
+ } elseif ($type === HTMLPurifier_VarParser::TEXT ||
+ $type === HTMLPurifier_VarParser::ITEXT ||
+ $type === HTMLPurifier_VarParser::ALIST ||
+ $type === HTMLPurifier_VarParser::HASH ||
+ $type === HTMLPurifier_VarParser::LOOKUP) {
$attr['cols'] = $this->cols;
$attr['rows'] = $this->rows;
$ret .= $this->start('textarea', $attr);
@@ -317,8 +378,18 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
/**
* Bool form field printer
*/
-class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
- public function render($ns, $directive, $value, $name, $config) {
+class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer
+{
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -336,12 +407,16 @@ class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
$attr = array(
'type' => 'radio',
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:Yes_$ns.$directive",
'value' => '1'
);
- if ($value === true) $attr['checked'] = 'checked';
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === true) {
+ $attr['checked'] = 'checked';
+ }
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->start('label', array('for' => "$name:No_$ns.$directive"));
@@ -351,12 +426,16 @@ class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
$attr = array(
'type' => 'radio',
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:No_$ns.$directive",
'value' => '0'
);
- if ($value === false) $attr['checked'] = 'checked';
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === false) {
+ $attr['checked'] = 'checked';
+ }
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->end('div');
diff --git a/library/HTMLPurifier/Printer/HTMLDefinition.php b/library/HTMLPurifier/Printer/HTMLDefinition.php
index 8a8f126b8..5f2f2f8a7 100644
--- a/library/HTMLPurifier/Printer/HTMLDefinition.php
+++ b/library/HTMLPurifier/Printer/HTMLDefinition.php
@@ -4,11 +4,16 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
{
/**
- * Instance of HTMLPurifier_HTMLDefinition, for easy access
+ * @type HTMLPurifier_HTMLDefinition, for easy access
*/
protected $def;
- public function render($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return string
+ */
+ public function render($config)
+ {
$ret = '';
$this->config =& $config;
@@ -28,8 +33,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Doctype table
+ * @return string
*/
- protected function renderDoctype() {
+ protected function renderDoctype()
+ {
$doctype = $this->def->doctype;
$ret = '';
$ret .= $this->start('table');
@@ -45,8 +52,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders environment table, which is miscellaneous info
+ * @return string
*/
- protected function renderEnvironment() {
+ protected function renderEnvironment()
+ {
$def = $this->def;
$ret = '';
@@ -59,28 +68,28 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
$ret .= $this->row('Block wrap name', $def->info_block_wrapper);
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Global attributes');
- $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr),0,0);
+ $ret .= $this->element('th', 'Global attributes');
+ $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr), null, 0);
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Tag transforms');
- $list = array();
- foreach ($def->info_tag_transform as $old => $new) {
- $new = $this->getClass($new, 'TagTransform_');
- $list[] = "<$old> with $new";
- }
- $ret .= $this->element('td', $this->listify($list));
+ $ret .= $this->element('th', 'Tag transforms');
+ $list = array();
+ foreach ($def->info_tag_transform as $old => $new) {
+ $new = $this->getClass($new, 'TagTransform_');
+ $list[] = "<$old> with $new";
+ }
+ $ret .= $this->element('td', $this->listify($list));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre));
+ $ret .= $this->element('th', 'Pre-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post));
+ $ret .= $this->element('th', 'Post-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post));
$ret .= $this->end('tr');
$ret .= $this->end('table');
@@ -89,8 +98,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Content Sets table
+ * @return string
*/
- protected function renderContentSets() {
+ protected function renderContentSets()
+ {
$ret = '';
$ret .= $this->start('table');
$ret .= $this->element('caption', 'Content Sets');
@@ -106,8 +117,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Elements ($info) table
+ * @return string
*/
- protected function renderInfo() {
+ protected function renderInfo()
+ {
$ret = '';
$ret .= $this->start('table');
$ret .= $this->element('caption', 'Elements ($info)');
@@ -118,39 +131,39 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
$ret .= $this->end('tr');
foreach ($this->def->info as $name => $def) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', "<$name>", array('class'=>'heavy', 'colspan' => 2));
+ $ret .= $this->element('th', "<$name>", array('class' => 'heavy', 'colspan' => 2));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Inline content');
- $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No');
+ $ret .= $this->element('th', 'Inline content');
+ $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No');
$ret .= $this->end('tr');
if (!empty($def->excludes)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Excludes');
- $ret .= $this->element('td', $this->listifyTagLookup($def->excludes));
+ $ret .= $this->element('th', 'Excludes');
+ $ret .= $this->element('td', $this->listifyTagLookup($def->excludes));
$ret .= $this->end('tr');
}
if (!empty($def->attr_transform_pre)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre));
+ $ret .= $this->element('th', 'Pre-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre));
$ret .= $this->end('tr');
}
if (!empty($def->attr_transform_post)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post));
+ $ret .= $this->element('th', 'Post-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post));
$ret .= $this->end('tr');
}
if (!empty($def->auto_close)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Auto closed by');
- $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close));
+ $ret .= $this->element('th', 'Auto closed by');
+ $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close));
$ret .= $this->end('tr');
}
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Allowed attributes');
- $ret .= $this->element('td',$this->listifyAttr($def->attr), array(), 0);
+ $ret .= $this->element('th', 'Allowed attributes');
+ $ret .= $this->element('td', $this->listifyAttr($def->attr), array(), 0);
$ret .= $this->end('tr');
if (!empty($def->required_attr)) {
@@ -165,64 +178,94 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders a row describing the allowed children of an element
- * @param $def HTMLPurifier_ChildDef of pertinent element
+ * @param HTMLPurifier_ChildDef $def HTMLPurifier_ChildDef of pertinent element
+ * @return string
*/
- protected function renderChildren($def) {
+ protected function renderChildren($def)
+ {
$context = new HTMLPurifier_Context();
$ret = '';
$ret .= $this->start('tr');
- $elements = array();
- $attr = array();
- if (isset($def->elements)) {
- if ($def->type == 'strictblockquote') {
- $def->validateChildren(array(), $this->config, $context);
- }
- $elements = $def->elements;
+ $elements = array();
+ $attr = array();
+ if (isset($def->elements)) {
+ if ($def->type == 'strictblockquote') {
+ $def->validateChildren(array(), $this->config, $context);
}
- if ($def->type == 'chameleon') {
- $attr['rowspan'] = 2;
- } elseif ($def->type == 'empty') {
- $elements = array();
- } elseif ($def->type == 'table') {
- $elements = array_flip(array('col', 'caption', 'colgroup', 'thead',
- 'tfoot', 'tbody', 'tr'));
- }
- $ret .= $this->element('th', 'Allowed children', $attr);
-
- if ($def->type == 'chameleon') {
-
- $ret .= $this->element('td',
- '<em>Block</em>: ' .
- $this->escape($this->listifyTagLookup($def->block->elements)),0,0);
- $ret .= $this->end('tr');
- $ret .= $this->start('tr');
- $ret .= $this->element('td',
- '<em>Inline</em>: ' .
- $this->escape($this->listifyTagLookup($def->inline->elements)),0,0);
-
- } elseif ($def->type == 'custom') {
+ $elements = $def->elements;
+ }
+ if ($def->type == 'chameleon') {
+ $attr['rowspan'] = 2;
+ } elseif ($def->type == 'empty') {
+ $elements = array();
+ } elseif ($def->type == 'table') {
+ $elements = array_flip(
+ array(
+ 'col',
+ 'caption',
+ 'colgroup',
+ 'thead',
+ 'tfoot',
+ 'tbody',
+ 'tr'
+ )
+ );
+ }
+ $ret .= $this->element('th', 'Allowed children', $attr);
- $ret .= $this->element('td', '<em>'.ucfirst($def->type).'</em>: ' .
- $def->dtd_regex);
+ if ($def->type == 'chameleon') {
- } else {
- $ret .= $this->element('td',
- '<em>'.ucfirst($def->type).'</em>: ' .
- $this->escape($this->listifyTagLookup($elements)),0,0);
- }
+ $ret .= $this->element(
+ 'td',
+ '<em>Block</em>: ' .
+ $this->escape($this->listifyTagLookup($def->block->elements)),
+ null,
+ 0
+ );
+ $ret .= $this->end('tr');
+ $ret .= $this->start('tr');
+ $ret .= $this->element(
+ 'td',
+ '<em>Inline</em>: ' .
+ $this->escape($this->listifyTagLookup($def->inline->elements)),
+ null,
+ 0
+ );
+
+ } elseif ($def->type == 'custom') {
+
+ $ret .= $this->element(
+ 'td',
+ '<em>' . ucfirst($def->type) . '</em>: ' .
+ $def->dtd_regex
+ );
+
+ } else {
+ $ret .= $this->element(
+ 'td',
+ '<em>' . ucfirst($def->type) . '</em>: ' .
+ $this->escape($this->listifyTagLookup($elements)),
+ null,
+ 0
+ );
+ }
$ret .= $this->end('tr');
return $ret;
}
/**
* Listifies a tag lookup table.
- * @param $array Tag lookup array in form of array('tagname' => true)
+ * @param array $array Tag lookup array in form of array('tagname' => true)
+ * @return string
*/
- protected function listifyTagLookup($array) {
+ protected function listifyTagLookup($array)
+ {
ksort($array);
$list = array();
foreach ($array as $name => $discard) {
- if ($name !== '#PCDATA' && !isset($this->def->info[$name])) continue;
+ if ($name !== '#PCDATA' && !isset($this->def->info[$name])) {
+ continue;
+ }
$list[] = $name;
}
return $this->listify($list);
@@ -230,13 +273,15 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Listifies a list of objects by retrieving class names and internal state
- * @param $array List of objects
+ * @param array $array List of objects
+ * @return string
* @todo Also add information about internal state
*/
- protected function listifyObjectList($array) {
+ protected function listifyObjectList($array)
+ {
ksort($array);
$list = array();
- foreach ($array as $discard => $obj) {
+ foreach ($array as $obj) {
$list[] = $this->getClass($obj, 'AttrTransform_');
}
return $this->listify($list);
@@ -244,13 +289,17 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Listifies a hash of attributes to AttrDef classes
- * @param $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef)
+ * @param array $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef)
+ * @return string
*/
- protected function listifyAttr($array) {
+ protected function listifyAttr($array)
+ {
ksort($array);
$list = array();
foreach ($array as $name => $obj) {
- if ($obj === false) continue;
+ if ($obj === false) {
+ continue;
+ }
$list[] = "$name&nbsp;=&nbsp;<i>" . $this->getClass($obj, 'AttrDef_') . '</i>';
}
return $this->listify($list);
@@ -258,15 +307,18 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Creates a heavy header row
+ * @param string $text
+ * @param int $num
+ * @return string
*/
- protected function heavyHeader($text, $num = 1) {
+ protected function heavyHeader($text, $num = 1)
+ {
$ret = '';
$ret .= $this->start('tr');
$ret .= $this->element('th', $text, array('colspan' => $num, 'class' => 'heavy'));
$ret .= $this->end('tr');
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/PropertyList.php b/library/HTMLPurifier/PropertyList.php
index 2b99fb7bc..189348fd9 100644
--- a/library/HTMLPurifier/PropertyList.php
+++ b/library/HTMLPurifier/PropertyList.php
@@ -6,61 +6,93 @@
class HTMLPurifier_PropertyList
{
/**
- * Internal data-structure for properties
+ * Internal data-structure for properties.
+ * @type array
*/
protected $data = array();
/**
- * Parent plist
+ * Parent plist.
+ * @type HTMLPurifier_PropertyList
*/
protected $parent;
+ /**
+ * Cache.
+ * @type array
+ */
protected $cache;
- public function __construct($parent = null) {
+ /**
+ * @param HTMLPurifier_PropertyList $parent Parent plist
+ */
+ public function __construct($parent = null)
+ {
$this->parent = $parent;
}
/**
* Recursively retrieves the value for a key
+ * @param string $name
+ * @throws HTMLPurifier_Exception
*/
- public function get($name) {
- if ($this->has($name)) return $this->data[$name];
+ public function get($name)
+ {
+ if ($this->has($name)) {
+ return $this->data[$name];
+ }
// possible performance bottleneck, convert to iterative if necessary
- if ($this->parent) return $this->parent->get($name);
+ if ($this->parent) {
+ return $this->parent->get($name);
+ }
throw new HTMLPurifier_Exception("Key '$name' not found");
}
/**
* Sets the value of a key, for this plist
+ * @param string $name
+ * @param mixed $value
*/
- public function set($name, $value) {
+ public function set($name, $value)
+ {
$this->data[$name] = $value;
}
/**
* Returns true if a given key exists
+ * @param string $name
+ * @return bool
*/
- public function has($name) {
+ public function has($name)
+ {
return array_key_exists($name, $this->data);
}
/**
* Resets a value to the value of it's parent, usually the default. If
* no value is specified, the entire plist is reset.
+ * @param string $name
*/
- public function reset($name = null) {
- if ($name == null) $this->data = array();
- else unset($this->data[$name]);
+ public function reset($name = null)
+ {
+ if ($name == null) {
+ $this->data = array();
+ } else {
+ unset($this->data[$name]);
+ }
}
/**
* Squashes this property list and all of its property lists into a single
* array, and returns the array. This value is cached by default.
- * @param $force If true, ignores the cache and regenerates the array.
+ * @param bool $force If true, ignores the cache and regenerates the array.
+ * @return array
*/
- public function squash($force = false) {
- if ($this->cache !== null && !$force) return $this->cache;
+ public function squash($force = false)
+ {
+ if ($this->cache !== null && !$force) {
+ return $this->cache;
+ }
if ($this->parent) {
return $this->cache = array_merge($this->parent->squash($force), $this->data);
} else {
@@ -70,15 +102,19 @@ class HTMLPurifier_PropertyList
/**
* Returns the parent plist.
+ * @return HTMLPurifier_PropertyList
*/
- public function getParent() {
+ public function getParent()
+ {
return $this->parent;
}
/**
* Sets the parent plist.
+ * @param HTMLPurifier_PropertyList $plist Parent plist
*/
- public function setParent($plist) {
+ public function setParent($plist)
+ {
$this->parent = $plist;
}
}
diff --git a/library/HTMLPurifier/PropertyListIterator.php b/library/HTMLPurifier/PropertyListIterator.php
index 8f250443e..15b330ea3 100644
--- a/library/HTMLPurifier/PropertyListIterator.php
+++ b/library/HTMLPurifier/PropertyListIterator.php
@@ -6,27 +6,37 @@
class HTMLPurifier_PropertyListIterator extends FilterIterator
{
+ /**
+ * @type int
+ */
protected $l;
+ /**
+ * @type string
+ */
protected $filter;
/**
- * @param $data Array of data to iterate over
- * @param $filter Optional prefix to only allow values of
+ * @param Iterator $iterator Array of data to iterate over
+ * @param string $filter Optional prefix to only allow values of
*/
- public function __construct(Iterator $iterator, $filter = null) {
+ public function __construct(Iterator $iterator, $filter = null)
+ {
parent::__construct($iterator);
$this->l = strlen($filter);
$this->filter = $filter;
}
- public function accept() {
+ /**
+ * @return bool
+ */
+ public function accept()
+ {
$key = $this->getInnerIterator()->key();
- if( strncmp($key, $this->filter, $this->l) !== 0 ) {
+ if (strncmp($key, $this->filter, $this->l) !== 0) {
return false;
}
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Queue.php b/library/HTMLPurifier/Queue.php
new file mode 100644
index 000000000..f58db9042
--- /dev/null
+++ b/library/HTMLPurifier/Queue.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * A simple array-backed queue, based off of the classic Okasaki
+ * persistent amortized queue. The basic idea is to maintain two
+ * stacks: an input stack and an output stack. When the output
+ * stack runs out, reverse the input stack and use it as the output
+ * stack.
+ *
+ * We don't use the SPL implementation because it's only supported
+ * on PHP 5.3 and later.
+ *
+ * Exercise: Prove that push/pop on this queue take amortized O(1) time.
+ *
+ * Exercise: Extend this queue to be a deque, while preserving amortized
+ * O(1) time. Some care must be taken on rebalancing to avoid quadratic
+ * behaviour caused by repeatedly shuffling data from the input stack
+ * to the output stack and back.
+ */
+class HTMLPurifier_Queue {
+ private $input;
+ private $output;
+
+ public function __construct($input = array()) {
+ $this->input = $input;
+ $this->output = array();
+ }
+
+ /**
+ * Shifts an element off the front of the queue.
+ */
+ public function shift() {
+ if (empty($this->output)) {
+ $this->output = array_reverse($this->input);
+ $this->input = array();
+ }
+ if (empty($this->output)) {
+ return NULL;
+ }
+ return array_pop($this->output);
+ }
+
+ /**
+ * Pushes an element onto the front of the queue.
+ */
+ public function push($x) {
+ array_push($this->input, $x);
+ }
+
+ /**
+ * Checks if it's empty.
+ */
+ public function isEmpty() {
+ return empty($this->input) && empty($this->output);
+ }
+}
diff --git a/library/HTMLPurifier/Strategy.php b/library/HTMLPurifier/Strategy.php
index 246286521..e1ff3b72d 100644
--- a/library/HTMLPurifier/Strategy.php
+++ b/library/HTMLPurifier/Strategy.php
@@ -15,12 +15,12 @@ abstract class HTMLPurifier_Strategy
/**
* Executes the strategy on the tokens.
*
- * @param $tokens Array of HTMLPurifier_Token objects to be operated on.
- * @param $config Configuration options
- * @returns Processed array of token objects.
+ * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token objects to be operated on.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[] Processed array of token objects.
*/
abstract public function execute($tokens, $config, $context);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/Composite.php b/library/HTMLPurifier/Strategy/Composite.php
index 816490b79..d7d35ce7d 100644
--- a/library/HTMLPurifier/Strategy/Composite.php
+++ b/library/HTMLPurifier/Strategy/Composite.php
@@ -8,18 +8,23 @@ abstract class HTMLPurifier_Strategy_Composite extends HTMLPurifier_Strategy
/**
* List of strategies to run tokens through.
+ * @type HTMLPurifier_Strategy[]
*/
protected $strategies = array();
- abstract public function __construct();
-
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
foreach ($this->strategies as $strategy) {
$tokens = $strategy->execute($tokens, $config, $context);
}
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/Core.php b/library/HTMLPurifier/Strategy/Core.php
index d90e15860..4414c17d6 100644
--- a/library/HTMLPurifier/Strategy/Core.php
+++ b/library/HTMLPurifier/Strategy/Core.php
@@ -5,14 +5,13 @@
*/
class HTMLPurifier_Strategy_Core extends HTMLPurifier_Strategy_Composite
{
-
- public function __construct() {
+ public function __construct()
+ {
$this->strategies[] = new HTMLPurifier_Strategy_RemoveForeignElements();
$this->strategies[] = new HTMLPurifier_Strategy_MakeWellFormed();
$this->strategies[] = new HTMLPurifier_Strategy_FixNesting();
$this->strategies[] = new HTMLPurifier_Strategy_ValidateAttributes();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/FixNesting.php b/library/HTMLPurifier/Strategy/FixNesting.php
index f81802391..6fa673db9 100644
--- a/library/HTMLPurifier/Strategy/FixNesting.php
+++ b/library/HTMLPurifier/Strategy/FixNesting.php
@@ -10,12 +10,12 @@
* document type definitions, such as the chameleon nature of ins/del
* tags and global child exclusions.
*
- * The first major objective of this strategy is to iterate through all the
- * nodes (not tokens) of the list of tokens and determine whether or not
- * their children conform to the element's definition. If they do not, the
- * child definition may optionally supply an amended list of elements that
- * is valid or require that the entire node be deleted (and the previous
- * node rescanned).
+ * The first major objective of this strategy is to iterate through all
+ * the nodes and determine whether or not their children conform to the
+ * element's definition. If they do not, the child definition may
+ * optionally supply an amended list of elements that is valid or
+ * require that the entire node be deleted (and the previous node
+ * rescanned).
*
* The second objective is to ensure that explicitly excluded elements of
* an element do not appear in its children. Code that accomplishes this
@@ -25,24 +25,33 @@
* @note Whether or not unrecognized children are silently dropped or
* translated into text depends on the child definitions.
*
- * @todo Enable nodes to be bubbled out of the structure.
+ * @todo Enable nodes to be bubbled out of the structure. This is
+ * easier with our new algorithm.
*/
class HTMLPurifier_Strategy_FixNesting extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
+
//####################################################################//
// Pre-processing
+ // O(n) pass to convert to a tree, so that we can efficiently
+ // refer to substrings
+ $top_node = HTMLPurifier_Arborize::arborize($tokens, $config, $context);
+
// get a copy of the HTML definition
$definition = $config->getHTMLDefinition();
- // insert implicit "parent" node, will be removed at end.
- // DEFINITION CALL
- $parent_name = $definition->info_parent;
- array_unshift($tokens, new HTMLPurifier_Token_Start($parent_name));
- $tokens[] = new HTMLPurifier_Token_End($parent_name);
+ $excludes_enabled = !$config->get('Core.DisableExcludes');
// setup the context variable 'IsInline', for chameleon processing
// is 'false' when we are not inline, 'true' when it must always
@@ -57,272 +66,116 @@ class HTMLPurifier_Strategy_FixNesting extends HTMLPurifier_Strategy
//####################################################################//
// Loop initialization
- // stack that contains the indexes of all parents,
- // $stack[count($stack)-1] being the current parent
- $stack = array();
-
// stack that contains all elements that are excluded
// it is organized by parent elements, similar to $stack,
// but it is only populated when an element with exclusions is
// processed, i.e. there won't be empty exclusions.
- $exclude_stack = array();
+ $exclude_stack = array($definition->info_parent_def->excludes);
// variable that contains the start token while we are processing
// nodes. This enables error reporting to do its job
- $start_token = false;
- $context->register('CurrentToken', $start_token);
+ $node = $top_node;
+ // dummy token
+ list($token, $d) = $node->toTokenPair();
+ $context->register('CurrentNode', $node);
+ $context->register('CurrentToken', $token);
//####################################################################//
// Loop
- // iterate through all start nodes. Determining the start node
- // is complicated so it has been omitted from the loop construct
- for ($i = 0, $size = count($tokens) ; $i < $size; ) {
-
- //################################################################//
- // Gather information on children
-
- // child token accumulator
- $child_tokens = array();
-
- // scroll to the end of this node, report number, and collect
- // all children
- for ($j = $i, $depth = 0; ; $j++) {
- if ($tokens[$j] instanceof HTMLPurifier_Token_Start) {
- $depth++;
- // skip token assignment on first iteration, this is the
- // token we currently are on
- if ($depth == 1) continue;
- } elseif ($tokens[$j] instanceof HTMLPurifier_Token_End) {
- $depth--;
- // skip token assignment on last iteration, this is the
- // end token of the token we're currently on
- if ($depth == 0) break;
- }
- $child_tokens[] = $tokens[$j];
- }
-
- // $i is index of start token
- // $j is index of end token
-
- $start_token = $tokens[$i]; // to make token available via CurrentToken
-
- //################################################################//
- // Gather information on parent
-
- // calculate parent information
- if ($count = count($stack)) {
- $parent_index = $stack[$count-1];
- $parent_name = $tokens[$parent_index]->name;
- if ($parent_index == 0) {
- $parent_def = $definition->info_parent_def;
- } else {
- $parent_def = $definition->info[$parent_name];
- }
- } else {
- // processing as if the parent were the "root" node
- // unknown info, it won't be used anyway, in the future,
- // we may want to enforce one element only (this is
- // necessary for HTML Purifier to clean entire documents
- $parent_index = $parent_name = $parent_def = null;
- }
-
- // calculate context
- if ($is_inline === false) {
- // check if conditions make it inline
- if (!empty($parent_def) && $parent_def->descendants_are_inline) {
- $is_inline = $count - 1;
- }
- } else {
- // check if we're out of inline
- if ($count === $is_inline) {
- $is_inline = false;
- }
- }
-
- //################################################################//
- // Determine whether element is explicitly excluded SGML-style
-
- // determine whether or not element is excluded by checking all
- // parent exclusions. The array should not be very large, two
- // elements at most.
- $excluded = false;
- if (!empty($exclude_stack)) {
- foreach ($exclude_stack as $lookup) {
- if (isset($lookup[$tokens[$i]->name])) {
- $excluded = true;
- // no need to continue processing
- break;
- }
+ // We need to implement a post-order traversal iteratively, to
+ // avoid running into stack space limits. This is pretty tricky
+ // to reason about, so we just manually stack-ify the recursive
+ // variant:
+ //
+ // function f($node) {
+ // foreach ($node->children as $child) {
+ // f($child);
+ // }
+ // validate($node);
+ // }
+ //
+ // Thus, we will represent a stack frame as array($node,
+ // $is_inline, stack of children)
+ // e.g. array_reverse($node->children) - already processed
+ // children.
+
+ $parent_def = $definition->info_parent_def;
+ $stack = array(
+ array($top_node,
+ $parent_def->descendants_are_inline,
+ $parent_def->excludes, // exclusions
+ 0)
+ );
+
+ while (!empty($stack)) {
+ list($node, $is_inline, $excludes, $ix) = array_pop($stack);
+ // recursive call
+ $go = false;
+ $def = empty($stack) ? $definition->info_parent_def : $definition->info[$node->name];
+ while (isset($node->children[$ix])) {
+ $child = $node->children[$ix++];
+ if ($child instanceof HTMLPurifier_Node_Element) {
+ $go = true;
+ $stack[] = array($node, $is_inline, $excludes, $ix);
+ $stack[] = array($child,
+ // ToDo: I don't think it matters if it's def or
+ // child_def, but double check this...
+ $is_inline || $def->descendants_are_inline,
+ empty($def->excludes) ? $excludes
+ : array_merge($excludes, $def->excludes),
+ 0);
+ break;
}
- }
-
- //################################################################//
- // Perform child validation
-
- if ($excluded) {
- // there is an exclusion, remove the entire node
- $result = false;
- $excludes = array(); // not used, but good to initialize anyway
+ };
+ if ($go) continue;
+ list($token, $d) = $node->toTokenPair();
+ // base case
+ if ($excludes_enabled && isset($excludes[$node->name])) {
+ $node->dead = true;
+ if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded');
} else {
- // DEFINITION CALL
- if ($i === 0) {
- // special processing for the first node
- $def = $definition->info_parent_def;
- } else {
- $def = $definition->info[$tokens[$i]->name];
-
+ // XXX I suppose it would be slightly more efficient to
+ // avoid the allocation here and have children
+ // strategies handle it
+ $children = array();
+ foreach ($node->children as $child) {
+ if (!$child->dead) $children[] = $child;
}
-
- if (!empty($def->child)) {
- // have DTD child def validate children
- $result = $def->child->validateChildren(
- $child_tokens, $config, $context);
+ $result = $def->child->validateChildren($children, $config, $context);
+ if ($result === true) {
+ // nop
+ $node->children = $children;
+ } elseif ($result === false) {
+ $node->dead = true;
+ if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node removed');
} else {
- // weird, no child definition, get rid of everything
- $result = false;
- }
-
- // determine whether or not this element has any exclusions
- $excludes = $def->excludes;
- }
-
- // $result is now a bool or array
-
- //################################################################//
- // Process result by interpreting $result
-
- if ($result === true || $child_tokens === $result) {
- // leave the node as is
-
- // register start token as a parental node start
- $stack[] = $i;
-
- // register exclusions if there are any
- if (!empty($excludes)) $exclude_stack[] = $excludes;
-
- // move cursor to next possible start node
- $i++;
-
- } elseif($result === false) {
- // remove entire node
-
- if ($e) {
- if ($excluded) {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded');
- } else {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node removed');
- }
- }
-
- // calculate length of inner tokens and current tokens
- $length = $j - $i + 1;
-
- // perform removal
- array_splice($tokens, $i, $length);
-
- // update size
- $size -= $length;
-
- // there is no start token to register,
- // current node is now the next possible start node
- // unless it turns out that we need to do a double-check
-
- // this is a rought heuristic that covers 100% of HTML's
- // cases and 99% of all other cases. A child definition
- // that would be tricked by this would be something like:
- // ( | a b c) where it's all or nothing. Fortunately,
- // our current implementation claims that that case would
- // not allow empty, even if it did
- if (!$parent_def->child->allow_empty) {
- // we need to do a double-check
- $i = $parent_index;
- array_pop($stack);
- }
-
- // PROJECTED OPTIMIZATION: Process all children elements before
- // reprocessing parent node.
-
- } else {
- // replace node with $result
-
- // calculate length of inner tokens
- $length = $j - $i - 1;
-
- if ($e) {
- if (empty($result) && $length) {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed');
- } else {
- $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized');
+ $node->children = $result;
+ if ($e) {
+ // XXX This will miss mutations of internal nodes. Perhaps defer to the child validators
+ if (empty($result) && !empty($children)) {
+ $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed');
+ } else if ($result != $children) {
+ $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized');
+ }
}
}
-
- // perform replacement
- array_splice($tokens, $i + 1, $length, $result);
-
- // update size
- $size -= $length;
- $size += count($result);
-
- // register start token as a parental node start
- $stack[] = $i;
-
- // register exclusions if there are any
- if (!empty($excludes)) $exclude_stack[] = $excludes;
-
- // move cursor to next possible start node
- $i++;
-
}
-
- //################################################################//
- // Scroll to next start node
-
- // We assume, at this point, that $i is the index of the token
- // that is the first possible new start point for a node.
-
- // Test if the token indeed is a start tag, if not, move forward
- // and test again.
- $size = count($tokens);
- while ($i < $size and !$tokens[$i] instanceof HTMLPurifier_Token_Start) {
- if ($tokens[$i] instanceof HTMLPurifier_Token_End) {
- // pop a token index off the stack if we ended a node
- array_pop($stack);
- // pop an exclusion lookup off exclusion stack if
- // we ended node and that node had exclusions
- if ($i == 0 || $i == $size - 1) {
- // use specialized var if it's the super-parent
- $s_excludes = $definition->info_parent_def->excludes;
- } else {
- $s_excludes = $definition->info[$tokens[$i]->name]->excludes;
- }
- if ($s_excludes) {
- array_pop($exclude_stack);
- }
- }
- $i++;
- }
-
}
//####################################################################//
// Post-processing
- // remove implicit parent tokens at the beginning and end
- array_shift($tokens);
- array_pop($tokens);
-
// remove context variables
$context->destroy('IsInline');
+ $context->destroy('CurrentNode');
$context->destroy('CurrentToken');
//####################################################################//
// Return
- return $tokens;
-
+ return HTMLPurifier_Arborize::flatten($node, $config, $context);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/MakeWellFormed.php b/library/HTMLPurifier/Strategy/MakeWellFormed.php
index c73658400..e389e0011 100644
--- a/library/HTMLPurifier/Strategy/MakeWellFormed.php
+++ b/library/HTMLPurifier/Strategy/MakeWellFormed.php
@@ -2,66 +2,97 @@
/**
* Takes tokens makes them well-formed (balance end tags, etc.)
+ *
+ * Specification of the armor attributes this strategy uses:
+ *
+ * - MakeWellFormed_TagClosedError: This armor field is used to
+ * suppress tag closed errors for certain tokens [TagClosedSuppress],
+ * in particular, if a tag was generated automatically by HTML
+ * Purifier, we may rely on our infrastructure to close it for us
+ * and shouldn't report an error to the user [TagClosedAuto].
*/
class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
{
/**
* Array stream of tokens being processed.
+ * @type HTMLPurifier_Token[]
*/
protected $tokens;
/**
- * Current index in $tokens.
+ * Current token.
+ * @type HTMLPurifier_Token
*/
- protected $t;
+ protected $token;
+
+ /**
+ * Zipper managing the true state.
+ * @type HTMLPurifier_Zipper
+ */
+ protected $zipper;
/**
* Current nesting of elements.
+ * @type array
*/
protected $stack;
/**
* Injectors active in this stream processing.
+ * @type HTMLPurifier_Injector[]
*/
protected $injectors;
/**
* Current instance of HTMLPurifier_Config.
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
* Current instance of HTMLPurifier_Context.
+ * @type HTMLPurifier_Context
*/
protected $context;
- public function execute($tokens, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ * @throws HTMLPurifier_Exception
+ */
+ public function execute($tokens, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
// local variables
$generator = new HTMLPurifier_Generator($config, $context);
$escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
+ // used for autoclose early abortion
+ $global_parent_allowed_elements = $definition->info_parent_def->child->getAllowedElements($config);
$e = $context->get('ErrorCollector', true);
- $t = false; // token index
$i = false; // injector index
- $token = false; // the current token
- $reprocess = false; // whether or not to reprocess the same token
+ list($zipper, $token) = HTMLPurifier_Zipper::fromArray($tokens);
+ if ($token === NULL) {
+ return array();
+ }
+ $reprocess = false; // whether or not to reprocess the same token
$stack = array();
// member variables
- $this->stack =& $stack;
- $this->t =& $t;
- $this->tokens =& $tokens;
- $this->config = $config;
+ $this->stack =& $stack;
+ $this->tokens =& $tokens;
+ $this->token =& $token;
+ $this->zipper =& $zipper;
+ $this->config = $config;
$this->context = $context;
// context variables
$context->register('CurrentNesting', $stack);
- $context->register('InputIndex', $t);
- $context->register('InputTokens', $tokens);
- $context->register('CurrentToken', $token);
+ $context->register('InputZipper', $zipper);
+ $context->register('CurrentToken', $token);
// -- begin INJECTOR --
@@ -73,9 +104,13 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
unset($injectors['Custom']); // special case
foreach ($injectors as $injector => $b) {
// XXX: Fix with a legitimate lookup table of enabled filters
- if (strpos($injector, '.') !== false) continue;
+ if (strpos($injector, '.') !== false) {
+ continue;
+ }
$injector = "HTMLPurifier_Injector_$injector";
- if (!$b) continue;
+ if (!$b) {
+ continue;
+ }
$this->injectors[] = new $injector;
}
foreach ($def_injectors as $injector) {
@@ -83,7 +118,9 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$this->injectors[] = $injector;
}
foreach ($custom_injectors as $injector) {
- if (!$injector) continue;
+ if (!$injector) {
+ continue;
+ }
if (is_string($injector)) {
$injector = "HTMLPurifier_Injector_$injector";
$injector = new $injector;
@@ -95,14 +132,16 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// variables for performance reasons
foreach ($this->injectors as $ix => $injector) {
$error = $injector->prepare($config, $context);
- if (!$error) continue;
+ if (!$error) {
+ continue;
+ }
array_splice($this->injectors, $ix, 1); // rm the injector
trigger_error("Cannot enable {$injector->name} injector because $error is not allowed", E_USER_WARNING);
}
// -- end INJECTOR --
- // a note on punting:
+ // a note on reprocessing:
// In order to reduce code duplication, whenever some code needs
// to make HTML changes in order to make things "correct", the
// new HTML gets sent through the purifier, regardless of its
@@ -111,70 +150,75 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// punt ($reprocess = true; continue;) and it does that for us.
// isset is in loop because $tokens size changes during loop exec
- for (
- $t = 0;
- $t == 0 || isset($tokens[$t - 1]);
- // only increment if we don't need to reprocess
- $reprocess ? $reprocess = false : $t++
- ) {
+ for (;;
+ // only increment if we don't need to reprocess
+ $reprocess ? $reprocess = false : $token = $zipper->next($token)) {
// check for a rewind
- if (is_int($i) && $i >= 0) {
+ if (is_int($i)) {
// possibility: disable rewinding if the current token has a
// rewind set on it already. This would offer protection from
// infinite loop, but might hinder some advanced rewinding.
- $rewind_to = $this->injectors[$i]->getRewind();
- if (is_int($rewind_to) && $rewind_to < $t) {
- if ($rewind_to < 0) $rewind_to = 0;
- while ($t > $rewind_to) {
- $t--;
- $prev = $tokens[$t];
+ $rewind_offset = $this->injectors[$i]->getRewindOffset();
+ if (is_int($rewind_offset)) {
+ for ($j = 0; $j < $rewind_offset; $j++) {
+ if (empty($zipper->front)) break;
+ $token = $zipper->prev($token);
// indicate that other injectors should not process this token,
// but we need to reprocess it
- unset($prev->skip[$i]);
- $prev->rewind = $i;
- if ($prev instanceof HTMLPurifier_Token_Start) array_pop($this->stack);
- elseif ($prev instanceof HTMLPurifier_Token_End) $this->stack[] = $prev->start;
+ unset($token->skip[$i]);
+ $token->rewind = $i;
+ if ($token instanceof HTMLPurifier_Token_Start) {
+ array_pop($this->stack);
+ } elseif ($token instanceof HTMLPurifier_Token_End) {
+ $this->stack[] = $token->start;
+ }
}
}
$i = false;
}
// handle case of document end
- if (!isset($tokens[$t])) {
+ if ($token === NULL) {
// kill processing if stack is empty
- if (empty($this->stack)) break;
+ if (empty($this->stack)) {
+ break;
+ }
// peek
$top_nesting = array_pop($this->stack);
$this->stack[] = $top_nesting;
- // send error
+ // send error [TagClosedSuppress]
if ($e && !isset($top_nesting->armor['MakeWellFormed_TagClosedError'])) {
$e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by document end', $top_nesting);
}
// append, don't splice, since this is the end
- $tokens[] = new HTMLPurifier_Token_End($top_nesting->name);
+ $token = new HTMLPurifier_Token_End($top_nesting->name);
// punt!
$reprocess = true;
continue;
}
- $token = $tokens[$t];
-
- //echo '<br>'; printTokens($tokens, $t); printTokens($this->stack);
+ //echo '<br>'; printZipper($zipper, $token);//printTokens($this->stack);
//flush();
// quick-check: if it's not a tag, no need to process
if (empty($token->is_tag)) {
if ($token instanceof HTMLPurifier_Token_Text) {
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleText($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ // XXX fuckup
+ $r = $token;
+ $injector->handleText($r);
+ $token = $this->processToken($r, $i);
$reprocess = true;
break;
}
@@ -193,12 +237,22 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$ok = false;
if ($type === 'empty' && $token instanceof HTMLPurifier_Token_Start) {
// claims to be a start tag but is empty
- $token = new HTMLPurifier_Token_Empty($token->name, $token->attr);
+ $token = new HTMLPurifier_Token_Empty(
+ $token->name,
+ $token->attr,
+ $token->line,
+ $token->col,
+ $token->armor
+ );
$ok = true;
} elseif ($type && $type !== 'empty' && $token instanceof HTMLPurifier_Token_Empty) {
// claims to be empty but really is a start tag
- $this->swap(new HTMLPurifier_Token_End($token->name));
- $this->insertBefore(new HTMLPurifier_Token_Start($token->name, $token->attr));
+ // NB: this assignment is required
+ $old_token = $token;
+ $token = new HTMLPurifier_Token_End($token->name);
+ $token = $this->insertBefore(
+ new HTMLPurifier_Token_Start($old_token->name, $old_token->attr, $old_token->line, $old_token->col, $old_token->armor)
+ );
// punt (since we had to modify the input stream in a non-trivial way)
$reprocess = true;
continue;
@@ -211,55 +265,96 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// ...unless they also have to close their parent
if (!empty($this->stack)) {
+ // Performance note: you might think that it's rather
+ // inefficient, recalculating the autoclose information
+ // for every tag that a token closes (since when we
+ // do an autoclose, we push a new token into the
+ // stream and then /process/ that, before
+ // re-processing this token.) But this is
+ // necessary, because an injector can make an
+ // arbitrary transformations to the autoclosing
+ // tokens we introduce, so things may have changed
+ // in the meantime. Also, doing the inefficient thing is
+ // "easy" to reason about (for certain perverse definitions
+ // of "easy")
+
$parent = array_pop($this->stack);
$this->stack[] = $parent;
+ $parent_def = null;
+ $parent_elements = null;
+ $autoclose = false;
if (isset($definition->info[$parent->name])) {
- $elements = $definition->info[$parent->name]->child->getAllowedElements($config);
- $autoclose = !isset($elements[$token->name]);
- } else {
- $autoclose = false;
+ $parent_def = $definition->info[$parent->name];
+ $parent_elements = $parent_def->child->getAllowedElements($config);
+ $autoclose = !isset($parent_elements[$token->name]);
}
if ($autoclose && $definition->info[$token->name]->wrap) {
- // Check if an element can be wrapped by another
- // element to make it valid in a context (for
+ // Check if an element can be wrapped by another
+ // element to make it valid in a context (for
// example, <ul><ul> needs a <li> in between)
$wrapname = $definition->info[$token->name]->wrap;
$wrapdef = $definition->info[$wrapname];
$elements = $wrapdef->child->getAllowedElements($config);
- $parent_elements = $definition->info[$parent->name]->child->getAllowedElements($config);
if (isset($elements[$token->name]) && isset($parent_elements[$wrapname])) {
$newtoken = new HTMLPurifier_Token_Start($wrapname);
- $this->insertBefore($newtoken);
+ $token = $this->insertBefore($newtoken);
$reprocess = true;
continue;
}
}
$carryover = false;
- if ($autoclose && $definition->info[$parent->name]->formatting) {
+ if ($autoclose && $parent_def->formatting) {
$carryover = true;
}
if ($autoclose) {
- // errors need to be updated
- $new_token = new HTMLPurifier_Token_End($parent->name);
- $new_token->start = $parent;
- if ($carryover) {
- $element = clone $parent;
- $element->armor['MakeWellFormed_TagClosedError'] = true;
- $element->carryover = true;
- $this->processToken(array($new_token, $token, $element));
- } else {
- $this->insertBefore($new_token);
+ // check if this autoclose is doomed to fail
+ // (this rechecks $parent, which his harmless)
+ $autoclose_ok = isset($global_parent_allowed_elements[$token->name]);
+ if (!$autoclose_ok) {
+ foreach ($this->stack as $ancestor) {
+ $elements = $definition->info[$ancestor->name]->child->getAllowedElements($config);
+ if (isset($elements[$token->name])) {
+ $autoclose_ok = true;
+ break;
+ }
+ if ($definition->info[$token->name]->wrap) {
+ $wrapname = $definition->info[$token->name]->wrap;
+ $wrapdef = $definition->info[$wrapname];
+ $wrap_elements = $wrapdef->child->getAllowedElements($config);
+ if (isset($wrap_elements[$token->name]) && isset($elements[$wrapname])) {
+ $autoclose_ok = true;
+ break;
+ }
+ }
+ }
}
- if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) {
- if (!$carryover) {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent);
+ if ($autoclose_ok) {
+ // errors need to be updated
+ $new_token = new HTMLPurifier_Token_End($parent->name);
+ $new_token->start = $parent;
+ // [TagClosedSuppress]
+ if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) {
+ if (!$carryover) {
+ $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent);
+ } else {
+ $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent);
+ }
+ }
+ if ($carryover) {
+ $element = clone $parent;
+ // [TagClosedAuto]
+ $element->armor['MakeWellFormed_TagClosedError'] = true;
+ $element->carryover = true;
+ $token = $this->processToken(array($new_token, $token, $element));
} else {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent);
+ $token = $this->insertBefore($new_token);
}
+ } else {
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -271,20 +366,26 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($ok) {
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleElement($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ $r = $token;
+ $injector->handleElement($r);
+ $token = $this->processToken($r, $i);
$reprocess = true;
break;
}
if (!$reprocess) {
// ah, nothing interesting happened; do normal processing
- $this->swap($token);
if ($token instanceof HTMLPurifier_Token_Start) {
$this->stack[] = $token;
} elseif ($token instanceof HTMLPurifier_Token_End) {
- throw new HTMLPurifier_Exception('Improper handling of end tag in start code; possible error in MakeWellFormed');
+ throw new HTMLPurifier_Exception(
+ 'Improper handling of end tag in start code; possible error in MakeWellFormed'
+ );
}
}
continue;
@@ -298,13 +399,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// make sure that we have something open
if (empty($this->stack)) {
if ($escape_invalid_tags) {
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text');
- $this->swap(new HTMLPurifier_Token_Text(
- $generator->generateFromToken($token)
- ));
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text');
+ }
+ $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
} else {
- $this->remove();
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed');
+ }
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -318,10 +421,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($current_parent->name == $token->name) {
$token->start = $current_parent;
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleEnd($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ $r = $token;
+ $injector->handleEnd($r);
+ $token = $this->processToken($r, $i);
$this->stack[] = $current_parent;
$reprocess = true;
break;
@@ -349,13 +457,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// we didn't find the tag, so remove
if ($skipped_tags === false) {
if ($escape_invalid_tags) {
- $this->swap(new HTMLPurifier_Token_Text(
- $generator->generateFromToken($token)
- ));
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text');
+ }
+ $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
} else {
- $this->remove();
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed');
+ }
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -366,7 +476,7 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($e) {
for ($j = $c - 1; $j > 0; $j--) {
// notice we exclude $j == 0, i.e. the current ending tag, from
- // the errors...
+ // the errors... [TagClosedSuppress]
if (!isset($skipped_tags[$j]->armor['MakeWellFormed_TagClosedError'])) {
$e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by element end', $skipped_tags[$j]);
}
@@ -381,24 +491,24 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$new_token->start = $skipped_tags[$j];
array_unshift($replace, $new_token);
if (isset($definition->info[$new_token->name]) && $definition->info[$new_token->name]->formatting) {
+ // [TagClosedAuto]
$element = clone $skipped_tags[$j];
$element->carryover = true;
$element->armor['MakeWellFormed_TagClosedError'] = true;
$replace[] = $element;
}
}
- $this->processToken($replace);
+ $token = $this->processToken($replace);
$reprocess = true;
continue;
}
- $context->destroy('CurrentNesting');
- $context->destroy('InputTokens');
- $context->destroy('InputIndex');
$context->destroy('CurrentToken');
+ $context->destroy('CurrentNesting');
+ $context->destroy('InputZipper');
- unset($this->injectors, $this->stack, $this->tokens, $this->t);
- return $tokens;
+ unset($this->injectors, $this->stack, $this->tokens);
+ return $zipper->toArray($token);
}
/**
@@ -417,25 +527,38 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
* If $token is an integer, that number of tokens (with the first token
* being the current one) will be deleted.
*
- * @param $token Token substitution value
- * @param $injector Injector that performed the substitution; default is if
+ * @param HTMLPurifier_Token|array|int|bool $token Token substitution value
+ * @param HTMLPurifier_Injector|int $injector Injector that performed the substitution; default is if
* this is not an injector related operation.
+ * @throws HTMLPurifier_Exception
*/
- protected function processToken($token, $injector = -1) {
-
+ protected function processToken($token, $injector = -1)
+ {
// normalize forms of token
- if (is_object($token)) $token = array(1, $token);
- if (is_int($token)) $token = array($token);
- if ($token === false) $token = array(1);
- if (!is_array($token)) throw new HTMLPurifier_Exception('Invalid token type from injector');
- if (!is_int($token[0])) array_unshift($token, 1);
- if ($token[0] === 0) throw new HTMLPurifier_Exception('Deleting zero tokens is not valid');
+ if (is_object($token)) {
+ $token = array(1, $token);
+ }
+ if (is_int($token)) {
+ $token = array($token);
+ }
+ if ($token === false) {
+ $token = array(1);
+ }
+ if (!is_array($token)) {
+ throw new HTMLPurifier_Exception('Invalid token type from injector');
+ }
+ if (!is_int($token[0])) {
+ array_unshift($token, 1);
+ }
+ if ($token[0] === 0) {
+ throw new HTMLPurifier_Exception('Deleting zero tokens is not valid');
+ }
// $token is now an array with the following form:
// array(number nodes to delete, new node 1, new node 2, ...)
$delete = array_shift($token);
- $old = array_splice($this->tokens, $this->t, $delete, $token);
+ list($old, $r) = $this->zipper->splice($this->token, $delete, $token);
if ($injector > -1) {
// determine appropriate skips
@@ -446,30 +569,32 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
}
}
- }
+ return $r;
- /**
- * Inserts a token before the current token. Cursor now points to this token
- */
- private function insertBefore($token) {
- array_splice($this->tokens, $this->t, 0, array($token));
}
/**
- * Removes current token. Cursor now points to new token occupying previously
- * occupied space.
+ * Inserts a token before the current token. Cursor now points to
+ * this token. You must reprocess after this.
+ * @param HTMLPurifier_Token $token
*/
- private function remove() {
- array_splice($this->tokens, $this->t, 1);
+ private function insertBefore($token)
+ {
+ // NB not $this->zipper->insertBefore(), due to positioning
+ // differences
+ $splice = $this->zipper->splice($this->token, 0, array($token));
+
+ return $splice[1];
}
/**
- * Swap current token with new token. Cursor points to new token (no change).
+ * Removes current token. Cursor now points to new token occupying previously
+ * occupied space. You must reprocess after this.
*/
- private function swap($token) {
- $this->tokens[$this->t] = $token;
+ private function remove()
+ {
+ return $this->zipper->delete();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/RemoveForeignElements.php b/library/HTMLPurifier/Strategy/RemoveForeignElements.php
index cf3a33e40..1a8149ecc 100644
--- a/library/HTMLPurifier/Strategy/RemoveForeignElements.php
+++ b/library/HTMLPurifier/Strategy/RemoveForeignElements.php
@@ -11,19 +11,29 @@
class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
$generator = new HTMLPurifier_Generator($config, $context);
$result = array();
$escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
- $remove_invalid_img = $config->get('Core.RemoveInvalidImg');
+ $remove_invalid_img = $config->get('Core.RemoveInvalidImg');
// currently only used to determine if comments should be kept
$trusted = $config->get('HTML.Trusted');
+ $comment_lookup = $config->get('HTML.AllowedComments');
+ $comment_regexp = $config->get('HTML.AllowedCommentsRegexp');
+ $check_comments = $comment_lookup !== array() || $comment_regexp !== null;
$remove_script_contents = $config->get('Core.RemoveScriptContents');
- $hidden_elements = $config->get('Core.HiddenElements');
+ $hidden_elements = $config->get('Core.HiddenElements');
// remove script contents compatibility
if ($remove_script_contents === true) {
@@ -48,34 +58,31 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
$e =& $context->get('ErrorCollector');
}
- foreach($tokens as $token) {
+ foreach ($tokens as $token) {
if ($remove_until) {
if (empty($token->is_tag) || $token->name !== $remove_until) {
continue;
}
}
- if (!empty( $token->is_tag )) {
+ if (!empty($token->is_tag)) {
// DEFINITION CALL
// before any processing, try to transform the element
- if (
- isset($definition->info_tag_transform[$token->name])
- ) {
+ if (isset($definition->info_tag_transform[$token->name])) {
$original_name = $token->name;
// there is a transformation for this tag
// DEFINITION CALL
$token = $definition->
- info_tag_transform[$token->name]->
- transform($token, $config, $context);
- if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name);
+ info_tag_transform[$token->name]->transform($token, $config, $context);
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name);
+ }
}
if (isset($definition->info[$token->name])) {
-
// mostly everything's good, but
// we need to make sure required attributes are in order
- if (
- ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) &&
+ if (($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) &&
$definition->info[$token->name]->required_attr &&
($token->name != 'img' || $remove_invalid_img) // ensure config option still works
) {
@@ -88,7 +95,13 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
}
}
if (!$ok) {
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Missing required attribute', $name);
+ if ($e) {
+ $e->send(
+ E_ERROR,
+ 'Strategy_RemoveForeignElements: Missing required attribute',
+ $name
+ );
+ }
continue;
}
$token->armor['ValidateAttributes'] = true;
@@ -102,7 +115,9 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
} elseif ($escape_invalid_tags) {
// invalid tag, generate HTML representation and insert in
- if ($e) $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text');
+ }
$token = new HTMLPurifier_Token_Text(
$generator->generateFromToken($token)
);
@@ -117,9 +132,13 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
} else {
$remove_until = false;
}
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed');
+ if ($e) {
+ $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed');
+ }
} else {
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed');
+ if ($e) {
+ $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed');
+ }
}
continue;
}
@@ -128,26 +147,46 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
if ($textify_comments !== false) {
$data = $token->data;
$token = new HTMLPurifier_Token_Text($data);
- } elseif ($trusted) {
- // keep, but perform comment cleaning
+ } elseif ($trusted || $check_comments) {
+ // always cleanup comments
+ $trailing_hyphen = false;
if ($e) {
// perform check whether or not there's a trailing hyphen
if (substr($token->data, -1) == '-') {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed');
+ $trailing_hyphen = true;
}
}
$token->data = rtrim($token->data, '-');
$found_double_hyphen = false;
while (strpos($token->data, '--') !== false) {
- if ($e && !$found_double_hyphen) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
- }
- $found_double_hyphen = true; // prevent double-erroring
+ $found_double_hyphen = true;
$token->data = str_replace('--', '-', $token->data);
}
+ if ($trusted || !empty($comment_lookup[trim($token->data)]) ||
+ ($comment_regexp !== null && preg_match($comment_regexp, trim($token->data)))) {
+ // OK good
+ if ($e) {
+ if ($trailing_hyphen) {
+ $e->send(
+ E_NOTICE,
+ 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed'
+ );
+ }
+ if ($found_double_hyphen) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
+ }
+ }
+ } else {
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ }
+ continue;
+ }
} else {
// strip comments
- if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ }
continue;
}
} elseif ($token instanceof HTMLPurifier_Token_Text) {
@@ -160,12 +199,9 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
// we removed tokens until the end, throw error
$e->send(E_ERROR, 'Strategy_RemoveForeignElements: Token removed to end', $remove_until);
}
-
$context->destroy('CurrentToken');
-
return $result;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/ValidateAttributes.php b/library/HTMLPurifier/Strategy/ValidateAttributes.php
index c3328a9d4..fbb3d27c8 100644
--- a/library/HTMLPurifier/Strategy/ValidateAttributes.php
+++ b/library/HTMLPurifier/Strategy/ValidateAttributes.php
@@ -7,8 +7,14 @@
class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
// setup validator
$validator = new HTMLPurifier_AttrValidator();
@@ -19,21 +25,21 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
// only process tokens that have attributes,
// namely start and empty tags
- if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) continue;
+ if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) {
+ continue;
+ }
// skip tokens that are armored
- if (!empty($token->armor['ValidateAttributes'])) continue;
+ if (!empty($token->armor['ValidateAttributes'])) {
+ continue;
+ }
// note that we have no facilities here for removing tokens
$validator->validateToken($token, $config, $context);
-
- $tokens[$key] = $token; // for PHP 4
}
$context->destroy('CurrentToken');
-
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/StringHash.php b/library/HTMLPurifier/StringHash.php
index 62085c5c2..c07370197 100644
--- a/library/HTMLPurifier/StringHash.php
+++ b/library/HTMLPurifier/StringHash.php
@@ -10,28 +10,36 @@
*/
class HTMLPurifier_StringHash extends ArrayObject
{
+ /**
+ * @type array
+ */
protected $accessed = array();
/**
* Retrieves a value, and logs the access.
+ * @param mixed $index
+ * @return mixed
*/
- public function offsetGet($index) {
+ public function offsetGet($index)
+ {
$this->accessed[$index] = true;
return parent::offsetGet($index);
}
/**
* Returns a lookup array of all array indexes that have been accessed.
- * @return Array in form array($index => true).
+ * @return array in form array($index => true).
*/
- public function getAccessed() {
+ public function getAccessed()
+ {
return $this->accessed;
}
/**
* Resets the access array.
*/
- public function resetAccessed() {
+ public function resetAccessed()
+ {
$this->accessed = array();
}
}
diff --git a/library/HTMLPurifier/StringHashParser.php b/library/HTMLPurifier/StringHashParser.php
index f3e70c712..7c73f8083 100644
--- a/library/HTMLPurifier/StringHashParser.php
+++ b/library/HTMLPurifier/StringHashParser.php
@@ -28,15 +28,25 @@
class HTMLPurifier_StringHashParser
{
+ /**
+ * @type string
+ */
public $default = 'ID';
/**
* Parses a file that contains a single string-hash.
+ * @param string $file
+ * @return array
*/
- public function parseFile($file) {
- if (!file_exists($file)) return false;
+ public function parseFile($file)
+ {
+ if (!file_exists($file)) {
+ return false;
+ }
$fh = fopen($file, 'r');
- if (!$fh) return false;
+ if (!$fh) {
+ return false;
+ }
$ret = $this->parseHandle($fh);
fclose($fh);
return $ret;
@@ -44,12 +54,19 @@ class HTMLPurifier_StringHashParser
/**
* Parses a file that contains multiple string-hashes delimited by '----'
+ * @param string $file
+ * @return array
*/
- public function parseMultiFile($file) {
- if (!file_exists($file)) return false;
+ public function parseMultiFile($file)
+ {
+ if (!file_exists($file)) {
+ return false;
+ }
$ret = array();
$fh = fopen($file, 'r');
- if (!$fh) return false;
+ if (!$fh) {
+ return false;
+ }
while (!feof($fh)) {
$ret[] = $this->parseHandle($fh);
}
@@ -62,26 +79,36 @@ class HTMLPurifier_StringHashParser
* @note While it's possible to simulate in-memory parsing by using
* custom stream wrappers, if such a use-case arises we should
* factor out the file handle into its own class.
- * @param $fh File handle with pointer at start of valid string-hash
+ * @param resource $fh File handle with pointer at start of valid string-hash
* block.
+ * @return array
*/
- protected function parseHandle($fh) {
+ protected function parseHandle($fh)
+ {
$state = false;
$single = false;
$ret = array();
do {
$line = fgets($fh);
- if ($line === false) break;
+ if ($line === false) {
+ break;
+ }
$line = rtrim($line, "\n\r");
- if (!$state && $line === '') continue;
- if ($line === '----') break;
+ if (!$state && $line === '') {
+ continue;
+ }
+ if ($line === '----') {
+ break;
+ }
if (strncmp('--#', $line, 3) === 0) {
// Comment
continue;
} elseif (strncmp('--', $line, 2) === 0) {
// Multiline declaration
$state = trim($line, '- ');
- if (!isset($ret[$state])) $ret[$state] = '';
+ if (!isset($ret[$state])) {
+ $ret[$state] = '';
+ }
continue;
} elseif (!$state) {
$single = true;
@@ -104,7 +131,6 @@ class HTMLPurifier_StringHashParser
} while (!feof($fh));
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TagTransform.php b/library/HTMLPurifier/TagTransform.php
index 210a44721..7b8d83343 100644
--- a/library/HTMLPurifier/TagTransform.php
+++ b/library/HTMLPurifier/TagTransform.php
@@ -8,14 +8,15 @@ abstract class HTMLPurifier_TagTransform
/**
* Tag name to transform the tag to.
+ * @type string
*/
public $transform_to;
/**
* Transforms the obsolete tag into the valid tag.
- * @param $tag Tag to be transformed.
- * @param $config Mandatory HTMLPurifier_Config object
- * @param $context Mandatory HTMLPurifier_Context object
+ * @param HTMLPurifier_Token_Tag $tag Tag to be transformed.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
*/
abstract public function transform($tag, $config, $context);
@@ -23,14 +24,14 @@ abstract class HTMLPurifier_TagTransform
* Prepends CSS properties to the style attribute, creating the
* attribute if it doesn't exist.
* @warning Copied over from AttrTransform, be sure to keep in sync
- * @param $attr Attribute array to process (passed by reference)
- * @param $css CSS to prepend
+ * @param array $attr Attribute array to process (passed by reference)
+ * @param string $css CSS to prepend
*/
- protected function prependCSS(&$attr, $css) {
+ protected function prependCSS(&$attr, $css)
+ {
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
$attr['style'] = $css . $attr['style'];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TagTransform/Font.php b/library/HTMLPurifier/TagTransform/Font.php
index ed2463786..7853d90bc 100644
--- a/library/HTMLPurifier/TagTransform/Font.php
+++ b/library/HTMLPurifier/TagTransform/Font.php
@@ -17,9 +17,14 @@
*/
class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
{
-
+ /**
+ * @type string
+ */
public $transform_to = 'span';
+ /**
+ * @type array
+ */
protected $_size_lookup = array(
'0' => 'xx-small',
'1' => 'xx-small',
@@ -37,8 +42,14 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
'+4' => '300%'
);
- public function transform($tag, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token_Tag $tag
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token_End|string
+ */
+ public function transform($tag, $config, $context)
+ {
if ($tag instanceof HTMLPurifier_Token_End) {
$new_tag = clone $tag;
$new_tag->name = $this->transform_to;
@@ -63,17 +74,25 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
// handle size transform
if (isset($attr['size'])) {
// normalize large numbers
- if ($attr['size']{0} == '+' || $attr['size']{0} == '-') {
- $size = (int) $attr['size'];
- if ($size < -2) $attr['size'] = '-2';
- if ($size > 4) $attr['size'] = '+4';
- } else {
- $size = (int) $attr['size'];
- if ($size > 7) $attr['size'] = '7';
+ if ($attr['size'] !== '') {
+ if ($attr['size']{0} == '+' || $attr['size']{0} == '-') {
+ $size = (int)$attr['size'];
+ if ($size < -2) {
+ $attr['size'] = '-2';
+ }
+ if ($size > 4) {
+ $attr['size'] = '+4';
+ }
+ } else {
+ $size = (int)$attr['size'];
+ if ($size > 7) {
+ $attr['size'] = '7';
+ }
+ }
}
if (isset($this->_size_lookup[$attr['size']])) {
$prepend_style .= 'font-size:' .
- $this->_size_lookup[$attr['size']] . ';';
+ $this->_size_lookup[$attr['size']] . ';';
}
unset($attr['size']);
}
@@ -89,7 +108,6 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
$new_tag->attr = $attr;
return $new_tag;
-
}
}
diff --git a/library/HTMLPurifier/TagTransform/Simple.php b/library/HTMLPurifier/TagTransform/Simple.php
index 0e36130f2..71bf10b91 100644
--- a/library/HTMLPurifier/TagTransform/Simple.php
+++ b/library/HTMLPurifier/TagTransform/Simple.php
@@ -7,19 +7,29 @@
*/
class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
{
-
+ /**
+ * @type string
+ */
protected $style;
/**
- * @param $transform_to Tag name to transform to.
- * @param $style CSS style to add to the tag
+ * @param string $transform_to Tag name to transform to.
+ * @param string $style CSS style to add to the tag
*/
- public function __construct($transform_to, $style = null) {
+ public function __construct($transform_to, $style = null)
+ {
$this->transform_to = $transform_to;
$this->style = $style;
}
- public function transform($tag, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token_Tag $tag
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function transform($tag, $config, $context)
+ {
$new_tag = clone $tag;
$new_tag->name = $this->transform_to;
if (!is_null($this->style) &&
@@ -29,7 +39,6 @@ class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
}
return $new_tag;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token.php b/library/HTMLPurifier/Token.php
index 7900e6cb1..85b85e072 100644
--- a/library/HTMLPurifier/Token.php
+++ b/library/HTMLPurifier/Token.php
@@ -3,55 +3,98 @@
/**
* Abstract base token class that all others inherit from.
*/
-class HTMLPurifier_Token {
- public $line; /**< Line number node was on in source document. Null if unknown. */
- public $col; /**< Column of line node was on in source document. Null if unknown. */
+abstract class HTMLPurifier_Token
+{
+ /**
+ * Line number node was on in source document. Null if unknown.
+ * @type int
+ */
+ public $line;
+
+ /**
+ * Column of line node was on in source document. Null if unknown.
+ * @type int
+ */
+ public $col;
/**
* Lookup array of processing that this token is exempt from.
* Currently, valid values are "ValidateAttributes" and
* "MakeWellFormed_TagClosedError"
+ * @type array
*/
public $armor = array();
/**
* Used during MakeWellFormed.
+ * @type
*/
public $skip;
+
+ /**
+ * @type
+ */
public $rewind;
+
+ /**
+ * @type
+ */
public $carryover;
- public function __get($n) {
- if ($n === 'type') {
- trigger_error('Deprecated type property called; use instanceof', E_USER_NOTICE);
- switch (get_class($this)) {
- case 'HTMLPurifier_Token_Start': return 'start';
- case 'HTMLPurifier_Token_Empty': return 'empty';
- case 'HTMLPurifier_Token_End': return 'end';
- case 'HTMLPurifier_Token_Text': return 'text';
- case 'HTMLPurifier_Token_Comment': return 'comment';
- default: return null;
+ /**
+ * @param string $n
+ * @return null|string
+ */
+ public function __get($n)
+ {
+ if ($n === 'type') {
+ trigger_error('Deprecated type property called; use instanceof', E_USER_NOTICE);
+ switch (get_class($this)) {
+ case 'HTMLPurifier_Token_Start':
+ return 'start';
+ case 'HTMLPurifier_Token_Empty':
+ return 'empty';
+ case 'HTMLPurifier_Token_End':
+ return 'end';
+ case 'HTMLPurifier_Token_Text':
+ return 'text';
+ case 'HTMLPurifier_Token_Comment':
+ return 'comment';
+ default:
+ return null;
+ }
}
- }
}
/**
* Sets the position of the token in the source document.
+ * @param int $l
+ * @param int $c
*/
- public function position($l = null, $c = null) {
+ public function position($l = null, $c = null)
+ {
$this->line = $l;
- $this->col = $c;
+ $this->col = $c;
}
/**
* Convenience function for DirectLex settings line/col position.
+ * @param int $l
+ * @param int $c
*/
- public function rawPosition($l, $c) {
- if ($c === -1) $l++;
+ public function rawPosition($l, $c)
+ {
+ if ($c === -1) {
+ $l++;
+ }
$this->line = $l;
- $this->col = $c;
+ $this->col = $c;
}
+ /**
+ * Converts a token into its corresponding node.
+ */
+ abstract public function toNode();
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Comment.php b/library/HTMLPurifier/Token/Comment.php
index dc6bdcabb..23453c705 100644
--- a/library/HTMLPurifier/Token/Comment.php
+++ b/library/HTMLPurifier/Token/Comment.php
@@ -5,17 +5,33 @@
*/
class HTMLPurifier_Token_Comment extends HTMLPurifier_Token
{
- public $data; /**< Character data within comment. */
+ /**
+ * Character data within comment.
+ * @type string
+ */
+ public $data;
+
+ /**
+ * @type bool
+ */
public $is_whitespace = true;
+
/**
* Transparent constructor.
*
- * @param $data String comment data.
+ * @param string $data String comment data.
+ * @param int $line
+ * @param int $col
*/
- public function __construct($data, $line = null, $col = null) {
+ public function __construct($data, $line = null, $col = null)
+ {
$this->data = $data;
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
+ }
+
+ public function toNode() {
+ return new HTMLPurifier_Node_Comment($this->data, $this->line, $this->col);
}
}
diff --git a/library/HTMLPurifier/Token/Empty.php b/library/HTMLPurifier/Token/Empty.php
index 2a82b47ad..78a95f555 100644
--- a/library/HTMLPurifier/Token/Empty.php
+++ b/library/HTMLPurifier/Token/Empty.php
@@ -5,7 +5,11 @@
*/
class HTMLPurifier_Token_Empty extends HTMLPurifier_Token_Tag
{
-
+ public function toNode() {
+ $n = parent::toNode();
+ $n->empty = true;
+ return $n;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/End.php b/library/HTMLPurifier/Token/End.php
index 353e79daf..59b38fdc5 100644
--- a/library/HTMLPurifier/Token/End.php
+++ b/library/HTMLPurifier/Token/End.php
@@ -10,10 +10,15 @@
class HTMLPurifier_Token_End extends HTMLPurifier_Token_Tag
{
/**
- * Token that started this node. Added by MakeWellFormed. Please
- * do not edit this!
+ * Token that started this node.
+ * Added by MakeWellFormed. Please do not edit this!
+ * @type HTMLPurifier_Token
*/
public $start;
+
+ public function toNode() {
+ throw new Exception("HTMLPurifier_Token_End->toNode not supported!");
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Start.php b/library/HTMLPurifier/Token/Start.php
index e0e14fc62..019f317ad 100644
--- a/library/HTMLPurifier/Token/Start.php
+++ b/library/HTMLPurifier/Token/Start.php
@@ -5,7 +5,6 @@
*/
class HTMLPurifier_Token_Start extends HTMLPurifier_Token_Tag
{
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Tag.php b/library/HTMLPurifier/Token/Tag.php
index 798be028e..d643fa64e 100644
--- a/library/HTMLPurifier/Token/Tag.php
+++ b/library/HTMLPurifier/Token/Tag.php
@@ -3,13 +3,14 @@
/**
* Abstract class of a tag token (start, end or empty), and its behavior.
*/
-class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
+abstract class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
{
/**
* Static bool marker that indicates the class is a tag.
*
* This allows us to check objects with <tt>!empty($obj->is_tag)</tt>
* without having to use a function call <tt>is_a()</tt>.
+ * @type bool
*/
public $is_tag = true;
@@ -19,21 +20,27 @@ class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
* @note Strictly speaking, XML tags are case sensitive, so we shouldn't
* be lower-casing them, but these tokens cater to HTML tags, which are
* insensitive.
+ * @type string
*/
public $name;
/**
* Associative array of the tag's attributes.
+ * @type array
*/
public $attr = array();
/**
* Non-overloaded constructor, which lower-cases passed tag name.
*
- * @param $name String name.
- * @param $attr Associative array of attributes.
+ * @param string $name String name.
+ * @param array $attr Associative array of attributes.
+ * @param int $line
+ * @param int $col
+ * @param array $armor
*/
- public function __construct($name, $attr = array(), $line = null, $col = null) {
+ public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array())
+ {
$this->name = ctype_lower($name) ? $name : strtolower($name);
foreach ($attr as $key => $value) {
// normalization only necessary when key is not lowercase
@@ -49,7 +56,12 @@ class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
}
$this->attr = $attr;
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
+ $this->armor = $armor;
+ }
+
+ public function toNode() {
+ return new HTMLPurifier_Node_Element($this->name, $this->attr, $this->line, $this->col, $this->armor);
}
}
diff --git a/library/HTMLPurifier/Token/Text.php b/library/HTMLPurifier/Token/Text.php
index 82efd823d..f26a1c211 100644
--- a/library/HTMLPurifier/Token/Text.php
+++ b/library/HTMLPurifier/Token/Text.php
@@ -12,22 +12,42 @@
class HTMLPurifier_Token_Text extends HTMLPurifier_Token
{
- public $name = '#PCDATA'; /**< PCDATA tag name compatible with DTD. */
- public $data; /**< Parsed character data of text. */
- public $is_whitespace; /**< Bool indicating if node is whitespace. */
+ /**
+ * @type string
+ */
+ public $name = '#PCDATA';
+ /**< PCDATA tag name compatible with DTD. */
+
+ /**
+ * @type string
+ */
+ public $data;
+ /**< Parsed character data of text. */
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace;
+
+ /**< Bool indicating if node is whitespace. */
/**
* Constructor, accepts data and determines if it is whitespace.
- *
- * @param $data String parsed character data.
+ * @param string $data String parsed character data.
+ * @param int $line
+ * @param int $col
*/
- public function __construct($data, $line = null, $col = null) {
+ public function __construct($data, $line = null, $col = null)
+ {
$this->data = $data;
$this->is_whitespace = ctype_space($data);
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
}
+ public function toNode() {
+ return new HTMLPurifier_Node_Text($this->data, $this->is_whitespace, $this->line, $this->col);
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TokenFactory.php b/library/HTMLPurifier/TokenFactory.php
index 7cf48fb41..dea2446b9 100644
--- a/library/HTMLPurifier/TokenFactory.php
+++ b/library/HTMLPurifier/TokenFactory.php
@@ -13,32 +13,53 @@
*/
class HTMLPurifier_TokenFactory
{
+ // p stands for prototype
/**
- * Prototypes that will be cloned.
- * @private
+ * @type HTMLPurifier_Token_Start
*/
- // p stands for prototype
- private $p_start, $p_end, $p_empty, $p_text, $p_comment;
+ private $p_start;
+
+ /**
+ * @type HTMLPurifier_Token_End
+ */
+ private $p_end;
+
+ /**
+ * @type HTMLPurifier_Token_Empty
+ */
+ private $p_empty;
+
+ /**
+ * @type HTMLPurifier_Token_Text
+ */
+ private $p_text;
+
+ /**
+ * @type HTMLPurifier_Token_Comment
+ */
+ private $p_comment;
/**
* Generates blank prototypes for cloning.
*/
- public function __construct() {
- $this->p_start = new HTMLPurifier_Token_Start('', array());
- $this->p_end = new HTMLPurifier_Token_End('');
- $this->p_empty = new HTMLPurifier_Token_Empty('', array());
- $this->p_text = new HTMLPurifier_Token_Text('');
- $this->p_comment= new HTMLPurifier_Token_Comment('');
+ public function __construct()
+ {
+ $this->p_start = new HTMLPurifier_Token_Start('', array());
+ $this->p_end = new HTMLPurifier_Token_End('');
+ $this->p_empty = new HTMLPurifier_Token_Empty('', array());
+ $this->p_text = new HTMLPurifier_Token_Text('');
+ $this->p_comment = new HTMLPurifier_Token_Comment('');
}
/**
* Creates a HTMLPurifier_Token_Start.
- * @param $name Tag name
- * @param $attr Associative array of attributes
- * @return Generated HTMLPurifier_Token_Start
+ * @param string $name Tag name
+ * @param array $attr Associative array of attributes
+ * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start
*/
- public function createStart($name, $attr = array()) {
+ public function createStart($name, $attr = array())
+ {
$p = clone $this->p_start;
$p->__construct($name, $attr);
return $p;
@@ -46,10 +67,11 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_End.
- * @param $name Tag name
- * @return Generated HTMLPurifier_Token_End
+ * @param string $name Tag name
+ * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End
*/
- public function createEnd($name) {
+ public function createEnd($name)
+ {
$p = clone $this->p_end;
$p->__construct($name);
return $p;
@@ -57,11 +79,12 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Empty.
- * @param $name Tag name
- * @param $attr Associative array of attributes
- * @return Generated HTMLPurifier_Token_Empty
+ * @param string $name Tag name
+ * @param array $attr Associative array of attributes
+ * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty
*/
- public function createEmpty($name, $attr = array()) {
+ public function createEmpty($name, $attr = array())
+ {
$p = clone $this->p_empty;
$p->__construct($name, $attr);
return $p;
@@ -69,10 +92,11 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Text.
- * @param $data Data of text token
- * @return Generated HTMLPurifier_Token_Text
+ * @param string $data Data of text token
+ * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text
*/
- public function createText($data) {
+ public function createText($data)
+ {
$p = clone $this->p_text;
$p->__construct($data);
return $p;
@@ -80,15 +104,15 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Comment.
- * @param $data Data of comment token
- * @return Generated HTMLPurifier_Token_Comment
+ * @param string $data Data of comment token
+ * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment
*/
- public function createComment($data) {
+ public function createComment($data)
+ {
$p = clone $this->p_comment;
$p->__construct($data);
return $p;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URI.php b/library/HTMLPurifier/URI.php
index 8b50d0d18..a5e7ae298 100644
--- a/library/HTMLPurifier/URI.php
+++ b/library/HTMLPurifier/URI.php
@@ -10,17 +10,57 @@
*/
class HTMLPurifier_URI
{
+ /**
+ * @type string
+ */
+ public $scheme;
- public $scheme, $userinfo, $host, $port, $path, $query, $fragment;
+ /**
+ * @type string
+ */
+ public $userinfo;
/**
+ * @type string
+ */
+ public $host;
+
+ /**
+ * @type int
+ */
+ public $port;
+
+ /**
+ * @type string
+ */
+ public $path;
+
+ /**
+ * @type string
+ */
+ public $query;
+
+ /**
+ * @type string
+ */
+ public $fragment;
+
+ /**
+ * @param string $scheme
+ * @param string $userinfo
+ * @param string $host
+ * @param int $port
+ * @param string $path
+ * @param string $query
+ * @param string $fragment
* @note Automatically normalizes scheme and port
*/
- public function __construct($scheme, $userinfo, $host, $port, $path, $query, $fragment) {
+ public function __construct($scheme, $userinfo, $host, $port, $path, $query, $fragment)
+ {
$this->scheme = is_null($scheme) || ctype_lower($scheme) ? $scheme : strtolower($scheme);
$this->userinfo = $userinfo;
$this->host = $host;
- $this->port = is_null($port) ? $port : (int) $port;
+ $this->port = is_null($port) ? $port : (int)$port;
$this->path = $path;
$this->query = $query;
$this->fragment = $fragment;
@@ -28,19 +68,22 @@ class HTMLPurifier_URI
/**
* Retrieves a scheme object corresponding to the URI's scheme/default
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Scheme object appropriate for validating this URI
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_URIScheme Scheme object appropriate for validating this URI
*/
- public function getSchemeObj($config, $context) {
+ public function getSchemeObj($config, $context)
+ {
$registry = HTMLPurifier_URISchemeRegistry::instance();
if ($this->scheme !== null) {
$scheme_obj = $registry->getScheme($this->scheme, $config, $context);
- if (!$scheme_obj) return false; // invalid scheme, clean it out
+ if (!$scheme_obj) {
+ return false;
+ } // invalid scheme, clean it out
} else {
// no scheme: retrieve the default one
$def = $config->getDefinition('URI');
- $scheme_obj = $registry->getScheme($def->defaultScheme, $config, $context);
+ $scheme_obj = $def->getDefaultScheme($config, $context);
if (!$scheme_obj) {
// something funky happened to the default scheme object
trigger_error(
@@ -56,30 +99,39 @@ class HTMLPurifier_URI
/**
* Generic validation method applicable for all schemes. May modify
* this URI in order to get it into a compliant form.
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return True if validation/filtering succeeds, false if failure
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool True if validation/filtering succeeds, false if failure
*/
- public function validate($config, $context) {
-
+ public function validate($config, $context)
+ {
// ABNF definitions from RFC 3986
$chars_sub_delims = '!$&\'()*+,;=';
$chars_gen_delims = ':/?#[]@';
$chars_pchar = $chars_sub_delims . ':@';
- // validate scheme (MUST BE FIRST!)
- if (!is_null($this->scheme) && is_null($this->host)) {
- $def = $config->getDefinition('URI');
- if ($def->defaultScheme === $this->scheme) {
- $this->scheme = null;
- }
- }
-
// validate host
if (!is_null($this->host)) {
$host_def = new HTMLPurifier_AttrDef_URI_Host();
$this->host = $host_def->validate($this->host, $config, $context);
- if ($this->host === false) $this->host = null;
+ if ($this->host === false) {
+ $this->host = null;
+ }
+ }
+
+ // validate scheme
+ // NOTE: It's not appropriate to check whether or not this
+ // scheme is in our registry, since a URIFilter may convert a
+ // URI that we don't allow into one we do. So instead, we just
+ // check if the scheme can be dropped because there is no host
+ // and it is our default scheme.
+ if (!is_null($this->scheme) && is_null($this->host) || $this->host === '') {
+ // support for relative paths is pretty abysmal when the
+ // scheme is present, so axe it when possible
+ $def = $config->getDefinition('URI');
+ if ($def->defaultScheme === $this->scheme) {
+ $this->scheme = null;
+ }
}
// validate username
@@ -90,38 +142,55 @@ class HTMLPurifier_URI
// validate port
if (!is_null($this->port)) {
- if ($this->port < 1 || $this->port > 65535) $this->port = null;
+ if ($this->port < 1 || $this->port > 65535) {
+ $this->port = null;
+ }
}
// validate path
- $path_parts = array();
$segments_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/');
- if (!is_null($this->host)) {
+ if (!is_null($this->host)) { // this catches $this->host === ''
// path-abempty (hier and relative)
+ // http://www.example.com/my/path
+ // //www.example.com/my/path (looks odd, but works, and
+ // recognized by most browsers)
+ // (this set is valid or invalid on a scheme by scheme
+ // basis, so we'll deal with it later)
+ // file:///my/path
+ // ///my/path
$this->path = $segments_encoder->encode($this->path);
- } elseif ($this->path !== '' && $this->path[0] === '/') {
- // path-absolute (hier and relative)
- if (strlen($this->path) >= 2 && $this->path[1] === '/') {
- // This shouldn't ever happen!
- $this->path = '';
- } else {
+ } elseif ($this->path !== '') {
+ if ($this->path[0] === '/') {
+ // path-absolute (hier and relative)
+ // http:/my/path
+ // /my/path
+ if (strlen($this->path) >= 2 && $this->path[1] === '/') {
+ // This could happen if both the host gets stripped
+ // out
+ // http://my/path
+ // //my/path
+ $this->path = '';
+ } else {
+ $this->path = $segments_encoder->encode($this->path);
+ }
+ } elseif (!is_null($this->scheme)) {
+ // path-rootless (hier)
+ // http:my/path
+ // Short circuit evaluation means we don't need to check nz
$this->path = $segments_encoder->encode($this->path);
- }
- } elseif (!is_null($this->scheme) && $this->path !== '') {
- // path-rootless (hier)
- // Short circuit evaluation means we don't need to check nz
- $this->path = $segments_encoder->encode($this->path);
- } elseif (is_null($this->scheme) && $this->path !== '') {
- // path-noscheme (relative)
- // (once again, not checking nz)
- $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@');
- $c = strpos($this->path, '/');
- if ($c !== false) {
- $this->path =
- $segment_nc_encoder->encode(substr($this->path, 0, $c)) .
- $segments_encoder->encode(substr($this->path, $c));
} else {
- $this->path = $segment_nc_encoder->encode($this->path);
+ // path-noscheme (relative)
+ // my/path
+ // (once again, not checking nz)
+ $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@');
+ $c = strpos($this->path, '/');
+ if ($c !== false) {
+ $this->path =
+ $segment_nc_encoder->encode(substr($this->path, 0, $c)) .
+ $segments_encoder->encode(substr($this->path, $c));
+ } else {
+ $this->path = $segment_nc_encoder->encode($this->path);
+ }
}
} else {
// path-empty (hier and relative)
@@ -138,36 +207,108 @@ class HTMLPurifier_URI
if (!is_null($this->fragment)) {
$this->fragment = $qf_encoder->encode($this->fragment);
}
-
return true;
-
}
/**
* Convert URI back to string
- * @return String URI appropriate for output
+ * @return string URI appropriate for output
*/
- public function toString() {
+ public function toString()
+ {
// reconstruct authority
$authority = null;
+ // there is a rendering difference between a null authority
+ // (http:foo-bar) and an empty string authority
+ // (http:///foo-bar).
if (!is_null($this->host)) {
$authority = '';
- if(!is_null($this->userinfo)) $authority .= $this->userinfo . '@';
+ if (!is_null($this->userinfo)) {
+ $authority .= $this->userinfo . '@';
+ }
$authority .= $this->host;
- if(!is_null($this->port)) $authority .= ':' . $this->port;
+ if (!is_null($this->port)) {
+ $authority .= ':' . $this->port;
+ }
}
- // reconstruct the result
+ // Reconstruct the result
+ // One might wonder about parsing quirks from browsers after
+ // this reconstruction. Unfortunately, parsing behavior depends
+ // on what *scheme* was employed (file:///foo is handled *very*
+ // differently than http:///foo), so unfortunately we have to
+ // defer to the schemes to do the right thing.
$result = '';
- if (!is_null($this->scheme)) $result .= $this->scheme . ':';
- if (!is_null($authority)) $result .= '//' . $authority;
+ if (!is_null($this->scheme)) {
+ $result .= $this->scheme . ':';
+ }
+ if (!is_null($authority)) {
+ $result .= '//' . $authority;
+ }
$result .= $this->path;
- if (!is_null($this->query)) $result .= '?' . $this->query;
- if (!is_null($this->fragment)) $result .= '#' . $this->fragment;
+ if (!is_null($this->query)) {
+ $result .= '?' . $this->query;
+ }
+ if (!is_null($this->fragment)) {
+ $result .= '#' . $this->fragment;
+ }
return $result;
}
+ /**
+ * Returns true if this URL might be considered a 'local' URL given
+ * the current context. This is true when the host is null, or
+ * when it matches the host supplied to the configuration.
+ *
+ * Note that this does not do any scheme checking, so it is mostly
+ * only appropriate for metadata that doesn't care about protocol
+ * security. isBenign is probably what you actually want.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function isLocal($config, $context)
+ {
+ if ($this->host === null) {
+ return true;
+ }
+ $uri_def = $config->getDefinition('URI');
+ if ($uri_def->host === $this->host) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns true if this URL should be considered a 'benign' URL,
+ * that is:
+ *
+ * - It is a local URL (isLocal), and
+ * - It has a equal or better level of security
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function isBenign($config, $context)
+ {
+ if (!$this->isLocal($config, $context)) {
+ return false;
+ }
+
+ $scheme_obj = $this->getSchemeObj($config, $context);
+ if (!$scheme_obj) {
+ return false;
+ } // conservative approach
+
+ $current_scheme_obj = $config->getDefinition('URI')->getDefaultScheme($config, $context);
+ if ($current_scheme_obj->secure) {
+ if (!$scheme_obj->secure) {
+ return false;
+ }
+ }
+ return true;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIDefinition.php b/library/HTMLPurifier/URIDefinition.php
index ea2b8fe24..e0bd8bcca 100644
--- a/library/HTMLPurifier/URIDefinition.php
+++ b/library/HTMLPurifier/URIDefinition.php
@@ -23,19 +23,24 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
*/
public $defaultScheme;
- public function __construct() {
+ public function __construct()
+ {
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());
+ $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());
$this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());
+ $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());
$this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());
$this->registerFilter(new HTMLPurifier_URIFilter_Munge());
}
- public function registerFilter($filter) {
+ public function registerFilter($filter)
+ {
$this->registeredFilters[$filter->name] = $filter;
}
- public function addFilter($filter, $config) {
+ public function addFilter($filter, $config)
+ {
$r = $filter->prepare($config);
if ($r === false) return; // null is ok, for backwards compat
if ($filter->post) {
@@ -45,22 +50,29 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
}
}
- protected function doSetup($config) {
+ protected function doSetup($config)
+ {
$this->setupMemberVariables($config);
$this->setupFilters($config);
}
- protected function setupFilters($config) {
+ protected function setupFilters($config)
+ {
foreach ($this->registeredFilters as $name => $filter) {
- $conf = $config->get('URI.' . $name);
- if ($conf !== false && $conf !== null) {
+ if ($filter->always_load) {
$this->addFilter($filter, $config);
+ } else {
+ $conf = $config->get('URI.' . $name);
+ if ($conf !== false && $conf !== null) {
+ $this->addFilter($filter, $config);
+ }
}
}
unset($this->registeredFilters);
}
- protected function setupMemberVariables($config) {
+ protected function setupMemberVariables($config)
+ {
$this->host = $config->get('URI.Host');
$base_uri = $config->get('URI.Base');
if (!is_null($base_uri)) {
@@ -72,7 +84,13 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');
}
- public function filter(&$uri, $config, $context) {
+ public function getDefaultScheme($config, $context)
+ {
+ return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);
+ }
+
+ public function filter(&$uri, $config, $context)
+ {
foreach ($this->filters as $name => $f) {
$result = $f->filter($uri, $config, $context);
if (!$result) return false;
@@ -80,7 +98,8 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
return true;
}
- public function postFilter(&$uri, $config, $context) {
+ public function postFilter(&$uri, $config, $context)
+ {
foreach ($this->postFilters as $name => $f) {
$result = $f->filter($uri, $config, $context);
if (!$result) return false;
diff --git a/library/HTMLPurifier/URIFilter.php b/library/HTMLPurifier/URIFilter.php
index c116f93df..09724e9f4 100644
--- a/library/HTMLPurifier/URIFilter.php
+++ b/library/HTMLPurifier/URIFilter.php
@@ -4,7 +4,21 @@
* Chainable filters for custom URI processing.
*
* These filters can perform custom actions on a URI filter object,
- * including transformation or blacklisting.
+ * including transformation or blacklisting. A filter named Foo
+ * must have a corresponding configuration directive %URI.Foo,
+ * unless always_load is specified to be true.
+ *
+ * The following contexts may be available while URIFilters are being
+ * processed:
+ *
+ * - EmbeddedURI: true if URI is an embedded resource that will
+ * be loaded automatically on page load
+ * - CurrentToken: a reference to the token that is currently
+ * being processed
+ * - CurrentAttr: the name of the attribute that is currently being
+ * processed
+ * - CurrentCSSProperty: the name of the CSS property that is
+ * currently being processed (if applicable)
*
* @warning This filter is called before scheme object validation occurs.
* Make sure, if you require a specific scheme object, you
@@ -15,31 +29,46 @@ abstract class HTMLPurifier_URIFilter
{
/**
- * Unique identifier of filter
+ * Unique identifier of filter.
+ * @type string
*/
public $name;
/**
* True if this filter should be run after scheme validation.
+ * @type bool
*/
public $post = false;
/**
- * Performs initialization for the filter
+ * True if this filter should always be loaded.
+ * This permits a filter to be named Foo without the corresponding
+ * %URI.Foo directive existing.
+ * @type bool
+ */
+ public $always_load = false;
+
+ /**
+ * Performs initialization for the filter. If the filter returns
+ * false, this means that it shouldn't be considered active.
+ * @param HTMLPurifier_Config $config
+ * @return bool
*/
- public function prepare($config) {return true;}
+ public function prepare($config)
+ {
+ return true;
+ }
/**
* Filter a URI object
- * @param $uri Reference to URI object variable
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_URI $uri Reference to URI object variable
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
* @return bool Whether or not to continue processing: false indicates
* URL is no good, true indicates continue processing. Note that
* all changes are committed directly on the URI object
*/
abstract public function filter(&$uri, $config, $context);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/DisableExternal.php b/library/HTMLPurifier/URIFilter/DisableExternal.php
index d8a39a501..ced1b1376 100644
--- a/library/HTMLPurifier/URIFilter/DisableExternal.php
+++ b/library/HTMLPurifier/URIFilter/DisableExternal.php
@@ -2,19 +2,50 @@
class HTMLPurifier_URIFilter_DisableExternal extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'DisableExternal';
+
+ /**
+ * @type array
+ */
protected $ourHostParts = false;
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return void
+ */
+ public function prepare($config)
+ {
$our_host = $config->getDefinition('URI')->host;
- if ($our_host !== null) $this->ourHostParts = array_reverse(explode('.', $our_host));
+ if ($our_host !== null) {
+ $this->ourHostParts = array_reverse(explode('.', $our_host));
+ }
}
- public function filter(&$uri, $config, $context) {
- if (is_null($uri->host)) return true;
- if ($this->ourHostParts === false) return false;
+
+ /**
+ * @param HTMLPurifier_URI $uri Reference
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (is_null($uri->host)) {
+ return true;
+ }
+ if ($this->ourHostParts === false) {
+ return false;
+ }
$host_parts = array_reverse(explode('.', $uri->host));
foreach ($this->ourHostParts as $i => $x) {
- if (!isset($host_parts[$i])) return false;
- if ($host_parts[$i] != $this->ourHostParts[$i]) return false;
+ if (!isset($host_parts[$i])) {
+ return false;
+ }
+ if ($host_parts[$i] != $this->ourHostParts[$i]) {
+ return false;
+ }
}
return true;
}
diff --git a/library/HTMLPurifier/URIFilter/DisableExternalResources.php b/library/HTMLPurifier/URIFilter/DisableExternalResources.php
index 881abc43c..c6562169e 100644
--- a/library/HTMLPurifier/URIFilter/DisableExternalResources.php
+++ b/library/HTMLPurifier/URIFilter/DisableExternalResources.php
@@ -2,9 +2,22 @@
class HTMLPurifier_URIFilter_DisableExternalResources extends HTMLPurifier_URIFilter_DisableExternal
{
+ /**
+ * @type string
+ */
public $name = 'DisableExternalResources';
- public function filter(&$uri, $config, $context) {
- if (!$context->get('EmbeddedURI', true)) return true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (!$context->get('EmbeddedURI', true)) {
+ return true;
+ }
return parent::filter($uri, $config, $context);
}
}
diff --git a/library/HTMLPurifier/URIFilter/DisableResources.php b/library/HTMLPurifier/URIFilter/DisableResources.php
new file mode 100644
index 000000000..d5c412c44
--- /dev/null
+++ b/library/HTMLPurifier/URIFilter/DisableResources.php
@@ -0,0 +1,22 @@
+<?php
+
+class HTMLPurifier_URIFilter_DisableResources extends HTMLPurifier_URIFilter
+{
+ /**
+ * @type string
+ */
+ public $name = 'DisableResources';
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ return !$context->get('EmbeddedURI', true);
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/HostBlacklist.php b/library/HTMLPurifier/URIFilter/HostBlacklist.php
index 045aa0992..a6645c17e 100644
--- a/library/HTMLPurifier/URIFilter/HostBlacklist.php
+++ b/library/HTMLPurifier/URIFilter/HostBlacklist.php
@@ -1,15 +1,40 @@
<?php
+// It's not clear to me whether or not Punycode means that hostnames
+// do not have canonical forms anymore. As far as I can tell, it's
+// not a problem (punycoding should be identity when no Unicode
+// points are involved), but I'm not 100% sure
class HTMLPurifier_URIFilter_HostBlacklist extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'HostBlacklist';
+
+ /**
+ * @type array
+ */
protected $blacklist = array();
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
$this->blacklist = $config->get('URI.HostBlacklist');
return true;
}
- public function filter(&$uri, $config, $context) {
- foreach($this->blacklist as $blacklisted_host_fragment) {
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ foreach ($this->blacklist as $blacklisted_host_fragment) {
if (strpos($uri->host, $blacklisted_host_fragment) !== false) {
return false;
}
diff --git a/library/HTMLPurifier/URIFilter/MakeAbsolute.php b/library/HTMLPurifier/URIFilter/MakeAbsolute.php
index f46ab2630..c507bbff8 100644
--- a/library/HTMLPurifier/URIFilter/MakeAbsolute.php
+++ b/library/HTMLPurifier/URIFilter/MakeAbsolute.php
@@ -4,14 +4,35 @@
class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'MakeAbsolute';
+
+ /**
+ * @type
+ */
protected $base;
+
+ /**
+ * @type array
+ */
protected $basePathStack = array();
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
$def = $config->getDefinition('URI');
$this->base = $def->base;
if (is_null($this->base)) {
- trigger_error('URI.MakeAbsolute is being ignored due to lack of value for URI.Base configuration', E_USER_WARNING);
+ trigger_error(
+ 'URI.MakeAbsolute is being ignored due to lack of ' .
+ 'value for URI.Base configuration',
+ E_USER_WARNING
+ );
return false;
}
$this->base->fragment = null; // fragment is invalid for base URI
@@ -21,19 +42,29 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
$this->basePathStack = $stack;
return true;
}
- public function filter(&$uri, $config, $context) {
- if (is_null($this->base)) return true; // abort early
- if (
- $uri->path === '' && is_null($uri->scheme) &&
- is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment)
- ) {
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (is_null($this->base)) {
+ return true;
+ } // abort early
+ if ($uri->path === '' && is_null($uri->scheme) &&
+ is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment)) {
// reference to current document
$uri = clone $this->base;
return true;
}
if (!is_null($uri->scheme)) {
// absolute URI already: don't change
- if (!is_null($uri->host)) return true;
+ if (!is_null($uri->host)) {
+ return true;
+ }
$scheme_obj = $uri->getSchemeObj($config, $context);
if (!$scheme_obj) {
// scheme not recognized
@@ -66,22 +97,33 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
}
// re-combine
$uri->scheme = $this->base->scheme;
- if (is_null($uri->userinfo)) $uri->userinfo = $this->base->userinfo;
- if (is_null($uri->host)) $uri->host = $this->base->host;
- if (is_null($uri->port)) $uri->port = $this->base->port;
+ if (is_null($uri->userinfo)) {
+ $uri->userinfo = $this->base->userinfo;
+ }
+ if (is_null($uri->host)) {
+ $uri->host = $this->base->host;
+ }
+ if (is_null($uri->port)) {
+ $uri->port = $this->base->port;
+ }
return true;
}
/**
* Resolve dots and double-dots in a path stack
+ * @param array $stack
+ * @return array
*/
- private function _collapseStack($stack) {
+ private function _collapseStack($stack)
+ {
$result = array();
$is_folder = false;
for ($i = 0; isset($stack[$i]); $i++) {
$is_folder = false;
// absorb an internally duplicated slash
- if ($stack[$i] == '' && $i && isset($stack[$i+1])) continue;
+ if ($stack[$i] == '' && $i && isset($stack[$i + 1])) {
+ continue;
+ }
if ($stack[$i] == '..') {
if (!empty($result)) {
$segment = array_pop($result);
@@ -106,7 +148,9 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
}
$result[] = $stack[$i];
}
- if ($is_folder) $result[] = '';
+ if ($is_folder) {
+ $result[] = '';
+ }
return $result;
}
}
diff --git a/library/HTMLPurifier/URIFilter/Munge.php b/library/HTMLPurifier/URIFilter/Munge.php
index efa10a645..6e03315a1 100644
--- a/library/HTMLPurifier/URIFilter/Munge.php
+++ b/library/HTMLPurifier/URIFilter/Munge.php
@@ -2,31 +2,79 @@
class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'Munge';
+
+ /**
+ * @type bool
+ */
public $post = true;
- private $target, $parser, $doEmbed, $secretKey;
+ /**
+ * @type string
+ */
+ private $target;
+
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ /**
+ * @type bool
+ */
+ private $doEmbed;
+
+ /**
+ * @type string
+ */
+ private $secretKey;
+
+ /**
+ * @type array
+ */
protected $replace = array();
- public function prepare($config) {
- $this->target = $config->get('URI.' . $this->name);
- $this->parser = new HTMLPurifier_URIParser();
- $this->doEmbed = $config->get('URI.MungeResources');
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
+ $this->target = $config->get('URI.' . $this->name);
+ $this->parser = new HTMLPurifier_URIParser();
+ $this->doEmbed = $config->get('URI.MungeResources');
$this->secretKey = $config->get('URI.MungeSecretKey');
+ if ($this->secretKey && !function_exists('hash_hmac')) {
+ throw new Exception("Cannot use %URI.MungeSecretKey without hash_hmac support.");
+ }
return true;
}
- public function filter(&$uri, $config, $context) {
- if ($context->get('EmbeddedURI', true) && !$this->doEmbed) return true;
- $scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) return true; // ignore unknown schemes, maybe another postfilter did it
- if (is_null($uri->host) || empty($scheme_obj->browsable)) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if ($context->get('EmbeddedURI', true) && !$this->doEmbed) {
return true;
}
- // don't redirect if target host is our host
- if ($uri->host === $config->getDefinition('URI')->host) {
+
+ $scheme_obj = $uri->getSchemeObj($config, $context);
+ if (!$scheme_obj) {
return true;
- }
+ } // ignore unknown schemes, maybe another postfilter did it
+ if (!$scheme_obj->browsable) {
+ return true;
+ } // ignore non-browseable schemes, since we can't munge those in a reasonable way
+ if ($uri->isBenign($config, $context)) {
+ return true;
+ } // don't redirect if a benign URL
$this->makeReplace($uri, $config, $context);
$this->replace = array_map('rawurlencode', $this->replace);
@@ -35,12 +83,20 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
$new_uri = $this->parser->parse($new_uri);
// don't redirect if the target host is the same as the
// starting host
- if ($uri->host === $new_uri->host) return true;
+ if ($uri->host === $new_uri->host) {
+ return true;
+ }
$uri = $new_uri; // overwrite
return true;
}
- protected function makeReplace($uri, $config, $context) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ */
+ protected function makeReplace($uri, $config, $context)
+ {
$string = $uri->toString();
// always available
$this->replace['%s'] = $string;
@@ -50,9 +106,10 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
$this->replace['%m'] = $context->get('CurrentAttr', true);
$this->replace['%p'] = $context->get('CurrentCSSProperty', true);
// not always available
- if ($this->secretKey) $this->replace['%t'] = sha1($this->secretKey . ':' . $string);
+ if ($this->secretKey) {
+ $this->replace['%t'] = hash_hmac("sha256", $string, $this->secretKey);
+ }
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/SafeIframe.php b/library/HTMLPurifier/URIFilter/SafeIframe.php
new file mode 100644
index 000000000..f609c47a3
--- /dev/null
+++ b/library/HTMLPurifier/URIFilter/SafeIframe.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Implements safety checks for safe iframes.
+ *
+ * @warning This filter is *critical* for ensuring that %HTML.SafeIframe
+ * works safely.
+ */
+class HTMLPurifier_URIFilter_SafeIframe extends HTMLPurifier_URIFilter
+{
+ /**
+ * @type string
+ */
+ public $name = 'SafeIframe';
+
+ /**
+ * @type bool
+ */
+ public $always_load = true;
+
+ /**
+ * @type string
+ */
+ protected $regexp = null;
+
+ // XXX: The not so good bit about how this is all set up now is we
+ // can't check HTML.SafeIframe in the 'prepare' step: we have to
+ // defer till the actual filtering.
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
+ $this->regexp = $config->get('URI.SafeIframeRegexp');
+ return true;
+ }
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ // check if filter not applicable
+ if (!$config->get('HTML.SafeIframe')) {
+ return true;
+ }
+ // check if the filter should actually trigger
+ if (!$context->get('EmbeddedURI', true)) {
+ return true;
+ }
+ $token = $context->get('CurrentToken', true);
+ if (!($token && $token->name == 'iframe')) {
+ return true;
+ }
+ // check if we actually have some whitelists enabled
+ if ($this->regexp === null) {
+ return false;
+ }
+ // actually check the whitelists
+ return preg_match($this->regexp, $uri->toString());
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIParser.php b/library/HTMLPurifier/URIParser.php
index 7179e4ab8..0e7381a07 100644
--- a/library/HTMLPurifier/URIParser.php
+++ b/library/HTMLPurifier/URIParser.php
@@ -12,7 +12,8 @@ class HTMLPurifier_URIParser
*/
protected $percentEncoder;
- public function __construct() {
+ public function __construct()
+ {
$this->percentEncoder = new HTMLPurifier_PercentEncoder();
}
@@ -22,15 +23,15 @@ class HTMLPurifier_URIParser
* @return HTMLPurifier_URI representation of URI. This representation has
* not been validated yet and may not conform to RFC.
*/
- public function parse($uri) {
-
+ public function parse($uri)
+ {
$uri = $this->percentEncoder->normalize($uri);
// Regexp is as per Appendix B.
// Note that ["<>] are an addition to the RFC's recommended
// characters, because they represent external delimeters.
$r_URI = '!'.
- '(([^:/?#"<>]+):)?'. // 2. Scheme
+ '(([a-zA-Z0-9\.\+\-]+):)?'. // 2. Scheme
'(//([^/?#"<>]*))?'. // 4. Authority
'([^?#"<>]*)'. // 5. Path
'(\?([^#"<>]*))?'. // 7. Query
diff --git a/library/HTMLPurifier/URIScheme.php b/library/HTMLPurifier/URIScheme.php
index 039710fd1..fe9e82cf2 100644
--- a/library/HTMLPurifier/URIScheme.php
+++ b/library/HTMLPurifier/URIScheme.php
@@ -3,40 +3,100 @@
/**
* Validator for the components of a URI for a specific scheme
*/
-class HTMLPurifier_URIScheme
+abstract class HTMLPurifier_URIScheme
{
/**
- * Scheme's default port (integer)
+ * Scheme's default port (integer). If an explicit port number is
+ * specified that coincides with the default port, it will be
+ * elided.
+ * @type int
*/
public $default_port = null;
/**
- * Whether or not URIs of this schem are locatable by a browser
+ * Whether or not URIs of this scheme are locatable by a browser
* http and ftp are accessible, while mailto and news are not.
+ * @type bool
*/
public $browsable = false;
/**
+ * Whether or not data transmitted over this scheme is encrypted.
+ * https is secure, http is not.
+ * @type bool
+ */
+ public $secure = false;
+
+ /**
* Whether or not the URI always uses <hier_part>, resolves edge cases
* with making relative URIs absolute
+ * @type bool
*/
public $hierarchical = false;
/**
- * Validates the components of a URI
- * @note This implementation should be called by children if they define
- * a default port, as it does port processing.
- * @param $uri Instance of HTMLPurifier_URI
- * @param $config HTMLPurifier_Config object
- * @param $context HTMLPurifier_Context object
- * @return Bool success or failure
+ * Whether or not the URI may omit a hostname when the scheme is
+ * explicitly specified, ala file:///path/to/file. As of writing,
+ * 'file' is the only scheme that browsers support his properly.
+ * @type bool
*/
- public function validate(&$uri, $config, $context) {
- if ($this->default_port == $uri->port) $uri->port = null;
- return true;
- }
+ public $may_omit_host = false;
+
+ /**
+ * Validates the components of a URI for a specific scheme.
+ * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool success or failure
+ */
+ abstract public function doValidate(&$uri, $config, $context);
+ /**
+ * Public interface for validating components of a URI. Performs a
+ * bunch of default actions. Don't overload this method.
+ * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool success or failure
+ */
+ public function validate(&$uri, $config, $context)
+ {
+ if ($this->default_port == $uri->port) {
+ $uri->port = null;
+ }
+ // kludge: browsers do funny things when the scheme but not the
+ // authority is set
+ if (!$this->may_omit_host &&
+ // if the scheme is present, a missing host is always in error
+ (!is_null($uri->scheme) && ($uri->host === '' || is_null($uri->host))) ||
+ // if the scheme is not present, a *blank* host is in error,
+ // since this translates into '///path' which most browsers
+ // interpret as being 'http://path'.
+ (is_null($uri->scheme) && $uri->host === '')
+ ) {
+ do {
+ if (is_null($uri->scheme)) {
+ if (substr($uri->path, 0, 2) != '//') {
+ $uri->host = null;
+ break;
+ }
+ // URI is '////path', so we cannot nullify the
+ // host to preserve semantics. Try expanding the
+ // hostname instead (fall through)
+ }
+ // first see if we can manually insert a hostname
+ $host = $config->get('URI.Host');
+ if (!is_null($host)) {
+ $uri->host = $host;
+ } else {
+ // we can't do anything sensible, reject the URL.
+ return false;
+ }
+ } while (false);
+ }
+ return $this->doValidate($uri, $config, $context);
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/data.php b/library/HTMLPurifier/URIScheme/data.php
index b7f1989cb..6ebca4984 100644
--- a/library/HTMLPurifier/URIScheme/data.php
+++ b/library/HTMLPurifier/URIScheme/data.php
@@ -3,18 +3,38 @@
/**
* Implements data: URI for base64 encoded images supported by GD.
*/
-class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = true;
+
+ /**
+ * @type array
+ */
public $allowed_types = array(
// you better write validation code for other types if you
// decide to allow them
'image/jpeg' => true,
'image/gif' => true,
'image/png' => true,
- );
+ );
+ // this is actually irrelevant since we only write out the path
+ // component
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
- public function validate(&$uri, $config, $context) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$result = explode(',', $uri->path, 2);
$is_base64 = false;
$charset = null;
@@ -23,7 +43,7 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
list($metadata, $data) = $result;
// do some legwork on the metadata
$metas = explode(';', $metadata);
- while(!empty($metas)) {
+ while (!empty($metas)) {
$cur = array_shift($metas);
if ($cur == 'base64') {
$is_base64 = true;
@@ -32,10 +52,14 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
if (substr($cur, 0, 8) == 'charset=') {
// doesn't match if there are arbitrary spaces, but
// whatever dude
- if ($charset !== null) continue; // garbage
+ if ($charset !== null) {
+ continue;
+ } // garbage
$charset = substr($cur, 8); // not used
} else {
- if ($content_type !== null) continue; // garbage
+ if ($content_type !== null) {
+ continue;
+ } // garbage
$content_type = $cur;
}
}
@@ -61,11 +85,15 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
file_put_contents($file, $raw_data);
if (function_exists('exif_imagetype')) {
$image_code = exif_imagetype($file);
+ unlink($file);
} elseif (function_exists('getimagesize')) {
set_error_handler(array($this, 'muteErrorHandler'));
$info = getimagesize($file);
restore_error_handler();
- if ($info == false) return false;
+ unlink($file);
+ if ($info == false) {
+ return false;
+ }
$image_code = $info[2];
} else {
trigger_error("could not find exif_imagetype or getimagesize functions", E_USER_ERROR);
@@ -74,7 +102,9 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
if ($real_content_type != $content_type) {
// we're nice guys; if the content type is something else we
// support, change it over
- if (empty($this->allowed_types[$real_content_type])) return false;
+ if (empty($this->allowed_types[$real_content_type])) {
+ return false;
+ }
$content_type = $real_content_type;
}
// ok, it's kosher, rewrite what we need
@@ -87,7 +117,11 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
return true;
}
- public function muteErrorHandler($errno, $errstr) {}
-
+ /**
+ * @param int $errno
+ * @param string $errstr
+ */
+ public function muteErrorHandler($errno, $errstr)
+ {
+ }
}
-
diff --git a/library/HTMLPurifier/URIScheme/file.php b/library/HTMLPurifier/URIScheme/file.php
new file mode 100644
index 000000000..215be4ba8
--- /dev/null
+++ b/library/HTMLPurifier/URIScheme/file.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Validates file as defined by RFC 1630 and RFC 1738.
+ */
+class HTMLPurifier_URIScheme_file extends HTMLPurifier_URIScheme
+{
+ /**
+ * Generally file:// URLs are not accessible from most
+ * machines, so placing them as an img src is incorrect.
+ * @type bool
+ */
+ public $browsable = false;
+
+ /**
+ * Basically the *only* URI scheme for which this is true, since
+ * accessing files on the local machine is very common. In fact,
+ * browsers on some operating systems don't understand the
+ * authority, though I hear it is used on Windows to refer to
+ * network shares.
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
+ // Authentication method is not supported
+ $uri->userinfo = null;
+ // file:// makes no provisions for accessing the resource
+ $uri->port = null;
+ // While it seems to work on Firefox, the querystring has
+ // no possible effect and is thus stripped.
+ $uri->query = null;
+ return true;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/ftp.php b/library/HTMLPurifier/URIScheme/ftp.php
index 5849bf7ff..1eb43ee5c 100644
--- a/library/HTMLPurifier/URIScheme/ftp.php
+++ b/library/HTMLPurifier/URIScheme/ftp.php
@@ -3,15 +3,32 @@
/**
* Validates ftp (File Transfer Protocol) URIs as defined by generic RFC 1738.
*/
-class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 21;
+
+ /**
+ * @type bool
+ */
public $browsable = true; // usually
+
+ /**
+ * @type bool
+ */
public $hierarchical = true;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
- $uri->query = null;
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
+ $uri->query = null;
// typecode check
$semicolon_pos = strrpos($uri->path, ';'); // reverse
@@ -34,10 +51,8 @@ class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme {
$uri->path = str_replace(';', '%3B', $uri->path);
$uri->path .= $type_ret;
}
-
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/http.php b/library/HTMLPurifier/URIScheme/http.php
index b097a31d6..ce69ec438 100644
--- a/library/HTMLPurifier/URIScheme/http.php
+++ b/library/HTMLPurifier/URIScheme/http.php
@@ -3,18 +3,34 @@
/**
* Validates http (HyperText Transfer Protocol) as defined by RFC 2616
*/
-class HTMLPurifier_URIScheme_http extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_http extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 80;
+
+ /**
+ * @type bool
+ */
public $browsable = true;
+
+ /**
+ * @type bool
+ */
public $hierarchical = true;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/https.php b/library/HTMLPurifier/URIScheme/https.php
index 29e380919..0e96882db 100644
--- a/library/HTMLPurifier/URIScheme/https.php
+++ b/library/HTMLPurifier/URIScheme/https.php
@@ -3,10 +3,16 @@
/**
* Validates https (Secure HTTP) according to http scheme.
*/
-class HTMLPurifier_URIScheme_https extends HTMLPurifier_URIScheme_http {
-
+class HTMLPurifier_URIScheme_https extends HTMLPurifier_URIScheme_http
+{
+ /**
+ * @type int
+ */
public $default_port = 443;
-
+ /**
+ * @type bool
+ */
+ public $secure = true;
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/mailto.php b/library/HTMLPurifier/URIScheme/mailto.php
index c1e2cd5aa..c3a6b602a 100644
--- a/library/HTMLPurifier/URIScheme/mailto.php
+++ b/library/HTMLPurifier/URIScheme/mailto.php
@@ -9,19 +9,32 @@
* @todo Filter allowed query parameters
*/
-class HTMLPurifier_URIScheme_mailto extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_mailto extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
$uri->host = null;
$uri->port = null;
// we need to validate path against RFC 2368's addr-spec
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/news.php b/library/HTMLPurifier/URIScheme/news.php
index f5f54f4f5..7490927d6 100644
--- a/library/HTMLPurifier/URIScheme/news.php
+++ b/library/HTMLPurifier/URIScheme/news.php
@@ -3,20 +3,33 @@
/**
* Validates news (Usenet) as defined by generic RFC 1738
*/
-class HTMLPurifier_URIScheme_news extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_news extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
- $uri->host = null;
- $uri->port = null;
- $uri->query = null;
+ $uri->host = null;
+ $uri->port = null;
+ $uri->query = null;
// typecode check needed on path
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/nntp.php b/library/HTMLPurifier/URIScheme/nntp.php
index 5bf93ea78..f211d715e 100644
--- a/library/HTMLPurifier/URIScheme/nntp.php
+++ b/library/HTMLPurifier/URIScheme/nntp.php
@@ -3,18 +3,30 @@
/**
* Validates nntp (Network News Transfer Protocol) as defined by generic RFC 1738
*/
-class HTMLPurifier_URIScheme_nntp extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_nntp extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 119;
+
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
- $uri->query = null;
+ $uri->query = null;
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URISchemeRegistry.php b/library/HTMLPurifier/URISchemeRegistry.php
index 576bf7b6d..4ac8a0b76 100644
--- a/library/HTMLPurifier/URISchemeRegistry.php
+++ b/library/HTMLPurifier/URISchemeRegistry.php
@@ -8,12 +8,14 @@ class HTMLPurifier_URISchemeRegistry
/**
* Retrieve sole instance of the registry.
- * @param $prototype Optional prototype to overload sole instance with,
+ * @param HTMLPurifier_URISchemeRegistry $prototype Optional prototype to overload sole instance with,
* or bool true to reset to default registry.
+ * @return HTMLPurifier_URISchemeRegistry
* @note Pass a registry object $prototype with a compatible interface and
* the function will copy it and return it all further times.
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance = null;
if ($prototype !== null) {
$instance = $prototype;
@@ -25,17 +27,22 @@ class HTMLPurifier_URISchemeRegistry
/**
* Cache of retrieved schemes.
+ * @type HTMLPurifier_URIScheme[]
*/
protected $schemes = array();
/**
* Retrieves a scheme validator object
- * @param $scheme String scheme name like http or mailto
- * @param $config HTMLPurifier_Config object
- * @param $config HTMLPurifier_Context object
+ * @param string $scheme String scheme name like http or mailto
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_URIScheme
*/
- public function getScheme($scheme, $config, $context) {
- if (!$config) $config = HTMLPurifier_Config::createDefault();
+ public function getScheme($scheme, $config, $context)
+ {
+ if (!$config) {
+ $config = HTMLPurifier_Config::createDefault();
+ }
// important, otherwise attacker could include arbitrary file
$allowed_schemes = $config->get('URI.AllowedSchemes');
@@ -45,24 +52,30 @@ class HTMLPurifier_URISchemeRegistry
return;
}
- if (isset($this->schemes[$scheme])) return $this->schemes[$scheme];
- if (!isset($allowed_schemes[$scheme])) return;
+ if (isset($this->schemes[$scheme])) {
+ return $this->schemes[$scheme];
+ }
+ if (!isset($allowed_schemes[$scheme])) {
+ return;
+ }
$class = 'HTMLPurifier_URIScheme_' . $scheme;
- if (!class_exists($class)) return;
+ if (!class_exists($class)) {
+ return;
+ }
$this->schemes[$scheme] = new $class();
return $this->schemes[$scheme];
}
/**
* Registers a custom scheme to the cache, bypassing reflection.
- * @param $scheme Scheme name
- * @param $scheme_obj HTMLPurifier_URIScheme object
+ * @param string $scheme Scheme name
+ * @param HTMLPurifier_URIScheme $scheme_obj
*/
- public function register($scheme, $scheme_obj) {
+ public function register($scheme, $scheme_obj)
+ {
$this->schemes[$scheme] = $scheme_obj;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/UnitConverter.php b/library/HTMLPurifier/UnitConverter.php
index 545d42622..166f3bf30 100644
--- a/library/HTMLPurifier/UnitConverter.php
+++ b/library/HTMLPurifier/UnitConverter.php
@@ -37,20 +37,24 @@ class HTMLPurifier_UnitConverter
/**
* Minimum bcmath precision for output.
+ * @type int
*/
protected $outputPrecision;
/**
* Bcmath precision for internal calculations.
+ * @type int
*/
protected $internalPrecision;
/**
- * Whether or not BCMath is available
+ * Whether or not BCMath is available.
+ * @type bool
*/
private $bcmath;
- public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false) {
+ public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false)
+ {
$this->outputPrecision = $output_precision;
$this->internalPrecision = $internal_precision;
$this->bcmath = !$force_no_bcmath && function_exists('bcmul');
@@ -63,6 +67,7 @@ class HTMLPurifier_UnitConverter
* it before passing it here!
* @param string $to_unit
* Unit to convert to.
+ * @return HTMLPurifier_Length|bool
* @note
* About precision: This conversion function pays very special
* attention to the incoming precision of values and attempts
@@ -74,11 +79,13 @@ class HTMLPurifier_UnitConverter
* and this causes some decimals to be excluded, those
* decimals will be added on.
*/
- public function convert($length, $to_unit) {
-
- if (!$length->isValid()) return false;
+ public function convert($length, $to_unit)
+ {
+ if (!$length->isValid()) {
+ return false;
+ }
- $n = $length->getN();
+ $n = $length->getN();
$unit = $length->getUnit();
if ($n === '0' || $unit === false) {
@@ -87,21 +94,29 @@ class HTMLPurifier_UnitConverter
$state = $dest_state = false;
foreach (self::$units as $k => $x) {
- if (isset($x[$unit])) $state = $k;
- if (isset($x[$to_unit])) $dest_state = $k;
+ if (isset($x[$unit])) {
+ $state = $k;
+ }
+ if (isset($x[$to_unit])) {
+ $dest_state = $k;
+ }
+ }
+ if (!$state || !$dest_state) {
+ return false;
}
- if (!$state || !$dest_state) return false;
// Some calculations about the initial precision of the number;
// this will be useful when we need to do final rounding.
$sigfigs = $this->getSigFigs($n);
- if ($sigfigs < $this->outputPrecision) $sigfigs = $this->outputPrecision;
+ if ($sigfigs < $this->outputPrecision) {
+ $sigfigs = $this->outputPrecision;
+ }
// BCMath's internal precision deals only with decimals. Use
// our default if the initial number has no decimals, or increase
// it by how ever many decimals, thus, the number of guard digits
// will always be greater than or equal to internalPrecision.
- $log = (int) floor(log(abs($n), 10));
+ $log = (int)floor(log(abs($n), 10));
$cp = ($log < 0) ? $this->internalPrecision - $log : $this->internalPrecision; // internal precision
for ($i = 0; $i < 2; $i++) {
@@ -152,14 +167,18 @@ class HTMLPurifier_UnitConverter
}
// Post-condition: $unit == $to_unit
- if ($unit !== $to_unit) return false;
+ if ($unit !== $to_unit) {
+ return false;
+ }
// Useful for debugging:
//echo "<pre>n";
//echo "$n\nsigfigs = $sigfigs\nnew_log = $new_log\nlog = $log\nrp = $rp\n</pre>\n";
$n = $this->round($n, $sigfigs);
- if (strpos($n, '.') !== false) $n = rtrim($n, '0');
+ if (strpos($n, '.') !== false) {
+ $n = rtrim($n, '0');
+ }
$n = rtrim($n, '.');
return new HTMLPurifier_Length($n, $unit);
@@ -170,53 +189,84 @@ class HTMLPurifier_UnitConverter
* @param string $n Decimal number
* @return int number of sigfigs
*/
- public function getSigFigs($n) {
+ public function getSigFigs($n)
+ {
$n = ltrim($n, '0+-');
$dp = strpos($n, '.'); // decimal position
if ($dp === false) {
$sigfigs = strlen(rtrim($n, '0'));
} else {
$sigfigs = strlen(ltrim($n, '0.')); // eliminate extra decimal character
- if ($dp !== 0) $sigfigs--;
+ if ($dp !== 0) {
+ $sigfigs--;
+ }
}
return $sigfigs;
}
/**
* Adds two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function add($s1, $s2, $scale) {
- if ($this->bcmath) return bcadd($s1, $s2, $scale);
- else return $this->scale($s1 + $s2, $scale);
+ private function add($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcadd($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 + (float)$s2, $scale);
+ }
}
/**
* Multiples two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function mul($s1, $s2, $scale) {
- if ($this->bcmath) return bcmul($s1, $s2, $scale);
- else return $this->scale($s1 * $s2, $scale);
+ private function mul($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcmul($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 * (float)$s2, $scale);
+ }
}
/**
* Divides two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function div($s1, $s2, $scale) {
- if ($this->bcmath) return bcdiv($s1, $s2, $scale);
- else return $this->scale($s1 / $s2, $scale);
+ private function div($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcdiv($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 / (float)$s2, $scale);
+ }
}
/**
* Rounds a number according to the number of sigfigs it should have,
* using arbitrary precision when available.
+ * @param float $n
+ * @param int $sigfigs
+ * @return string
*/
- private function round($n, $sigfigs) {
- $new_log = (int) floor(log(abs($n), 10)); // Number of digits left of decimal - 1
+ private function round($n, $sigfigs)
+ {
+ $new_log = (int)floor(log(abs($n), 10)); // Number of digits left of decimal - 1
$rp = $sigfigs - $new_log - 1; // Number of decimal places needed
$neg = $n < 0 ? '-' : ''; // Negative sign
if ($this->bcmath) {
if ($rp >= 0) {
- $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1);
+ $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1);
$n = bcdiv($n, '1', $rp);
} else {
// This algorithm partially depends on the standardized
@@ -232,23 +282,26 @@ class HTMLPurifier_UnitConverter
/**
* Scales a float to $scale digits right of decimal point, like BCMath.
+ * @param float $r
+ * @param int $scale
+ * @return string
*/
- private function scale($r, $scale) {
+ private function scale($r, $scale)
+ {
if ($scale < 0) {
// The f sprintf type doesn't support negative numbers, so we
// need to cludge things manually. First get the string.
- $r = sprintf('%.0f', (float) $r);
+ $r = sprintf('%.0f', (float)$r);
// Due to floating point precision loss, $r will more than likely
// look something like 4652999999999.9234. We grab one more digit
// than we need to precise from $r and then use that to round
// appropriately.
- $precise = (string) round(substr($r, 0, strlen($r) + $scale), -1);
+ $precise = (string)round(substr($r, 0, strlen($r) + $scale), -1);
// Now we return it, truncating the zero that was rounded off.
return substr($precise, 0, -1) . str_repeat('0', -$scale + 1);
}
- return sprintf('%.' . $scale . 'f', (float) $r);
+ return sprintf('%.' . $scale . 'f', (float)$r);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser.php b/library/HTMLPurifier/VarParser.php
index 68e72ae86..50cba6910 100644
--- a/library/HTMLPurifier/VarParser.php
+++ b/library/HTMLPurifier/VarParser.php
@@ -7,58 +7,59 @@
class HTMLPurifier_VarParser
{
- const STRING = 1;
- const ISTRING = 2;
- const TEXT = 3;
- const ITEXT = 4;
- const INT = 5;
- const FLOAT = 6;
- const BOOL = 7;
- const LOOKUP = 8;
- const ALIST = 9;
- const HASH = 10;
- const MIXED = 11;
+ const STRING = 1;
+ const ISTRING = 2;
+ const TEXT = 3;
+ const ITEXT = 4;
+ const INT = 5;
+ const FLOAT = 6;
+ const BOOL = 7;
+ const LOOKUP = 8;
+ const ALIST = 9;
+ const HASH = 10;
+ const MIXED = 11;
/**
* Lookup table of allowed types. Mainly for backwards compatibility, but
* also convenient for transforming string type names to the integer constants.
*/
- static public $types = array(
- 'string' => self::STRING,
- 'istring' => self::ISTRING,
- 'text' => self::TEXT,
- 'itext' => self::ITEXT,
- 'int' => self::INT,
- 'float' => self::FLOAT,
- 'bool' => self::BOOL,
- 'lookup' => self::LOOKUP,
- 'list' => self::ALIST,
- 'hash' => self::HASH,
- 'mixed' => self::MIXED
+ public static $types = array(
+ 'string' => self::STRING,
+ 'istring' => self::ISTRING,
+ 'text' => self::TEXT,
+ 'itext' => self::ITEXT,
+ 'int' => self::INT,
+ 'float' => self::FLOAT,
+ 'bool' => self::BOOL,
+ 'lookup' => self::LOOKUP,
+ 'list' => self::ALIST,
+ 'hash' => self::HASH,
+ 'mixed' => self::MIXED
);
/**
* Lookup table of types that are string, and can have aliases or
* allowed value lists.
*/
- static public $stringTypes = array(
- self::STRING => true,
- self::ISTRING => true,
- self::TEXT => true,
- self::ITEXT => true,
+ public static $stringTypes = array(
+ self::STRING => true,
+ self::ISTRING => true,
+ self::TEXT => true,
+ self::ITEXT => true,
);
/**
- * Validate a variable according to type. Throws
- * HTMLPurifier_VarParserException if invalid.
+ * Validate a variable according to type.
* It may return NULL as a valid type if $allow_null is true.
*
- * @param $var Variable to validate
- * @param $type Type of variable, see HTMLPurifier_VarParser->types
- * @param $allow_null Whether or not to permit null as a value
- * @return Validated and type-coerced variable
+ * @param mixed $var Variable to validate
+ * @param int $type Type of variable, see HTMLPurifier_VarParser->types
+ * @param bool $allow_null Whether or not to permit null as a value
+ * @return string Validated and type-coerced variable
+ * @throws HTMLPurifier_VarParserException
*/
- final public function parse($var, $type, $allow_null = false) {
+ final public function parse($var, $type, $allow_null = false)
+ {
if (is_string($type)) {
if (!isset(HTMLPurifier_VarParser::$types[$type])) {
throw new HTMLPurifier_VarParserException("Invalid type '$type'");
@@ -67,7 +68,9 @@ class HTMLPurifier_VarParser
}
}
$var = $this->parseImplementation($var, $type, $allow_null);
- if ($allow_null && $var === null) return null;
+ if ($allow_null && $var === null) {
+ return null;
+ }
// These are basic checks, to make sure nothing horribly wrong
// happened in our implementations.
switch ($type) {
@@ -75,27 +78,45 @@ class HTMLPurifier_VarParser
case (self::ISTRING):
case (self::TEXT):
case (self::ITEXT):
- if (!is_string($var)) break;
- if ($type == self::ISTRING || $type == self::ITEXT) $var = strtolower($var);
+ if (!is_string($var)) {
+ break;
+ }
+ if ($type == self::ISTRING || $type == self::ITEXT) {
+ $var = strtolower($var);
+ }
return $var;
case (self::INT):
- if (!is_int($var)) break;
+ if (!is_int($var)) {
+ break;
+ }
return $var;
case (self::FLOAT):
- if (!is_float($var)) break;
+ if (!is_float($var)) {
+ break;
+ }
return $var;
case (self::BOOL):
- if (!is_bool($var)) break;
+ if (!is_bool($var)) {
+ break;
+ }
return $var;
case (self::LOOKUP):
case (self::ALIST):
case (self::HASH):
- if (!is_array($var)) break;
+ if (!is_array($var)) {
+ break;
+ }
if ($type === self::LOOKUP) {
- foreach ($var as $k) if ($k !== true) $this->error('Lookup table contains value other than true');
+ foreach ($var as $k) {
+ if ($k !== true) {
+ $this->error('Lookup table contains value other than true');
+ }
+ }
} elseif ($type === self::ALIST) {
$keys = array_keys($var);
- if (array_keys($keys) !== $keys) $this->error('Indices for list are not uniform');
+ if (array_keys($keys) !== $keys) {
+ $this->error('Indices for list are not uniform');
+ }
}
return $var;
case (self::MIXED):
@@ -107,17 +128,24 @@ class HTMLPurifier_VarParser
}
/**
- * Actually implements the parsing. Base implementation is to not
+ * Actually implements the parsing. Base implementation does not
* do anything to $var. Subclasses should overload this!
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return string
*/
- protected function parseImplementation($var, $type, $allow_null) {
+ protected function parseImplementation($var, $type, $allow_null)
+ {
return $var;
}
/**
* Throws an exception.
+ * @throws HTMLPurifier_VarParserException
*/
- protected function error($msg) {
+ protected function error($msg)
+ {
throw new HTMLPurifier_VarParserException($msg);
}
@@ -126,29 +154,45 @@ class HTMLPurifier_VarParser
* @note This should not ever be called. It would be called if we
* extend the allowed values of HTMLPurifier_VarParser without
* updating subclasses.
+ * @param string $class
+ * @param int $type
+ * @throws HTMLPurifier_Exception
*/
- protected function errorInconsistent($class, $type) {
- throw new HTMLPurifier_Exception("Inconsistency in $class: ".HTMLPurifier_VarParser::getTypeName($type)." not implemented");
+ protected function errorInconsistent($class, $type)
+ {
+ throw new HTMLPurifier_Exception(
+ "Inconsistency in $class: " . HTMLPurifier_VarParser::getTypeName($type) .
+ " not implemented"
+ );
}
/**
* Generic error for if a type didn't work.
+ * @param mixed $var
+ * @param int $type
*/
- protected function errorGeneric($var, $type) {
+ protected function errorGeneric($var, $type)
+ {
$vtype = gettype($var);
- $this->error("Expected type ".HTMLPurifier_VarParser::getTypeName($type).", got $vtype");
+ $this->error("Expected type " . HTMLPurifier_VarParser::getTypeName($type) . ", got $vtype");
}
- static public function getTypeName($type) {
+ /**
+ * @param int $type
+ * @return string
+ */
+ public static function getTypeName($type)
+ {
static $lookup;
if (!$lookup) {
// Lazy load the alternative lookup table
$lookup = array_flip(HTMLPurifier_VarParser::$types);
}
- if (!isset($lookup[$type])) return 'unknown';
+ if (!isset($lookup[$type])) {
+ return 'unknown';
+ }
return $lookup[$type];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser/Flexible.php b/library/HTMLPurifier/VarParser/Flexible.php
index c954250e9..b15016c5b 100644
--- a/library/HTMLPurifier/VarParser/Flexible.php
+++ b/library/HTMLPurifier/VarParser/Flexible.php
@@ -7,28 +7,41 @@
*/
class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
{
-
- protected function parseImplementation($var, $type, $allow_null) {
- if ($allow_null && $var === null) return null;
+ /**
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return array|bool|float|int|mixed|null|string
+ * @throws HTMLPurifier_VarParserException
+ */
+ protected function parseImplementation($var, $type, $allow_null)
+ {
+ if ($allow_null && $var === null) {
+ return null;
+ }
switch ($type) {
// Note: if code "breaks" from the switch, it triggers a generic
// exception to be thrown. Specific errors can be specifically
// done here.
- case self::MIXED :
- case self::ISTRING :
- case self::STRING :
- case self::TEXT :
- case self::ITEXT :
+ case self::MIXED:
+ case self::ISTRING:
+ case self::STRING:
+ case self::TEXT:
+ case self::ITEXT:
return $var;
- case self::INT :
- if (is_string($var) && ctype_digit($var)) $var = (int) $var;
+ case self::INT:
+ if (is_string($var) && ctype_digit($var)) {
+ $var = (int)$var;
+ }
return $var;
- case self::FLOAT :
- if ((is_string($var) && is_numeric($var)) || is_int($var)) $var = (float) $var;
+ case self::FLOAT:
+ if ((is_string($var) && is_numeric($var)) || is_int($var)) {
+ $var = (float)$var;
+ }
return $var;
- case self::BOOL :
+ case self::BOOL:
if (is_int($var) && ($var === 0 || $var === 1)) {
- $var = (bool) $var;
+ $var = (bool)$var;
} elseif (is_string($var)) {
if ($var == 'on' || $var == 'true' || $var == '1') {
$var = true;
@@ -39,48 +52,70 @@ class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
}
}
return $var;
- case self::ALIST :
- case self::HASH :
- case self::LOOKUP :
+ case self::ALIST:
+ case self::HASH:
+ case self::LOOKUP:
if (is_string($var)) {
// special case: technically, this is an array with
// a single empty string item, but having an empty
// array is more intuitive
- if ($var == '') return array();
+ if ($var == '') {
+ return array();
+ }
if (strpos($var, "\n") === false && strpos($var, "\r") === false) {
// simplistic string to array method that only works
// for simple lists of tag names or alphanumeric characters
- $var = explode(',',$var);
+ $var = explode(',', $var);
} else {
$var = preg_split('/(,|[\n\r]+)/', $var);
}
// remove spaces
- foreach ($var as $i => $j) $var[$i] = trim($j);
+ foreach ($var as $i => $j) {
+ $var[$i] = trim($j);
+ }
if ($type === self::HASH) {
// key:value,key2:value2
$nvar = array();
foreach ($var as $keypair) {
$c = explode(':', $keypair, 2);
- if (!isset($c[1])) continue;
- $nvar[$c[0]] = $c[1];
+ if (!isset($c[1])) {
+ continue;
+ }
+ $nvar[trim($c[0])] = trim($c[1]);
}
$var = $nvar;
}
}
- if (!is_array($var)) break;
+ if (!is_array($var)) {
+ break;
+ }
$keys = array_keys($var);
if ($keys === array_keys($keys)) {
- if ($type == self::ALIST) return $var;
- elseif ($type == self::LOOKUP) {
+ if ($type == self::ALIST) {
+ return $var;
+ } elseif ($type == self::LOOKUP) {
$new = array();
foreach ($var as $key) {
$new[$key] = true;
}
return $new;
- } else break;
+ } else {
+ break;
+ }
+ }
+ if ($type === self::ALIST) {
+ trigger_error("Array list did not have consecutive integer indexes", E_USER_WARNING);
+ return array_values($var);
}
if ($type === self::LOOKUP) {
foreach ($var as $key => $value) {
+ if ($value !== true) {
+ trigger_error(
+ "Lookup array has non-true value at key '$key'; " .
+ "maybe your input array was not indexed numerically",
+ E_USER_WARNING
+ );
+ }
$var[$key] = true;
}
}
@@ -90,7 +125,6 @@ class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
}
$this->errorGeneric($var, $type);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser/Native.php b/library/HTMLPurifier/VarParser/Native.php
index b02a6de54..f11c318ef 100644
--- a/library/HTMLPurifier/VarParser/Native.php
+++ b/library/HTMLPurifier/VarParser/Native.php
@@ -8,11 +8,24 @@
class HTMLPurifier_VarParser_Native extends HTMLPurifier_VarParser
{
- protected function parseImplementation($var, $type, $allow_null) {
+ /**
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return null|string
+ */
+ protected function parseImplementation($var, $type, $allow_null)
+ {
return $this->evalExpression($var);
}
- protected function evalExpression($expr) {
+ /**
+ * @param string $expr
+ * @return mixed
+ * @throws HTMLPurifier_VarParserException
+ */
+ protected function evalExpression($expr)
+ {
$var = null;
$result = eval("\$var = $expr;");
if ($result === false) {
@@ -20,7 +33,6 @@ class HTMLPurifier_VarParser_Native extends HTMLPurifier_VarParser
}
return $var;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Zipper.php b/library/HTMLPurifier/Zipper.php
new file mode 100644
index 000000000..6e21ea070
--- /dev/null
+++ b/library/HTMLPurifier/Zipper.php
@@ -0,0 +1,157 @@
+<?php
+
+/**
+ * A zipper is a purely-functional data structure which contains
+ * a focus that can be efficiently manipulated. It is known as
+ * a "one-hole context". This mutable variant implements a zipper
+ * for a list as a pair of two arrays, laid out as follows:
+ *
+ * Base list: 1 2 3 4 [ ] 6 7 8 9
+ * Front list: 1 2 3 4
+ * Back list: 9 8 7 6
+ *
+ * User is expected to keep track of the "current element" and properly
+ * fill it back in as necessary. (ToDo: Maybe it's more user friendly
+ * to implicitly track the current element?)
+ *
+ * Nota bene: the current class gets confused if you try to store NULLs
+ * in the list.
+ */
+
+class HTMLPurifier_Zipper
+{
+ public $front, $back;
+
+ public function __construct($front, $back) {
+ $this->front = $front;
+ $this->back = $back;
+ }
+
+ /**
+ * Creates a zipper from an array, with a hole in the
+ * 0-index position.
+ * @param Array to zipper-ify.
+ * @return Tuple of zipper and element of first position.
+ */
+ static public function fromArray($array) {
+ $z = new self(array(), array_reverse($array));
+ $t = $z->delete(); // delete the "dummy hole"
+ return array($z, $t);
+ }
+
+ /**
+ * Convert zipper back into a normal array, optionally filling in
+ * the hole with a value. (Usually you should supply a $t, unless you
+ * are at the end of the array.)
+ */
+ public function toArray($t = NULL) {
+ $a = $this->front;
+ if ($t !== NULL) $a[] = $t;
+ for ($i = count($this->back)-1; $i >= 0; $i--) {
+ $a[] = $this->back[$i];
+ }
+ return $a;
+ }
+
+ /**
+ * Move hole to the next element.
+ * @param $t Element to fill hole with
+ * @return Original contents of new hole.
+ */
+ public function next($t) {
+ if ($t !== NULL) array_push($this->front, $t);
+ return empty($this->back) ? NULL : array_pop($this->back);
+ }
+
+ /**
+ * Iterated hole advancement.
+ * @param $t Element to fill hole with
+ * @param $i How many forward to advance hole
+ * @return Original contents of new hole, i away
+ */
+ public function advance($t, $n) {
+ for ($i = 0; $i < $n; $i++) {
+ $t = $this->next($t);
+ }
+ return $t;
+ }
+
+ /**
+ * Move hole to the previous element
+ * @param $t Element to fill hole with
+ * @return Original contents of new hole.
+ */
+ public function prev($t) {
+ if ($t !== NULL) array_push($this->back, $t);
+ return empty($this->front) ? NULL : array_pop($this->front);
+ }
+
+ /**
+ * Delete contents of current hole, shifting hole to
+ * next element.
+ * @return Original contents of new hole.
+ */
+ public function delete() {
+ return empty($this->back) ? NULL : array_pop($this->back);
+ }
+
+ /**
+ * Returns true if we are at the end of the list.
+ * @return bool
+ */
+ public function done() {
+ return empty($this->back);
+ }
+
+ /**
+ * Insert element before hole.
+ * @param Element to insert
+ */
+ public function insertBefore($t) {
+ if ($t !== NULL) array_push($this->front, $t);
+ }
+
+ /**
+ * Insert element after hole.
+ * @param Element to insert
+ */
+ public function insertAfter($t) {
+ if ($t !== NULL) array_push($this->back, $t);
+ }
+
+ /**
+ * Splice in multiple elements at hole. Functional specification
+ * in terms of array_splice:
+ *
+ * $arr1 = $arr;
+ * $old1 = array_splice($arr1, $i, $delete, $replacement);
+ *
+ * list($z, $t) = HTMLPurifier_Zipper::fromArray($arr);
+ * $t = $z->advance($t, $i);
+ * list($old2, $t) = $z->splice($t, $delete, $replacement);
+ * $arr2 = $z->toArray($t);
+ *
+ * assert($old1 === $old2);
+ * assert($arr1 === $arr2);
+ *
+ * NB: the absolute index location after this operation is
+ * *unchanged!*
+ *
+ * @param Current contents of hole.
+ */
+ public function splice($t, $delete, $replacement) {
+ // delete
+ $old = array();
+ $r = $t;
+ for ($i = $delete; $i > 0; $i--) {
+ $old[] = $r;
+ $r = $this->delete();
+ }
+ // insert
+ for ($i = count($replacement)-1; $i >= 0; $i--) {
+ $this->insertAfter($r);
+ $r = $replacement[$i];
+ }
+ return array($old, $r);
+ }
+}
diff --git a/library/colorbox/README.md b/library/colorbox/README.md
index bc002381e..5e7c1a379 100644
--- a/library/colorbox/README.md
+++ b/library/colorbox/README.md
@@ -1,11 +1,231 @@
-## About ColorBox:
+## About Colorbox:
A customizable lightbox plugin for jQuery. See the [project page](http://jacklmoore.com/colorbox/) for documentation and a demonstration, and the [FAQ](http://jacklmoore.com/colorbox/faq/) for solutions and examples to common issues. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
-## Translations Welcome
-Send me your language configuration files. See /i18n/jquery.colorbox-de.js as an example.
-
## Changelog:
+### Version 1.5.14 - 2014/9/9
+
+* When opening, append Colorbox to the DOM if it was detached for whatever reason. Fixes #645.
+
+### Version 1.5.13 - 2014/8/4
+
+* Fixed regression introduced with v1.5.12 with legacy versions of jQuery (1.3x-1.6x). References #628.
+
+### Version 1.5.12 - 2014/7/31
+
+* Allowed setting the overlay opacity via CSS, by setting Colorbox's opacity property to false. References #628.
+
+### Version 1.5.11 - 2014/7/31
+
+* Fixed bug where setting opacity to 0 was ignored. Fixes #628.
+
+### Version 1.5.10 - 2014/6/26
+
+* Minor misc. tweaks (merging pull requests #611, #612, #615, #619, #620).
+
+### Version 1.5.9 - 2014/4/25
+
+* Fixed inline content bug when using child selectors. Fixes #599
+
+### Version 1.5.8 - 2014/4/15
+
+* Fixed accidental leak of global variable. References #591
+* Enabled strict mode. Fixes #597
+
+### Version 1.5.7 - 2014/4/15
+
+* Fix potential error when calling Colorbox directly. References #591
+* Potentially worked around browser limitation of reporting that an image height and width is 0 immediately after onload. Fixes #535
+
+### Version 1.5.6 - 2014/4/4
+
+* Applied maxWidth and maxHeight to the initialWidth and initialHeight. Fixes #391
+
+### Version 1.5.5 - 2014/3/13
+
+* Allow setting the overlay opacity through CSS, rather than having to use Colorbox's opacity property. Fixes #580
+
+### Version 1.5.4 - 2014/3/7
+
+* Fixed potential issue where IE9+ wouldn't close the modal when clicking on the overlay. Fixes #576
+
+### Version 1.5.3 - 2014/3/4
+
+* Added access to settings object in callbacks.
+
+### Version 1.5.2 - 2014/2/28
+
+* Added svg to image types regex.
+
+### Version 1.5.1 - 2014/2/27
+
+* Fixed regression that broke direct calls to Colorbox, ie. $.colorbox(…)
+
+### Version 1.5.0 - 2014/2/27
+
+* Changed when the className is applied: immediately on open, but only updated immediately prior to transition. Fixes #565
+* Fixed potential style flash if #cboxLoadedContent is given a background. Fixes #567
+* Misc. code cleanup
+
+### Version 1.4.37 - 2014/2/11
+
+* Fixed potential error when resizing. Fixes #254
+* Added Microsoft's JPEG XR to photo detection regex.
+
+### Version 1.4.33 - 2013/10/31
+
+* Fixed an issue where private events propagated to the document in versions of jQuery prior to 1.7. Fixes #525, Fixes #526
+
+### Version 1.4.32 - 2013/10/16
+
+* Updated stylesheets to avoid issue with using `div {max-width:100%}` (Fixes #520)
+
+### Version 1.4.31 - 2013/9/25
+
+* Used setAttribute to set londesc, so that the value is accessible via DOM Node longDesc property #508
+
+### Version 1.4.30 - 2013/9/24
+
+* Added longdesc and aria-describedby attributes to photos. Fixes #508
+
+### Version 1.4.29 - 2013/9/10
+
+* Fixed a slideshow regression from 1.4.27
+* Fixed a potential issue with the starting size of #cboxLoadedContent
+
+### Version 1.4.28 - 2013/9/4
+
+* Fixed a potential issue with using the open property with mixed slideshow and non-slideshow groups
+
+### Version 1.4.27 - 2013/7/16
+
+* Fixed a width calculation issue relating to using margin:auto on #cboxLoadedContent.
+
+### Version 1.4.26 - 2013/6/30
+
+* Fixed a regression in IE7 and IE8 that was causing an error.
+
+### Version 1.4.25 - 2013/6/28
+
+* Use an animation speed of zero between same-sized content (fixed).
+* Removed temporary fix for jQuery UI 1.8
+
+### Version 1.4.24 - 2013/6/24
+
+* Added closeButton option. Set to false to remove the close button.
+
+### Version 1.4.23 - 2013/6/23
+
+* Bugfix loading overlay/graphic append order
+
+### Version 1.4.22 - 2013/6/19
+
+* Updated manifest files for the jQuery plugin repository and Bower (no changes to plugin)
+
+### Version 1.4.21 - 2013/6/6
+
+* Replaced new Image() with document.createElement('img') to avoid a potential bug in Chrome 27.
+
+### Version 1.4.20 - 2013/6/5
+
+* Fixing bug/typo from last update.
+
+### Version 1.4.19 - 2013/6/3
+
+* Fixed bug where Colorbox was capturing ctrl+click on assigned links on windows browsers with jQuery 1.7+, rather than ignoring.
+
+### Version 1.4.18 - 2013/5/30
+
+* Fixed a scroll position issue when using $.colorbox.resize()
+
+### Version 1.4.17 - 2013/5/23
+
+* Possible fix for a Chrome 27 issue (https://github.com/jackmoore/colorbox/pull/438#issuecomment-18334804)
+
+### Version 1.4.16 - 2013/5/20
+
+* Added trapFocus setting to allow disabling of focus trapping
+
+### Version 1.4.15 - 2013/4/22
+
+* Added .webp to list of recognized image extensions
+
+### Version 1.4.14 - 2013/4/16
+
+* Added fadeOut property to control the closing fadeOut speed.
+* Removed longdesc attribute for now.
+
+### Version 1.4.13 - 2013/4/11
+
+* Fixed an error involving IE7/IE8 and legacy versions of jQuery
+
+### Version 1.4.12 - 2013/4/9
+
+* Fixed a potential conflict with Twitter Bootstrap default img styles.
+
+### Version 1.4.11 - 2013/4/9
+
+* Added `type='button'` to buttons to prevent accidental form submission
+* Added alt and longdesc attributes to photo content if they are present on the calling element.
+
+### Version 1.4.10 - 2013/4/2
+
+* Better 'old IE' feature detection that fixes an error with jQuery 2.0.0pre.
+
+### Version 1.4.9 - 2013/4/2
+
+* Fixes bug introduced in previous version.
+
+### Version 1.4.8 - 2013/4/2
+
+* Dropped IE6 support.
+* Fixed other issues with $.colorbox.remove.
+
+### Version 1.4.7 - 2013/4/1
+
+* Prevented an error if $.colorbox.remove is called during the transition.
+
+### Version 1.4.6 - 2013/3/19
+
+* Minor change to work around a jQuery 1.4.2 bug for legacy users.
+
+### Version 1.4.5 - 2013/3/10
+
+* Minor change to apply the close and className properties sooner.
+
+### Version 1.4.4 - 2013/3/10
+
+* Fixed an issue with percent-based heights in iOS
+* Fixed an issue with ajax requests being applied at the wrong time.
+
+### Version 1.4.3 - 2013/2/18
+
+* Made image preloading aware of retina settings.
+
+### Version 1.4.2 - 2013/2/18
+
+* Removed $.contains for compatibility with jQuery 1.3.x
+
+### Version 1.4.1 - 2013/2/14
+
+* Ignored left and right arrow keypresses if combined with the alt key.
+
+### Version 1.4.0 - 2013/2/12
+
+* Better accessibility:
+ * Replaced div controls with buttons
+ * Tabbed navigation confined to modal window
+ * Added aria role
+
+### Version 1.3.34 - 2013/2/4
+
+* Updated manifest for plugins.jquery.com
+
+### Version 1.3.33 - 2013/2/4
+
+* Added retina display properties: retinaImage, retinaUrl, retinaSuffix
+* Fixed iframe scrolling on iOS devices.
+
### Version 1.3.32 - 2013/1/31
* Improved internal event subscribing & fixed event bug introduced in v1.3.21
@@ -16,7 +236,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.30 - 2013/1/25
-* Delayed border-width calculations until after opening, to avoid a bug in FF when using ColorBox in a hidden iframe.
+* Delayed border-width calculations until after opening, to avoid a bug in FF when using Colorbox in a hidden iframe.
### Version 1.3.29 - 2013/1/24
@@ -44,7 +264,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.23 - 2013/1/18
-* Minor bugfix for calling ColorBox on empty jQuery collections without a selector.
+* Minor bugfix for calling Colorbox on empty jQuery collections without a selector.
### Version 1.3.22 - 2013/1/17
@@ -53,7 +273,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.21 - 2013/1/15
Files Changed: *.js
-* Fixed compatability issues with jQuery 1.9
+* Fixed compatibility issues with jQuery 1.9
### Version 1.3.20 - August 15 2012
Files Changed:jquery.colorbox.js
@@ -72,8 +292,8 @@ Files Changed:jquery.colorbox.js, colorbox.css (all)
### Version 1.3.18 - October 07 2011
Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 1's controls.png
-* Fixed a regression where Flash content displayed in ColorBox would be reloaded if the browser window was resized.
-* Added safety check to make sure that ColorBox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize ColorBox if they need it before the DOM has finished loading.
+* Fixed a regression where Flash content displayed in Colorbox would be reloaded if the browser window was resized.
+* Added safety check to make sure that Colorbox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize Colorbox if they need it before the DOM has finished loading.
* Updated the example index.html files to be HTML5 compliant.
* Changed the slideshow behavior so that it immediately moves to the next slide when the slideshow is started.
* Minor regex bugfix to allow automatic detection of image URLs that include fragments.
@@ -82,8 +302,8 @@ Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and
Files Changed:jquery.colorbox.js/jquery.colorbox-min.js
* Added properties "top", "bottom", "left" and "right" to specify a position relative to the viewport, rather than using the default centering.
-* Added property "data" to specify GET or POST data when using Ajax. ColorBox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
-* Added property "fixed" which can provide fixed positioning for ColorBox, rather than absolute positioning. This will allow ColorBox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
+* Added property "data" to specify GET or POST data when using Ajax. Colorbox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
+* Added property "fixed" which can provide fixed positioning for Colorbox, rather than absolute positioning. This will allow Colorbox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
* Fixed ClearType problem with IE7.
* Minor fixes.
@@ -109,7 +329,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Changed the index.html example files to use YouTube's new embedded link format.
-* By default, ColorBox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
+* By default, Colorbox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
* Minor bug fix involved in using a combination of slideshow and non-slideshow content.
### Version 1.3.12 - October 20 2010
@@ -129,8 +349,8 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed compatibility with jQuery 1.4.3
* The 'open' property now accepts a function as a value, like all of the other properties.
* Preloading now loads the correct href for images when using a dynamic (function) value for the href property.
-* Fixed bug in Safari 3 for Win where ColorBox centered on the document, rather than the visitor's viewport.
-* May have fixed an issue in Opera 10.6+ where ColorBox would rarely/randomly freeze up while switching between photos in a group.
+* Fixed bug in Safari 3 for Win where Colorbox centered on the document, rather than the visitor's viewport.
+* May have fixed an issue in Opera 10.6+ where Colorbox would rarely/randomly freeze up while switching between photos in a group.
* Some functionality better encapsulated & minor performance improvements.
### Version 1.3.9 - July 7 2010
@@ -145,7 +365,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed a bug in Chrome where it would sometimes render photos at 0 by 0 width and height (behavior introduced in recent update to Chrome).
* Fixed a bug where the onClosed callback would fire twice (only affected 1.3.7).
-* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused ColorBox to move out of position.
+* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused Colorbox to move out of position.
* Abstracted the identifiers (HTML ids & classes, and JS plugin name, method, and events) so that the plugin can be easily rebranded.
* Small changes to improve either code readability or compression.
@@ -156,7 +376,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
* Resize now accepts 'width', 'innerWidth', 'height' and 'innerHeight'. Example: $.colorbox.resize({width:"100%"})
* Added option (loop:false) to disable looping in a group.
* Added options (escKey:false, arrowKey:false) to disable esc-key and arrow-key bindings.
-* Added method for removing ColorBox from a document: $.colorbox.remove();
+* Added method for removing Colorbox from a document: $.colorbox.remove();
* Fixed a bug where iframed URLs would be truncated if they contained an unencoded apostrophe.
* Now uses the exact href specified on an anchor, rather than the version returned by 'this.href'. This was causing "#example" to be normalized to "http://domain/#example" which interfered with how some users were setting up links to inline content.
* Changed example documents over to HTML5.
@@ -164,7 +384,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
### Version 1.3.6 - Jan 13 2010
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Small change to make ColorBox compatible with jQuery 1.4
+* Small change to make Colorbox compatible with jQuery 1.4
### Version 1.3.5 - December 15 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
@@ -176,27 +396,27 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
### Version 1.3.4 - December 5 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Event delegation is now used for elements that ColorBox is assigned to, rather than individual click events.
-* Additional callbacks have been added to represent other stages of ColorBox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of ColorBox.
+* Event delegation is now used for elements that Colorbox is assigned to, rather than individual click events.
+* Additional callbacks have been added to represent other stages of Colorbox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of Colorbox.
* Ajax content is now immediately added to the DOM to be more compatible if that content contains script tags.
* Focus is now returned to the calling element on closing.
* Fixed a bug where maxHeight and maxWidth did not work for non-photo content.
-* Direct calls no longer need 'open:true', it is assumed. Example: `$.fn.colorbox({html:'<p>Hi</p>'});`
+* Direct calls no longer need 'open:true', it is assumed. Example: `$.colorbox({html:'<p>Hi</p>'});`
### Version 1.3.3 - November 7 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Changed $.fn.colorbox.element() to return a jQuery object rather the DOM element.
+* Changed $.colorbox.element() to return a jQuery object rather the DOM element.
* jQuery.colorbox-min.js is compressed with Google's Closure Compiler rather than YUI Compressor.
### Version 1.3.2 - October 27 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for ColorBox, without having to anticipate the size of the borders and buttons.
+* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for Colorbox, without having to anticipate the size of the borders and buttons.
* Renamed 'scrollbars' option to 'scrolling' to be in keeping with the existing HTML attribute. The option now also applies to iframes.
* Bug fix: In Safari, positioning occassionally incorrect when using '100%' dimensions.
* Bug fix: In IE6, the background overlay is briefly not full size when first viewing.
-* Bug fix: In Firefox, opening ColorBox causes a split second shift with a small minority of webpage layouts.
+* Bug fix: In Firefox, opening Colorbox causes a split second shift with a small minority of webpage layouts.
* Simplified code in a few areas.
### Version 1.3.1 - September 16 2009
@@ -208,11 +428,11 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css/colorbox-i
### Version 1.3.0 - September 15 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css
-* Added $.fn.colorbox.resize() method to allow ColorBox to resize it's height if it's contents change.
+* Added $.colorbox.resize() method to allow Colorbox to resize it's height if it's contents change.
* Added 'scrollbars' option to allow users to turn off scrollbars when using the resize() method.
* Renamed the 'resize' option to be less ambiguous. It's now 'scalePhotos'.
* Renamed the 'cbox_close' event to be less ambiguous. It's now 'cbox_cleanup'. It is the first thing to happen in the close method while the 'cbox_closed' event is the last to happen.
-* Fixed a bug with the slideshow mouseover graphics that appeared after ColorBox is opened a 2nd time.
+* Fixed a bug with the slideshow mouseover graphics that appeared after Colorbox is opened a 2nd time.
* Fixed a bug where ClearType may not work in IE6&7 if using the fade transition.
* Minor code optimizations to increase compression.
@@ -233,12 +453,12 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets and background images (core styles have not changed and the updates will not affect existing user themes / old example themes)
* Code cleanup and reduction, better organization and documentation in the full source.
-* Added ability to use functions in place of static values for ColorBox's options (thanks Ken!).
-* Added an option for straight HTML. Example: `$.fn.colorbox({html:'<p>Howdy</p>', open:true})`
-* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when ColorBox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
-* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening ColorBox.
-* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing ColorBox.
-* The 'esc' key is unbound now when ColorBox is not open, to avoid any potential conflicts.
+* Added ability to use functions in place of static values for Colorbox's options (thanks Ken!).
+* Added an option for straight HTML. Example: `$.colorbox({html:'<p>Howdy</p>', open:true})`
+* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when Colorbox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
+* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening Colorbox.
+* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing Colorbox.
+* The 'esc' key is unbound now when Colorbox is not open, to avoid any potential conflicts.
* Used background sprites for examples 1 & 4. Put IE-only (non-sprite) background images in a separate folder.
* Example themes 1, 3, & 4 received slight visual tweaks.
* Optimized pngs for smaller file size.
@@ -248,8 +468,8 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets an
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed a bug with fixed width/height images in Opera 9.64.
-* Fixed a bug with trying to set a value for rel during a direct call to ColorBox. Example: `$.fn.colorbox({rel:'foo', open:true});`
-* Changed how href/rel/title settings are determined to avoid users having to manually update ColorBox settings if they use JavaScript to update any of those attributes, after ColorBox has been defined.
+* Fixed a bug with trying to set a value for rel during a direct call to Colorbox. Example: `$.colorbox({rel:'foo', open:true});`
+* Changed how href/rel/title settings are determined to avoid users having to manually update Colorbox settings if they use JavaScript to update any of those attributes, after Colorbox has been defined.
* Fixed a FF3 bug where the back button was disabled after closing an iframe.
### Version 1.2.5 - June 23 2009
@@ -261,13 +481,13 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
### Version 1.2.4 - June 9 2009
Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
-* Fixed an issue where ColorBox may not close completely if it is closed during a transition animation.
+* Fixed an issue where Colorbox may not close completely if it is closed during a transition animation.
* Minor code reduction.
### Version 1.2.3 - June 4 2009
* Fixed a png transparency stacking issue in IE.
* More accurate Ajax auto-sizing if the user was depending on the #cboxLoadedContent ID for CSS styling.
-* Added a public function for returning the current html element that ColorBox is associated with. Example use: var that = $.fn.colorbox.element();
+* Added a public function for returning the current html element that Colorbox is associated with. Example use: var that = $.colorbox.element();
* Added bicubic scaling for resized images in the original IE7.
* Removed the IE6 stylesheet and png files from Example 3. It now uses the same png file for the controls that the rest of the browsers use (an alpha transparency PNG8). This example now only has 2 graphics files and 1 stylesheet.
@@ -277,19 +497,19 @@ Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
### Version 1.2.1 - May 28 2009
* Note: If you are upgrading, update your jquery.colorbox.js and colorbox.css files.
* Added photo resizing.
-* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of ColorBox cannot exceed the height of the browser window.
-* Added 'rel' setting to add the ability to set an alternative rel for any ColorBox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
-* Added a 'photo' setting to force ColorBox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
-* Removed the need to ever create disposable elements to call colorbox on. ColorBox can now be called directly, without being associated with any existing element, by using the following format:
- `$.fn.colorbox({open:true, href:'yourLink.xxx'});`
-* ColorBox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
+* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of Colorbox cannot exceed the height of the browser window.
+* Added 'rel' setting to add the ability to set an alternative rel for any Colorbox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
+* Added a 'photo' setting to force Colorbox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
+* Removed the need to ever create disposable elements to call colorbox on. Colorbox can now be called directly, without being associated with any existing element, by using the following format:
+ `$.colorbox({open:true, href:'yourLink.xxx'});`
+* Colorbox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
* For user callbacks, 'this' now refers to the element colorbox was opened from.
* Fixed a minor grouping issue with IE6, when transition type is set to 'none'.
* Added an Adobe Illustrator file that contains the borders and buttons used in the various examples.
### Version 1.2 - May 13 2009
* Added a slideshow feature.
-* Added re-positioning on browser resize. If the browser is resized, ColorBox will recenter itself onscreen.
+* Added re-positioning on browser resize. If the browser is resized, Colorbox will recenter itself onscreen.
* Added hooks for key events: cbox_open, cbox_load, cbox_complete, cbox_closed.
* Fixed an IE transparency-stacking problem, where transparent PNGs would show through to the background overlay.
* Fixed an IE iframe issue where the ifame might shift up and to the left under certain circumstances.
@@ -299,54 +519,54 @@ Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
* Changed how the JS is structured to be better organized and increase compression. Increased documentation.
* Changed CSS :hover states to a .hover class. This sidesteps a minor IE8 bug with css hover states and allows easier access to hover state user styles from the JavaScript.
* Changed: elements added to the DOM have new ID's. The naming is more consistent and less likely to cause conflicts with existing website stylesheets. All stylesheets have been updated.
-* Changed the behavior for prev/next links so that ColorBox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
+* Changed the behavior for prev/next links so that Colorbox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
* Changed the naming of variables in the parameter map to be more concise and intuitive.
* Removed colorbox.css. Combined the colorbox.css styles with jquery.colorbox.js: the css file was not large enough to warrant being a separate file.
### Version 1.1.6 - April 28 2009
* Prevented the default action of the next & previous anchors and the left and right keys for gallery mode.
-* Fixed a bug where the title element was being added back to the DOM when closing ColorBox while using inline content.
+* Fixed a bug where the title element was being added back to the DOM when closing Colorbox while using inline content.
* Fixed a bug where IE7 would crash for example 2.
* Smaller filesize: removed a small amount of unused code and rewrote the HTML injection with less syntax.
-* Added a public method for closing ColorBox: $.fn.colorbox.close(). This will allow iframe users to add an event to close ColorBox without having to create an additional function.
+* Added a public method for closing Colorbox: $.colorbox.close(). This will allow iframe users to add an event to close Colorbox without having to create an additional function.
### Version 1.1.5 - April 11 2009
-* Fixed minor issues with exiting ColorBox.
+* Fixed minor issues with exiting Colorbox.
### Version 1.1.4 - April 08 2009
-* Fixed a bug in the fade transition where ColorBox not close completely if instructed to close during the fade-in portion of the transition.
+* Fixed a bug in the fade transition where Colorbox not close completely if instructed to close during the fade-in portion of the transition.
### Version 1.1.3 - April 06 2009
-* Fixed an IE6&7 issue with using ColorBox to display animated GIFs.
+* Fixed an IE6&7 issue with using Colorbox to display animated GIFs.
### Version 1.1.2 - April 05 2009
-* Added ability to change content when ColorBox is already open.
+* Added ability to change content when Colorbox is already open.
* Added vertical photo centering now works for all browsers (this feature previously excluded IE6&7).
* Added namespacing to the esc-key keydown event for people who want to disable it: "keydown.colorClose"
-* Added 'title' setting to add the ability to set an alternative title for any ColorBox call.
+* Added 'title' setting to add the ability to set an alternative title for any Colorbox call.
* Fixed rollover navigation issue with IE8. (Added JS-based rollover state due to a browser-bug.)
* Fixed an overflow issue for when the fixed width/height is smaller than the size of a photo.
-* Fixed a bug in the fade transition where the border would still come up if ColorBox was closed mid-transition.
+* Fixed a bug in the fade transition where the border would still come up if Colorbox was closed mid-transition.
* Switch from JSMin to Yui Compressor for minification. Minified code now under 7KB.
### Version 1.1.1 - March 31 2009
* More robust image detection regex. Now detects image file types with url fragments and/or query strings.
* Added 'nofollow' exception to rel grouping.
-* Changed how images are loaded into the DOM to prevent premature size calculation by ColorBox.
+* Changed how images are loaded into the DOM to prevent premature size calculation by Colorbox.
* Added timestamp to iframe name to prevent caching - this was a problem in some browsers if the user had multiple iframes and the visitor left the page and came back, or if they refreshed the page.
### Version 1.1.0 - March 21 2009
* Animation is now much smoother and less resource intensive.
* Added support for % sizing.
* Callback option added.
-* Inline content now preserves JavaScript events, and changes made while ColorBox is open are also preserved.
-* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the ColorBox event to non-anchors.
+* Inline content now preserves JavaScript events, and changes made while Colorbox is open are also preserved.
+* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the Colorbox event to non-anchors.
Example: $('button').colorbox({'href':'process.php'})
Example: $('a[href='http://msn.com']).colorbox({'href':'http://google.com', iframe:true});
* Photos are now horizontally centered if they are smaller than the lightbox size. Also vertically centered for browsers newer than IE7.
* Buttons in the examples are now included in the 'protected zone'. The lightbox will never expand it's borders or buttons beyond an accessible area of the screen.
* Keypress events don't queue up by holding down the arrow keys.
-* Added option to close ColorBox by clicking on the background overlay.
+* Added option to close Colorbox by clicking on the background overlay.
* Added 'none' transition setting.
* Changed 'contentIframe' and 'contentInline' to 'inline' and 'iframe'. Removed 'contentAjax' because it is automatically assumed for non-image file types.
* Changed 'contentWidth' and 'contentHeight' to 'fixedWidth' and 'fixedHeight'. These sizes now reflect the total size of the lightbox, not just the inner content. This is so users can accurately anticipate % sizes without fear of creating scrollbars.
diff --git a/library/colorbox/bower.json b/library/colorbox/bower.json
new file mode 100644
index 000000000..6cdfb9bab
--- /dev/null
+++ b/library/colorbox/bower.json
@@ -0,0 +1,42 @@
+{
+ "name": "jquery-colorbox",
+ "description": "jQuery lightbox and modal window plugin",
+ "version": "1.5.14",
+ "dependencies": {
+ "jquery": ">=1.3.2"
+ },
+ "keywords": [
+ "modal",
+ "lightbox",
+ "window",
+ "popup",
+ "ui",
+ "jQuery",
+ "jquery-plugin"
+ ],
+ "authors": [
+ {
+ "name": "Jack Moore",
+ "url": "http://www.jacklmoore.com",
+ "email": "hello@jacklmoore.com"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/mit-license.php"
+ }
+ ],
+ "homepage": "http://www.jacklmoore.com/colorbox",
+ "main": "jquery.colorbox.js",
+ "ignore": [
+ "colorbox.jquery.json",
+ "colorbox.ai",
+ "content",
+ "example1/index.html",
+ "example2/index.html",
+ "example3/index.html",
+ "example4/index.html",
+ "example5/index.html"
+ ]
+} \ No newline at end of file
diff --git a/library/colorbox/colorbox.css b/library/colorbox/colorbox.css
deleted file mode 100644
index 544a76f3b..000000000
--- a/library/colorbox/colorbox.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- ColorBox Core Style:
- The following CSS is consistent between example themes and should not be altered.
-*/
-#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
-#cboxOverlay{position:fixed; width:100%; height:100%;}
-#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
-#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
-#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
-
-/*
- User Style:
- Change the following styles to modify the appearance of ColorBox. They are
- ordered & tabbed in a way that represents the nesting of the generated HTML.
-*/
-#cboxOverlay{background:#000;}
-#colorbox{}
- #cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
- #cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
- #cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
- #cboxBottomLeft{width:14px; height:43px; background:url(images/controls.png) no-repeat 0 -32px;}
- #cboxBottomCenter{height:43px; background:url(images/border.png) repeat-x bottom left;}
- #cboxBottomRight{width:14px; height:43px; background:url(images/controls.png) no-repeat -36px -32px;}
- #cboxMiddleLeft{width:14px; background:url(images/controls.png) repeat-y -175px 0;}
- #cboxMiddleRight{width:14px; background:url(images/controls.png) repeat-y -211px 0;}
- #cboxContent{background:#fff; overflow:visible;}
- .cboxIframe{background:#fff;}
- #cboxError{padding:50px; border:1px solid #ccc;}
- #cboxLoadedContent{margin-bottom:5px;}
- #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
- #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
- #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
-
- #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
- #cboxPrevious{left:0px; background-position: -51px -25px;}
- #cboxPrevious:hover{background-position:-51px 0px;}
- #cboxNext{left:27px; background-position:-75px -25px;}
- #cboxNext:hover{background-position:-75px 0px;}
- #cboxClose{right:0; background-position:-100px -25px;}
- #cboxClose:hover{background-position:-100px 0px;}
-
- .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
- .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
- .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
- .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;} \ No newline at end of file
diff --git a/library/colorbox/colorbox.jquery.json b/library/colorbox/colorbox.jquery.json
deleted file mode 100644
index dd517a5f4..000000000
--- a/library/colorbox/colorbox.jquery.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "colorbox",
- "title": "ColorBox",
- "description": "A lightweight customizable lightbox plugin",
- "keywords": [
- "modal",
- "lightbox",
- "window",
- "popup",
- "ui"
- ],
- "version": "1.3.32",
- "author": {
- "name": "Jack Moore",
- "url": "http://www.jacklmoore.com",
- "email": "jack@colorpowered.com"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://www.opensource.org/licenses/mit-license.php"
- }
- ],
- "homepage": "http://jacklmoore.com/colorbox",
- "demo": "http://jacklmoore.com/colorbox",
- "download": "http://jacklmoore.com/colorbox/colorbox.zip",
- "dependencies": {
- "jquery": ">=1.3.2"
- }
-} \ No newline at end of file
diff --git a/library/colorbox/component.json b/library/colorbox/component.json
deleted file mode 100644
index 171764fbf..000000000
--- a/library/colorbox/component.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "name": "jquery-autosize",
- "version": "1.3.32",
- "main": "./jquery.autosize.js",
- "dependencies": {
- "jquery": ">=1.3.2"
- }
-} \ No newline at end of file
diff --git a/library/colorbox/content/daisy.jpg b/library/colorbox/content/daisy.jpg
new file mode 100644
index 000000000..16da6bdb0
--- /dev/null
+++ b/library/colorbox/content/daisy.jpg
Binary files differ
diff --git a/library/colorbox/content/daisy@2x.jpg b/library/colorbox/content/daisy@2x.jpg
new file mode 100644
index 000000000..f2e688dc2
--- /dev/null
+++ b/library/colorbox/content/daisy@2x.jpg
Binary files differ
diff --git a/library/colorbox/content/homer.jpg b/library/colorbox/content/homer.jpg
index 87ec76c99..864c17a9f 100644
--- a/library/colorbox/content/homer.jpg
+++ b/library/colorbox/content/homer.jpg
Binary files differ
diff --git a/library/colorbox/content/marylou.jpg b/library/colorbox/content/marylou.jpg
index 4c717d276..f113fbf6c 100644
--- a/library/colorbox/content/marylou.jpg
+++ b/library/colorbox/content/marylou.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee1.jpg b/library/colorbox/content/ohoopee1.jpg
index aae19a3e6..007fa58a8 100644
--- a/library/colorbox/content/ohoopee1.jpg
+++ b/library/colorbox/content/ohoopee1.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee2.jpg b/library/colorbox/content/ohoopee2.jpg
index 206894489..e56bb0f32 100644
--- a/library/colorbox/content/ohoopee2.jpg
+++ b/library/colorbox/content/ohoopee2.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee3.jpg b/library/colorbox/content/ohoopee3.jpg
index 4d64d2400..7cc1c7f97 100644
--- a/library/colorbox/content/ohoopee3.jpg
+++ b/library/colorbox/content/ohoopee3.jpg
Binary files differ
diff --git a/library/colorbox/example1/colorbox.css b/library/colorbox/example1/colorbox.css
index 5ee3feba9..8a4ff998c 100644
--- a/library/colorbox/example1/colorbox.css
+++ b/library/colorbox/example1/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
-#colorbox{}
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;}
#cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;}
#cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;}
@@ -35,13 +36,20 @@
#cboxLoadedContent{margin-bottom:28px;}
#cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
#cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+ #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
#cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:-75px -25px;}
#cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxNext:hover{background-position:-50px -25px;}
- #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
#cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxClose:hover{background-position:-25px -25px;}
@@ -59,28 +67,4 @@
.cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
-}
-
-/*
- The following provides PNG transparency support for IE6
- Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
-*/
-.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
-.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
-.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
-.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
-.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
-.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
-.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
-.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
-
-.cboxIE6 #cboxTopLeft,
-.cboxIE6 #cboxTopCenter,
-.cboxIE6 #cboxTopRight,
-.cboxIE6 #cboxBottomLeft,
-.cboxIE6 #cboxBottomCenter,
-.cboxIE6 #cboxBottomRight,
-.cboxIE6 #cboxMiddleLeft,
-.cboxIE6 #cboxMiddleRight {
- _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
-}
+} \ No newline at end of file
diff --git a/library/colorbox/example1/images/border.png b/library/colorbox/example1/images/border.png
index f463a10d8..9386f3504 100644
--- a/library/colorbox/example1/images/border.png
+++ b/library/colorbox/example1/images/border.png
Binary files differ
diff --git a/library/colorbox/example1/images/controls.png b/library/colorbox/example1/images/controls.png
index dcfd6fb9f..1ec3cb1c8 100644
--- a/library/colorbox/example1/images/controls.png
+++ b/library/colorbox/example1/images/controls.png
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomCenter.png b/library/colorbox/example1/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 0d4475edf..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomLeft.png b/library/colorbox/example1/images/ie6/borderBottomLeft.png
deleted file mode 100644
index 2775eba89..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomRight.png b/library/colorbox/example1/images/ie6/borderBottomRight.png
deleted file mode 100644
index f7f51379c..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderMiddleLeft.png b/library/colorbox/example1/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index a2d63d156..000000000
--- a/library/colorbox/example1/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderMiddleRight.png b/library/colorbox/example1/images/ie6/borderMiddleRight.png
deleted file mode 100644
index fd7c3e849..000000000
--- a/library/colorbox/example1/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopCenter.png b/library/colorbox/example1/images/ie6/borderTopCenter.png
deleted file mode 100644
index 2937a9cf9..000000000
--- a/library/colorbox/example1/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopLeft.png b/library/colorbox/example1/images/ie6/borderTopLeft.png
deleted file mode 100644
index f9d458b5b..000000000
--- a/library/colorbox/example1/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopRight.png b/library/colorbox/example1/images/ie6/borderTopRight.png
deleted file mode 100644
index 74b8583cf..000000000
--- a/library/colorbox/example1/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/loading.gif b/library/colorbox/example1/images/loading.gif
index b4695d811..0325c8dbf 100644
--- a/library/colorbox/example1/images/loading.gif
+++ b/library/colorbox/example1/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example1/images/loading_background.png b/library/colorbox/example1/images/loading_background.png
index 6ae83e697..23a336b39 100644
--- a/library/colorbox/example1/images/loading_background.png
+++ b/library/colorbox/example1/images/loading_background.png
Binary files differ
diff --git a/library/colorbox/example1/images/overlay.png b/library/colorbox/example1/images/overlay.png
index 53ea98f70..10362a423 100644
--- a/library/colorbox/example1/images/overlay.png
+++ b/library/colorbox/example1/images/overlay.png
Binary files differ
diff --git a/library/colorbox/example1/index.html b/library/colorbox/example1/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example1/index.html
+++ b/library/colorbox/example1/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example2/colorbox.css b/library/colorbox/example2/colorbox.css
index 3bb3d8121..0a6710404 100644
--- a/library/colorbox/example2/colorbox.css
+++ b/library/colorbox/example2/colorbox.css
@@ -1,27 +1,28 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#fff;}
-#colorbox{}
- #cboxContent{margin-top:32px; overflow:visible;}
+#cboxOverlay{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
+ #cboxContent{margin-top:32px; overflow:visible; background:#000;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{background:#000; padding:1px;}
@@ -29,7 +30,13 @@
#cboxLoadingOverlay{background:#000;}
#cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
#cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
- #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxPrevious{background-position:0px 0px; right:44px;}
#cboxPrevious:hover{background-position:0px -25px;}
#cboxNext{background-position:-25px 0px; right:22px;}
diff --git a/library/colorbox/example2/images/controls.png b/library/colorbox/example2/images/controls.png
index 8569b57f1..36f526992 100644
--- a/library/colorbox/example2/images/controls.png
+++ b/library/colorbox/example2/images/controls.png
Binary files differ
diff --git a/library/colorbox/example2/images/loading.gif b/library/colorbox/example2/images/loading.gif
index 19c67bbd0..a32df5c08 100644
--- a/library/colorbox/example2/images/loading.gif
+++ b/library/colorbox/example2/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example2/index.html b/library/colorbox/example2/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example2/index.html
+++ b/library/colorbox/example2/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example3/colorbox.css b/library/colorbox/example3/colorbox.css
index 153e32e6f..1cebdffd6 100644
--- a/library/colorbox/example3/colorbox.css
+++ b/library/colorbox/example3/colorbox.css
@@ -1,38 +1,45 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#000;}
-#colorbox{}
- #cboxContent{margin-top:20px;}
+#cboxOverlay{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
+ #cboxContent{margin-top:20px;background:#000;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{border:5px solid #000; background:#fff;}
#cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
#cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
#cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:bottom left;}
#cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
#cboxNext:hover{background-position:bottom right;}
- #cboxLoadingOverlay{background:#000;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
#cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
- #cboxClose:hover{background-position:bottom center;} \ No newline at end of file
+ #cboxClose:hover{background-position:bottom center;}
diff --git a/library/colorbox/example3/images/loading.gif b/library/colorbox/example3/images/loading.gif
index 19c67bbd0..a32df5c08 100644
--- a/library/colorbox/example3/images/loading.gif
+++ b/library/colorbox/example3/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example3/index.html b/library/colorbox/example3/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example3/index.html
+++ b/library/colorbox/example3/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example4/colorbox.css b/library/colorbox/example4/colorbox.css
index 54560688a..d475a343a 100644
--- a/library/colorbox/example4/colorbox.css
+++ b/library/colorbox/example4/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#fff;}
-#colorbox{}
+#cboxOverlay{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 0;}
#cboxTopCenter{height:25px; background:url(images/border1.png) repeat-x 0 -50px;}
#cboxTopRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px 0;}
@@ -35,10 +36,17 @@
#cboxLoadedContent{margin-bottom:20px;}
#cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
#cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
+ #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
#cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
#cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
- #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
#cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
/*
@@ -55,28 +63,4 @@
.cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
-}
-
-/*
- The following provides PNG transparency support for IE6
- Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
-*/
-.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
-.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
-.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
-.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
-.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
-.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
-.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
-.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
-
-.cboxIE6 #cboxTopLeft,
-.cboxIE6 #cboxTopCenter,
-.cboxIE6 #cboxTopRight,
-.cboxIE6 #cboxBottomLeft,
-.cboxIE6 #cboxBottomCenter,
-.cboxIE6 #cboxBottomRight,
-.cboxIE6 #cboxMiddleLeft,
-.cboxIE6 #cboxMiddleRight {
- _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
-}
+} \ No newline at end of file
diff --git a/library/colorbox/example4/images/border1.png b/library/colorbox/example4/images/border1.png
index 0ddc70405..ea73e1592 100644
--- a/library/colorbox/example4/images/border1.png
+++ b/library/colorbox/example4/images/border1.png
Binary files differ
diff --git a/library/colorbox/example4/images/border2.png b/library/colorbox/example4/images/border2.png
index aa62a0b72..72cad44ce 100644
--- a/library/colorbox/example4/images/border2.png
+++ b/library/colorbox/example4/images/border2.png
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomCenter.png b/library/colorbox/example4/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 12e0e9ac0..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomLeft.png b/library/colorbox/example4/images/ie6/borderBottomLeft.png
deleted file mode 100644
index b7a474ae0..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomRight.png b/library/colorbox/example4/images/ie6/borderBottomRight.png
deleted file mode 100644
index 6b6cb159b..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderMiddleLeft.png b/library/colorbox/example4/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index 8d0eb739d..000000000
--- a/library/colorbox/example4/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderMiddleRight.png b/library/colorbox/example4/images/ie6/borderMiddleRight.png
deleted file mode 100644
index d65509e30..000000000
--- a/library/colorbox/example4/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopCenter.png b/library/colorbox/example4/images/ie6/borderTopCenter.png
deleted file mode 100644
index 35d8da2d0..000000000
--- a/library/colorbox/example4/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopLeft.png b/library/colorbox/example4/images/ie6/borderTopLeft.png
deleted file mode 100644
index ae9bda040..000000000
--- a/library/colorbox/example4/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopRight.png b/library/colorbox/example4/images/ie6/borderTopRight.png
deleted file mode 100644
index 0d8868399..000000000
--- a/library/colorbox/example4/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/loading.gif b/library/colorbox/example4/images/loading.gif
index 602ce3c3a..1f3a2c0ab 100644
--- a/library/colorbox/example4/images/loading.gif
+++ b/library/colorbox/example4/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example4/index.html b/library/colorbox/example4/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example4/index.html
+++ b/library/colorbox/example4/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example5/colorbox.css b/library/colorbox/example5/colorbox.css
index 544a76f3b..889f20fea 100644
--- a/library/colorbox/example5/colorbox.css
+++ b/library/colorbox/example5/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#000;}
-#colorbox{}
+#cboxOverlay{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
#cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
#cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
@@ -38,7 +39,12 @@
#cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
#cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
- #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxPrevious{left:0px; background-position: -51px -25px;}
#cboxPrevious:hover{background-position:-51px 0px;}
#cboxNext{left:27px; background-position:-75px -25px;}
diff --git a/library/colorbox/example5/images/border.png b/library/colorbox/example5/images/border.png
index df13bb6da..c1cd1a2a4 100644
--- a/library/colorbox/example5/images/border.png
+++ b/library/colorbox/example5/images/border.png
Binary files differ
diff --git a/library/colorbox/example5/images/controls.png b/library/colorbox/example5/images/controls.png
index 65cfd1dc9..259130cd5 100644
--- a/library/colorbox/example5/images/controls.png
+++ b/library/colorbox/example5/images/controls.png
Binary files differ
diff --git a/library/colorbox/example5/images/loading.gif b/library/colorbox/example5/images/loading.gif
index b4695d811..dba33c816 100644
--- a/library/colorbox/example5/images/loading.gif
+++ b/library/colorbox/example5/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example5/images/loading_background.png b/library/colorbox/example5/images/loading_background.png
index 9de11f467..23a336b39 100644
--- a/library/colorbox/example5/images/loading_background.png
+++ b/library/colorbox/example5/images/loading_background.png
Binary files differ
diff --git a/library/colorbox/example5/index.html b/library/colorbox/example5/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example5/index.html
+++ b/library/colorbox/example5/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/i18n/jquery.colorbox-ar.js b/library/colorbox/i18n/jquery.colorbox-ar.js
new file mode 100644
index 000000000..6c4228cd1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ar.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Arabic (ar)
+ translated by: A.Rhman Sayes
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "الصورة {current} من {total}",
+ previous: "السابق",
+ next: "التالي",
+ close: "إغلاق",
+ xhrError: "حدث خطأ أثناء تحميل المحتوى.",
+ imgError: "حدث خطأ أثناء تحميل الصورة.",
+ slideshowStart: "تشغيل العرض",
+ slideshowStop: "إيقاف العرض"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-bg.js b/library/colorbox/i18n/jquery.colorbox-bg.js
new file mode 100644
index 000000000..de7e4a1d0
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-bg.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Bulgarian (bg)
+ translated by: Marian M.Bida
+ site: webmax.bg
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "изображение {current} от {total}",
+ previous: "предишна",
+ next: "следваща",
+ close: "затвори",
+ xhrError: "Неуспешно зареждане на съдържанието.",
+ imgError: "Неуспешно зареждане на изображението.",
+ slideshowStart: "пусни слайд-шоу",
+ slideshowStop: "спри слайд-шоу"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-bn.js b/library/colorbox/i18n/jquery.colorbox-bn.js
new file mode 100644
index 000000000..946229d4c
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-bn.js
@@ -0,0 +1,16 @@
+/*
+jQuery Colorbox language configuration
+language: Bengali (bn)
+translated by: Arkaprava Majumder
+http://github.com/arkaindas
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+current: "ছবি {current} এর {total}",
+previous: "আগে",
+next: "পরে",
+close: "বন্ধ",
+xhrError: "এই কন্টেন্ট লোড করা যায়নি.",
+imgError: "এই ছবিটি লোড করা যায়নি.",
+slideshowStart: "স্লাইডশো শুরু",
+slideshowStop: "স্লাইডশো বন্ধ"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-ca.js b/library/colorbox/i18n/jquery.colorbox-ca.js
new file mode 100644
index 000000000..173c05fdf
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ca.js
@@ -0,0 +1,13 @@
+/*
+ jQuery Colorbox language configuration
+ language: Catala (ca)
+ translated by: eduard salla
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imatge {current} de {total}",
+ previous: "Anterior",
+ next: "Següent",
+ close: "Tancar",
+ xhrError: "Error en la càrrega del contingut.",
+ imgError: "Error en la càrrega de la imatge."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-cs.js b/library/colorbox/i18n/jquery.colorbox-cs.js
index 42114c0a7..9649fd455 100644
--- a/library/colorbox/i18n/jquery.colorbox-cs.js
+++ b/library/colorbox/i18n/jquery.colorbox-cs.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Czech (cs)
translated by: Filip Novak
site: mame.napilno.cz/filip-novak
@@ -10,5 +10,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Následující",
close: "Zavřít",
xhrError: "Obsah se nepodařilo načíst.",
- imgError: "Obrázek se nepodařilo načíst."
+ imgError: "Obrázek se nepodařilo načíst.",
+ slideshowStart: "Spustit slideshow",
+ slideshowStop: "Zastavit slideshow"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-da.js b/library/colorbox/i18n/jquery.colorbox-da.js
index 66bfb6cd0..676fffed2 100644
--- a/library/colorbox/i18n/jquery.colorbox-da.js
+++ b/library/colorbox/i18n/jquery.colorbox-da.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Danish (da)
translated by: danieljuhl
site: danieljuhl.dk
@@ -10,5 +10,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Næste",
close: "Luk",
xhrError: "Indholdet fejlede i indlæsningen.",
- imgError: "Billedet fejlede i indlæsningen."
+ imgError: "Billedet fejlede i indlæsningen.",
+ slideshowStart: "Start slideshow",
+ slideshowStop: "Stop slideshow"
});
diff --git a/library/colorbox/i18n/jquery.colorbox-de.js b/library/colorbox/i18n/jquery.colorbox-de.js
index 3d6e2e147..d489379bc 100644
--- a/library/colorbox/i18n/jquery.colorbox-de.js
+++ b/library/colorbox/i18n/jquery.colorbox-de.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: German (de)
translated by: wallenium
*/
@@ -9,5 +9,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Vor",
close: "Schließen",
xhrError: "Dieser Inhalt konnte nicht geladen werden.",
- imgError: "Dieses Bild konnte nicht geladen werden."
+ imgError: "Dieses Bild konnte nicht geladen werden.",
+ slideshowStart: "Slideshow starten",
+ slideshowStop: "Slideshow anhalten"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-es.js b/library/colorbox/i18n/jquery.colorbox-es.js
index 6449c66f8..11296fc94 100644
--- a/library/colorbox/i18n/jquery.colorbox-es.js
+++ b/library/colorbox/i18n/jquery.colorbox-es.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Spanish (es)
translated by: migolo
*/
diff --git a/library/colorbox/i18n/jquery.colorbox-et.js b/library/colorbox/i18n/jquery.colorbox-et.js
new file mode 100644
index 000000000..60a4e888e
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-et.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Estonian (et)
+ translated by: keevitaja
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}/{total}",
+ previous: "eelmine",
+ next: "järgmine",
+ close: "sulge",
+ xhrError: "Sisu ei õnnestunud laadida.",
+ imgError: "Pilti ei õnnestunud laadida.",
+ slideshowStart: "Käivita slaidid",
+ slideshowStop: "Peata slaidid"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-fa.js b/library/colorbox/i18n/jquery.colorbox-fa.js
new file mode 100644
index 000000000..32869a4c8
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-fa.js
@@ -0,0 +1,18 @@
+/*
+ jQuery Colorbox language configuration
+ language: Persian (Farsi)
+ translated by: Mahdi Jaberzadeh Ansari (MJZSoft)
+ site: www.mjzsoft.ir
+ email: mahdijaberzadehansari (at) yahoo.co.uk
+ Please note : Persian language is right to left like arabic.
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "تصویر {current} از {total}",
+ previous: "قبلی",
+ next: "بعدی",
+ close: "بستن",
+ xhrError: "متاسفانه محتویات مورد نظر قابل نمایش نیست.",
+ imgError: "متاسفانه بارگذاری این عکس با مشکل مواجه شده است.",
+ slideshowStart: "آغاز نمایش خودکار",
+ slideshowStop: "توقف نمایش خودکار"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-fi.js b/library/colorbox/i18n/jquery.colorbox-fi.js
new file mode 100644
index 000000000..ac03fe021
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-fi.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Finnish (fi)
+ translated by: Mikko
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Kuva {current} / {total}",
+ previous: "Edellinen",
+ next: "Seuraava",
+ close: "Sulje",
+ xhrError: "Sisällön lataaminen epäonnistui.",
+ imgError: "Kuvan lataaminen epäonnistui.",
+ slideshowStart: "Aloita kuvaesitys.",
+ slideshowStop: "Lopeta kuvaesitys."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-fr.js b/library/colorbox/i18n/jquery.colorbox-fr.js
index f6afe3fd4..f76352bd4 100644
--- a/library/colorbox/i18n/jquery.colorbox-fr.js
+++ b/library/colorbox/i18n/jquery.colorbox-fr.js
@@ -1,14 +1,15 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: French (fr)
translated by: oaubert
*/
jQuery.extend(jQuery.colorbox.settings, {
-current: "image {current} sur {total}",
-previous: "pr&eacute;c&eacute;dente",
-next: "suivante",
-close: "fermer",
-xhrError: "Impossible de charger ce contenu.",
-imgError: "Impossible de charger cette image."
+ current: "image {current} sur {total}",
+ previous: "pr&eacute;c&eacute;dente",
+ next: "suivante",
+ close: "fermer",
+ xhrError: "Impossible de charger ce contenu.",
+ imgError: "Impossible de charger cette image.",
+ slideshowStart: "d&eacute;marrer la pr&eacute;sentation",
+ slideshowStop: "arr&ecirc;ter la pr&eacute;sentation"
});
-
diff --git a/library/colorbox/i18n/jquery.colorbox-gl.js b/library/colorbox/i18n/jquery.colorbox-gl.js
new file mode 100644
index 000000000..3641b51b1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-gl.js
@@ -0,0 +1,13 @@
+/*
+ jQuery Colorbox language configuration
+ language: Galician (gl)
+ translated by: donatorouco
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imaxe {current} de {total}",
+ previous: "Anterior",
+ next: "Seguinte",
+ close: "Pechar",
+ xhrError: "Erro na carga do contido.",
+ imgError: "Erro na carga da imaxe."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-gr.js b/library/colorbox/i18n/jquery.colorbox-gr.js
new file mode 100644
index 000000000..0d2c1bb76
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-gr.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Greek (gr)
+ translated by: S.Demirtzoglou
+ site: webiq.gr
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Εικόνα {current} από {total}",
+ previous: "Προηγούμενη",
+ next: "Επόμενη",
+ close: "Απόκρυψη",
+ xhrError: "Το περιεχόμενο δεν μπόρεσε να φορτωθεί.",
+ imgError: "Απέτυχε η φόρτωση της εικόνας.",
+ slideshowStart: "Έναρξη παρουσίασης",
+ slideshowStop: "Παύση παρουσίασης"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-he.js b/library/colorbox/i18n/jquery.colorbox-he.js
new file mode 100644
index 000000000..78908e39f
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-he.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Hebrew (he)
+ translated by: DavidCo
+ site: DavidCo.me
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "תמונה {current} מתוך {total}",
+ previous: "הקודם",
+ next: "הבא",
+ close: "סגור",
+ xhrError: "שגיאה בטעינת התוכן.",
+ imgError: "שגיאה בטעינת התמונה.",
+ slideshowStart: "התחל מצגת",
+ slideshowStop: "עצור מצגת"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-hr.js b/library/colorbox/i18n/jquery.colorbox-hr.js
new file mode 100644
index 000000000..7eb62becd
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-hr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Croatian (hr)
+ translated by: Mladen Bicanic (base.hr)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prethodna",
+ next: "Sljedeća",
+ close: "Zatvori",
+ xhrError: "Neuspješno učitavanje sadržaja.",
+ imgError: "Neuspješno učitavanje slike.",
+ slideshowStart: "Pokreni slideshow",
+ slideshowStop: "Zaustavi slideshow"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-hu.js b/library/colorbox/i18n/jquery.colorbox-hu.js
new file mode 100644
index 000000000..72e9d36b1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-hu.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Hungarian (hu)
+ translated by: kovadani
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}/{total} kép",
+ previous: "Előző",
+ next: "Következő",
+ close: "Bezár",
+ xhrError: "A tartalmat nem sikerült betölteni.",
+ imgError: "A képet nem sikerült betölteni.",
+ slideshowStart: "Diavetítés indítása",
+ slideshowStop: "Diavetítés leállítása"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-id.js b/library/colorbox/i18n/jquery.colorbox-id.js
new file mode 100644
index 000000000..81a62df34
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-id.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Indonesian (id)
+ translated by: sarwasunda
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "ke {current} dari {total}",
+ previous: "Sebelumnya",
+ next: "Berikutnya",
+ close: "Tutup",
+ xhrError: "Konten ini tidak dapat dimuat.",
+ imgError: "Gambar ini tidak dapat dimuat.",
+ slideshowStart: "Putar",
+ slideshowStop: "Berhenti"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-it.js b/library/colorbox/i18n/jquery.colorbox-it.js
index d67d76cf7..2a4af6453 100644
--- a/library/colorbox/i18n/jquery.colorbox-it.js
+++ b/library/colorbox/i18n/jquery.colorbox-it.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Italian (it)
translated by: maur8ino
*/
@@ -9,5 +9,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Successiva",
close: "Chiudi",
xhrError: "Errore nel caricamento del contenuto.",
- imgError: "Errore nel caricamento dell'immagine."
+ imgError: "Errore nel caricamento dell'immagine.",
+ slideshowStart: "Inizia la presentazione",
+ slideshowStop: "Termina la presentazione"
});
diff --git a/library/colorbox/i18n/jquery.colorbox-ja.js b/library/colorbox/i18n/jquery.colorbox-ja.js
new file mode 100644
index 000000000..5480de336
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ja.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Japanaese (ja)
+ translated by: Hajime Fujimoto
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{total}枚中{current}枚目",
+ previous: "前",
+ next: "次",
+ close: "閉じる",
+ xhrError: "コンテンツの読み込みに失敗しました",
+ imgError: "画像の読み込みに失敗しました",
+ slideshowStart: "スライドショー開始",
+ slideshowStop: "スライドショー終了"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-kr.js b/library/colorbox/i18n/jquery.colorbox-kr.js
new file mode 100644
index 000000000..b95702bc0
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-kr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Korean (kr)
+ translated by: lunareffect
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "총 {total} 중 {current}",
+ previous: "이전",
+ next: "다음",
+ close: "닫기",
+ xhrError: "컨텐츠를 불러오는 데 실패했습니다.",
+ imgError: "이미지를 불러오는 데 실패했습니다.",
+ slideshowStart: "슬라이드쇼 시작",
+ slideshowStop: "슬라이드쇼 중지"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-lt.js b/library/colorbox/i18n/jquery.colorbox-lt.js
new file mode 100644
index 000000000..a513fcf62
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-lt.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Lithuanian (lt)
+ translated by: Tomas Norkūnas
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Nuotrauka {current} iš {total}",
+ previous: "Atgal",
+ next: "Pirmyn",
+ close: "Uždaryti",
+ xhrError: "Nepavyko užkrauti turinio.",
+ imgError: "Nepavyko užkrauti nuotraukos.",
+ slideshowStart: "Pradėti automatinę peržiūrą",
+ slideshowStop: "Sustabdyti automatinę peržiūrą"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-lv.js b/library/colorbox/i18n/jquery.colorbox-lv.js
new file mode 100644
index 000000000..e376366b9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-lv.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Latvian (lv)
+ translated by: Matiss Roberts Treinis
+ site: x0.lv
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "attēls {current} no {total}",
+ previous: "iepriekšējais",
+ next: "nākamais",
+ close: "aizvērt",
+ xhrError: "Neizdevās ielādēt saturu.",
+ imgError: "Neizdevās ielādēt attēlu.",
+ slideshowStart: "sākt slaidrādi",
+ slideshowStop: "apturēt slaidrādi"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-my.js b/library/colorbox/i18n/jquery.colorbox-my.js
new file mode 100644
index 000000000..216e252cc
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-my.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Myanmar (my)
+ translated by: Yan Naing
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "ပုံ {total} မှာ {current} မြောက်ပုံ",
+ previous: "ရှေ့သို့",
+ next: "နောက်သို့",
+ close: "ပိတ်မည်",
+ xhrError: "ပါဝင်သော အကြောင်းအရာများ ဖော်ပြရာတွင် အနည်းငယ် ချို့ယွင်းမှုရှိနေပါသည်",
+ imgError: "ပုံပြသရာတွင် အနည်းငယ် ချို့ယွင်းချက် ရှိနေပါသည်",
+ slideshowStart: "ပုံများ စတင်ပြသမည်",
+ slideshowStop: "ပုံပြသခြင်း ရပ်ဆိုင်မည်"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-nl.js b/library/colorbox/i18n/jquery.colorbox-nl.js
new file mode 100644
index 000000000..dfc658ec9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-nl.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Dutch (nl)
+ translated by: barryvdh
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Afbeelding {current} van {total}",
+ previous: "Vorige",
+ next: "Volgende",
+ close: "Sluiten",
+ xhrError: "Deze inhoud kan niet geladen worden.",
+ imgError: "Deze afbeelding kan niet geladen worden.",
+ slideshowStart: "Diashow starten",
+ slideshowStop: "Diashow stoppen"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-no.js b/library/colorbox/i18n/jquery.colorbox-no.js
new file mode 100644
index 000000000..277c5d3f9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-no.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Norwegian (no)
+ translated by: lars-erik
+ site: markedspartner.no
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Bilde {current} av {total}",
+ previous: "Forrige",
+ next: "Neste",
+ close: "Lukk",
+ xhrError: "Feil ved lasting av innhold.",
+ imgError: "Feil ved lasting av bilde.",
+ slideshowStart: "Start lysbildefremvisning",
+ slideshowStop: "Stopp lysbildefremvisning"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-pl.js b/library/colorbox/i18n/jquery.colorbox-pl.js
new file mode 100644
index 000000000..1c04dae18
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-pl.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Polski (pl)
+ translated by: Tomasz Wasiński
+ site: 2bevisible.pl
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}. obrazek z {total}",
+ previous: "Poprzedni",
+ next: "Następny",
+ close: "Zamknij",
+ xhrError: "Nie udało się załadować treści.",
+ imgError: "Nie udało się załadować obrazka.",
+ slideshowStart: "rozpocznij pokaz slajdów",
+ slideshowStop: "zatrzymaj pokaz slajdów"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-pt-BR.js b/library/colorbox/i18n/jquery.colorbox-pt-BR.js
new file mode 100644
index 000000000..a405d93df
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-pt-BR.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Brazilian Portuguese (pt-BR)
+ translated by: ReinaldoMT
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imagem {current} de {total}",
+ previous: "Anterior",
+ next: "Próxima",
+ close: "Fechar",
+ slideshowStart: "iniciar apresentação de slides",
+ slideshowStop: "parar apresentação de slides",
+ xhrError: "Erro ao carregar o conteúdo.",
+ imgError: "Erro ao carregar a imagem."
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-ro.js b/library/colorbox/i18n/jquery.colorbox-ro.js
new file mode 100644
index 000000000..0a461e28a
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ro.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Romanian (ro)
+ translated by: shurub3l
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "imagine {current} din {total}",
+ previous: "precedenta",
+ next: "următoarea",
+ close: "închideți",
+ xhrError: "Acest conținut nu poate fi încărcat.",
+ imgError: "Această imagine nu poate fi încărcată",
+ slideshowStart: "începeți prezentarea (slideshow)",
+ slideshowStop: "opriți prezentarea (slideshow)"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-ru.js b/library/colorbox/i18n/jquery.colorbox-ru.js
index c9c220068..1d88b8cda 100644
--- a/library/colorbox/i18n/jquery.colorbox-ru.js
+++ b/library/colorbox/i18n/jquery.colorbox-ru.js
@@ -1,14 +1,16 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Russian (ru)
translated by: Marfa
- site: themarfa.name
+ site: themarfa.name
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "изображение {current} из {total}",
- previous: "предыдущее",
- next: "следующее",
+ previous: "назад",
+ next: "вперёд",
close: "закрыть",
xhrError: "Не удалось загрузить содержимое.",
- imgError: "Не удалось загрузить изображение."
+ imgError: "Не удалось загрузить изображение.",
+ slideshowStart: "начать слайд-шоу",
+ slideshowStop: "остановить слайд-шоу"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-si.js b/library/colorbox/i18n/jquery.colorbox-si.js
new file mode 100644
index 000000000..034b5b3c4
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-si.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Slovenian (si)
+ translated by: Boštjan Pišler (pisler.si)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prejšnja",
+ next: "Naslednja",
+ close: "Zapri",
+ xhrError: "Vsebine ni bilo mogoče naložiti.",
+ imgError: "Slike ni bilo mogoče naložiti.",
+ slideshowStart: "Zaženi prezentacijo",
+ slideshowStop: "Zaustavi prezentacijo"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-sk.js b/library/colorbox/i18n/jquery.colorbox-sk.js
new file mode 100644
index 000000000..faa9291cb
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sk.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Slovak (sk)
+ translated by: Jaroslav Kostal
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}. obrázok z {total}",
+ previous: "Predchádzajúci",
+ next: "Následujúci",
+ close: "Zatvoriť",
+ xhrError: "Obsah sa nepodarilo načítať.",
+ imgError: "Obrázok sa nepodarilo načítať.",
+ slideshowStart: "Spustiť slideshow",
+ slideshowStop: "zastaviť slideshow"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-sr.js b/library/colorbox/i18n/jquery.colorbox-sr.js
new file mode 100644
index 000000000..618e73c4a
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Serbian (sr)
+ translated by: Sasa Stefanovic (baguje.com)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prethodna",
+ next: "Sledeća",
+ close: "Zatvori",
+ xhrError: "Neuspešno učitavanje sadržaja.",
+ imgError: "Neuspešno učitavanje slike.",
+ slideshowStart: "Pokreni slideshow",
+ slideshowStop: "Zaustavi slideshow"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-sv.js b/library/colorbox/i18n/jquery.colorbox-sv.js
new file mode 100644
index 000000000..01bb1d8c6
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sv.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Swedish (sv)
+ translated by: Mattias Reichel
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Bild {current} av {total}",
+ previous: "Föregående",
+ next: "Nästa",
+ close: "Stäng",
+ xhrError: "Innehållet kunde inte laddas.",
+ imgError: "Den här bilden kunde inte laddas.",
+ slideshowStart: "Starta bildspel",
+ slideshowStop: "Stoppa bildspel"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-tr.js b/library/colorbox/i18n/jquery.colorbox-tr.js
new file mode 100644
index 000000000..d467c2ef1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-tr.js
@@ -0,0 +1,19 @@
+/*
+ jQuery Colorbox language configuration
+ language: Turkish (tr)
+ translated by: Caner ÖNCEL
+ site: egonomik.com
+
+ edited by: Sinan Eldem
+ www.sinaneldem.com.tr
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Görsel {current} / {total}",
+ previous: "Önceki",
+ next: "Sonraki",
+ close: "Kapat",
+ xhrError: "İçerik yüklenirken hata meydana geldi.",
+ imgError: "Resim yüklenirken hata meydana geldi.",
+ slideshowStart: "Slaytı Başlat",
+ slideshowStop: "Slaytı Durdur"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-uk.js b/library/colorbox/i18n/jquery.colorbox-uk.js
new file mode 100644
index 000000000..3f786d3f4
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-uk.js
@@ -0,0 +1,16 @@
+/*
+ jQuery ColorBox language configuration
+ language: Ukrainian (uk)
+ translated by: Andrew
+ http://acisoftware.com.ua
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "зображення {current} з {total}",
+ previous: "попереднє",
+ next: "наступне",
+ close: "закрити",
+ xhrError: "Не вдалося завантажити вміст.",
+ imgError: "Не вдалося завантажити зображення.",
+ slideshowStart: "почати слайд-шоу",
+ slideshowStop: "зупинити слайд-шоу"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-zh-CN.js b/library/colorbox/i18n/jquery.colorbox-zh-CN.js
new file mode 100644
index 000000000..770d8eacf
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-zh-CN.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Chinese Simplified (zh-CN)
+ translated by: zhao weiming
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "当前图像 {current} 总共 {total}",
+ previous: "前一页",
+ next: "后一页",
+ close: "关闭",
+ xhrError: "此内容无法加载",
+ imgError: "此图片无法加载",
+ slideshowStart: "开始播放幻灯片",
+ slideshowStop: "停止播放幻灯片"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-zh-TW.js b/library/colorbox/i18n/jquery.colorbox-zh-TW.js
new file mode 100644
index 000000000..b0c4f123d
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-zh-TW.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Chinese Traditional (zh-TW)
+ translated by: Atans Chiu
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "圖片 {current} 總共 {total}",
+ previous: "上一頁",
+ next: "下一頁",
+ close: "關閉",
+ xhrError: "此內容加載失敗.",
+ imgError: "此圖片加載失敗.",
+ slideshowStart: "開始幻燈片",
+ slideshowStop: "結束幻燈片"
+}); \ No newline at end of file
diff --git a/library/colorbox/images/border.png b/library/colorbox/images/border.png
deleted file mode 100644
index df13bb6da..000000000
--- a/library/colorbox/images/border.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/controls.png b/library/colorbox/images/controls.png
deleted file mode 100644
index 65cfd1dc9..000000000
--- a/library/colorbox/images/controls.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/loading.gif b/library/colorbox/images/loading.gif
deleted file mode 100644
index b4695d811..000000000
--- a/library/colorbox/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/loading_background.png b/library/colorbox/images/loading_background.png
deleted file mode 100644
index 9de11f467..000000000
--- a/library/colorbox/images/loading_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/jquery.colorbox-min.js b/library/colorbox/jquery.colorbox-min.js
index 969064042..c0cbe5cb7 100644
--- a/library/colorbox/jquery.colorbox-min.js
+++ b/library/colorbox/jquery.colorbox-min.js
@@ -1 +1,6 @@
-(function($,document,window){var defaults={transition:"elastic",speed:300,width:false,initialWidth:"600",innerWidth:false,maxWidth:false,height:false,initialHeight:"450",innerHeight:false,maxHeight:false,scalePhotos:true,scrolling:true,inline:false,html:false,iframe:false,fastIframe:true,photo:false,href:false,title:false,rel:false,opacity:.9,preloading:true,className:false,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:false,returnFocus:true,reposition:true,loop:true,slideshow:false,slideshowAuto:true,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:false,onLoad:false,onComplete:false,onCleanup:false,onClosed:false,overlayClose:true,escKey:true,arrowKey:true,top:false,bottom:false,left:false,right:false,fixed:false,data:undefined},colorbox="colorbox",prefix="cbox",boxElement=prefix+"Element",event_open=prefix+"_open",event_load=prefix+"_load",event_complete=prefix+"_complete",event_cleanup=prefix+"_cleanup",event_closed=prefix+"_closed",event_purge=prefix+"_purge",isIE=!$.support.leadingWhitespace,isIE6=isIE&&!window.XMLHttpRequest,event_ie6=prefix+"_IE6",$overlay,$box,$wrap,$content,$topBorder,$leftBorder,$rightBorder,$bottomBorder,$related,$window,$loaded,$loadingBay,$loadingOverlay,$title,$current,$slideshow,$next,$prev,$close,$groupControls,$events=$({}),settings,interfaceHeight,interfaceWidth,loadedHeight,loadedWidth,element,index,photo,open,active,closing,loadingTimer,publicMethod,div="div",className,init;function $tag(tag,id,css){var element=document.createElement(tag);if(id){element.id=prefix+id}if(css){element.style.cssText=css}return $(element)}function getIndex(increment){var max=$related.length,newIndex=(index+increment)%max;return newIndex<0?max+newIndex:newIndex}function setSize(size,dimension){return Math.round((/%/.test(size)?(dimension==="x"?$window.width():$window.height())/100:1)*parseInt(size,10))}function isImage(url){return settings.photo||/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(url)}function makeSettings(){var i,data=$.data(element,colorbox);if(data==null){settings=$.extend({},defaults);if(console&&console.log){console.log("Error: cboxElement missing settings object")}}else{settings=$.extend({},data)}for(i in settings){if($.isFunction(settings[i])&&i.slice(0,2)!=="on"){settings[i]=settings[i].call(element)}}settings.rel=settings.rel||element.rel||$(element).data("rel")||"nofollow";settings.href=settings.href||$(element).attr("href");settings.title=settings.title||element.title;if(typeof settings.href==="string"){settings.href=$.trim(settings.href)}}function trigger(event,callback){$(document).trigger(event);$events.trigger(event);if($.isFunction(callback)){callback.call(element)}}function slideshow(){var timeOut,className=prefix+"Slideshow_",click="click."+prefix,clear,set,start,stop;if(settings.slideshow&&$related[1]){clear=function(){clearTimeout(timeOut)};set=function(){if(settings.loop||$related[index+1]){timeOut=setTimeout(publicMethod.next,settings.slideshowSpeed)}};start=function(){$slideshow.html(settings.slideshowStop).unbind(click).one(click,stop);$events.bind(event_complete,set).bind(event_load,clear).bind(event_cleanup,stop);$box.removeClass(className+"off").addClass(className+"on")};stop=function(){clear();$events.unbind(event_complete,set).unbind(event_load,clear).unbind(event_cleanup,stop);$slideshow.html(settings.slideshowStart).unbind(click).one(click,function(){publicMethod.next();start()});$box.removeClass(className+"on").addClass(className+"off")};if(settings.slideshowAuto){start()}else{stop()}}else{$box.removeClass(className+"off "+className+"on")}}function launch(target){if(!closing){element=target;makeSettings();$related=$(element);index=0;if(settings.rel!=="nofollow"){$related=$("."+boxElement).filter(function(){var data=$.data(this,colorbox),relRelated;if(data){relRelated=$(this).data("rel")||data.rel||this.rel}return relRelated===settings.rel});index=$related.index(element);if(index===-1){$related=$related.add(element);index=$related.length-1}}if(!open){open=active=true;$box.css({visibility:"hidden",display:"block"});$loaded=$tag(div,"LoadedContent","width:0; height:0; overflow:hidden").appendTo($content);interfaceHeight=$topBorder.height()+$bottomBorder.height()+$content.outerHeight(true)-$content.height();interfaceWidth=$leftBorder.width()+$rightBorder.width()+$content.outerWidth(true)-$content.width();loadedHeight=$loaded.outerHeight(true);loadedWidth=$loaded.outerWidth(true);if(settings.returnFocus){$(element).blur();$events.one(event_closed,function(){$(element).focus()})}$overlay.css({opacity:parseFloat(settings.opacity),cursor:settings.overlayClose?"pointer":"auto",visibility:"visible"}).show();settings.w=setSize(settings.initialWidth,"x");settings.h=setSize(settings.initialHeight,"y");publicMethod.position();if(isIE6){$window.bind("resize."+event_ie6+" scroll."+event_ie6,function(){$overlay.css({width:$window.width(),height:$window.height(),top:$window.scrollTop(),left:$window.scrollLeft()})}).trigger("resize."+event_ie6)}slideshow();trigger(event_open,settings.onOpen);$groupControls.add($title).hide();$close.html(settings.close).show()}publicMethod.load(true)}}function appendHTML(){if(!$box&&document.body){init=false;$window=$(window);$box=$tag(div).attr({id:colorbox,"class":isIE?prefix+(isIE6?"IE6":"IE"):""}).hide();$overlay=$tag(div,"Overlay",isIE6?"position:absolute":"").hide();$loadingOverlay=$tag(div,"LoadingOverlay").add($tag(div,"LoadingGraphic"));$wrap=$tag(div,"Wrapper");$content=$tag(div,"Content").append($title=$tag(div,"Title"),$current=$tag(div,"Current"),$next=$tag(div,"Next"),$prev=$tag(div,"Previous"),$slideshow=$tag(div,"Slideshow"),$close=$tag(div,"Close"));$wrap.append($tag(div).append($tag(div,"TopLeft"),$topBorder=$tag(div,"TopCenter"),$tag(div,"TopRight")),$tag(div,false,"clear:left").append($leftBorder=$tag(div,"MiddleLeft"),$content,$rightBorder=$tag(div,"MiddleRight")),$tag(div,false,"clear:left").append($tag(div,"BottomLeft"),$bottomBorder=$tag(div,"BottomCenter"),$tag(div,"BottomRight"))).find("div div").css({"float":"left"});$loadingBay=$tag(div,false,"position:absolute; width:9999px; visibility:hidden; display:none");$groupControls=$next.add($prev).add($current).add($slideshow);$(document.body).append($overlay,$box.append($wrap,$loadingBay))}}function addBindings(){function clickHandler(e){if(!(e.which>1||e.shiftKey||e.altKey||e.metaKey)){e.preventDefault();launch(this)}}if($box){if(!init){init=true;$next.click(function(){publicMethod.next()});$prev.click(function(){publicMethod.prev()});$close.click(function(){publicMethod.close()});$overlay.click(function(){if(settings.overlayClose){publicMethod.close()}});$(document).bind("keydown."+prefix,function(e){var key=e.keyCode;if(open&&settings.escKey&&key===27){e.preventDefault();publicMethod.close()}if(open&&settings.arrowKey&&$related[1]){if(key===37){e.preventDefault();$prev.click()}else if(key===39){e.preventDefault();$next.click()}}});if($.isFunction($.fn.on)){$(document).on("click."+prefix,"."+boxElement,clickHandler)}else{$("."+boxElement).live("click."+prefix,clickHandler)}}return true}return false}if($.colorbox){return}$(appendHTML);publicMethod=$.fn[colorbox]=$[colorbox]=function(options,callback){var $this=this;options=options||{};appendHTML();if(addBindings()){if($.isFunction($this)){$this=$("<a/>");options.open=true}else if(!$this[0]){return $this}if(callback){options.onComplete=callback}$this.each(function(){$.data(this,colorbox,$.extend({},$.data(this,colorbox)||defaults,options))}).addClass(boxElement);if($.isFunction(options.open)&&options.open.call($this)||options.open){launch($this[0])}}return $this};publicMethod.position=function(speed,loadedCallback){var css,top=0,left=0,offset=$box.offset(),scrollTop,scrollLeft;$window.unbind("resize."+prefix);$box.css({top:-9e4,left:-9e4});scrollTop=$window.scrollTop();scrollLeft=$window.scrollLeft();if(settings.fixed&&!isIE6){offset.top-=scrollTop;offset.left-=scrollLeft;$box.css({position:"fixed"})}else{top=scrollTop;left=scrollLeft;$box.css({position:"absolute"})}if(settings.right!==false){left+=Math.max($window.width()-settings.w-loadedWidth-interfaceWidth-setSize(settings.right,"x"),0)}else if(settings.left!==false){left+=setSize(settings.left,"x")}else{left+=Math.round(Math.max($window.width()-settings.w-loadedWidth-interfaceWidth,0)/2)}if(settings.bottom!==false){top+=Math.max($window.height()-settings.h-loadedHeight-interfaceHeight-setSize(settings.bottom,"y"),0)}else if(settings.top!==false){top+=setSize(settings.top,"y")}else{top+=Math.round(Math.max($window.height()-settings.h-loadedHeight-interfaceHeight,0)/2)}$box.css({top:offset.top,left:offset.left,visibility:"visible"});speed=$box.width()===settings.w+loadedWidth&&$box.height()===settings.h+loadedHeight?0:speed||0;$wrap[0].style.width=$wrap[0].style.height="9999px";function modalDimensions(that){$topBorder[0].style.width=$bottomBorder[0].style.width=$content[0].style.width=parseInt(that.style.width,10)-interfaceWidth+"px";$content[0].style.height=$leftBorder[0].style.height=$rightBorder[0].style.height=parseInt(that.style.height,10)-interfaceHeight+"px"}css={width:settings.w+loadedWidth+interfaceWidth,height:settings.h+loadedHeight+interfaceHeight,top:top,left:left};if(speed===0){$box.css(css)}$box.dequeue().animate(css,{duration:speed,complete:function(){modalDimensions(this);active=false;$wrap[0].style.width=settings.w+loadedWidth+interfaceWidth+"px";$wrap[0].style.height=settings.h+loadedHeight+interfaceHeight+"px";if(settings.reposition){setTimeout(function(){$window.bind("resize."+prefix,publicMethod.position)},1)}if(loadedCallback){loadedCallback()}},step:function(){modalDimensions(this)}})};publicMethod.resize=function(options){if(open){options=options||{};if(options.width){settings.w=setSize(options.width,"x")-loadedWidth-interfaceWidth}if(options.innerWidth){settings.w=setSize(options.innerWidth,"x")}$loaded.css({width:settings.w});if(options.height){settings.h=setSize(options.height,"y")-loadedHeight-interfaceHeight}if(options.innerHeight){settings.h=setSize(options.innerHeight,"y")}if(!options.innerHeight&&!options.height){$loaded.css({height:"auto"});settings.h=$loaded.height()}$loaded.css({height:settings.h});publicMethod.position(settings.transition==="none"?0:settings.speed)}};publicMethod.prep=function(object){if(!open){return}var callback,speed=settings.transition==="none"?0:settings.speed;$loaded.empty().remove();$loaded=$tag(div,"LoadedContent").append(object);function getWidth(){settings.w=settings.w||$loaded.width();settings.w=settings.mw&&settings.mw<settings.w?settings.mw:settings.w;return settings.w}function getHeight(){settings.h=settings.h||$loaded.height();settings.h=settings.mh&&settings.mh<settings.h?settings.mh:settings.h;return settings.h}$loaded.hide().appendTo($loadingBay.show()).css({width:getWidth(),overflow:settings.scrolling?"auto":"hidden"}).css({height:getHeight()}).prependTo($content);$loadingBay.hide();$(photo).css({"float":"none"});callback=function(){var total=$related.length,iframe,frameBorder="frameBorder",allowTransparency="allowTransparency",complete;if(!open){return}function removeFilter(){if(isIE){$box[0].style.removeAttribute("filter")}}complete=function(){clearTimeout(loadingTimer);$loadingOverlay.remove();trigger(event_complete,settings.onComplete)};if(isIE){if(photo){$loaded.fadeIn(100)}}$title.html(settings.title).add($loaded).show();if(total>1){if(typeof settings.current==="string"){$current.html(settings.current.replace("{current}",index+1).replace("{total}",total)).show()}$next[settings.loop||index<total-1?"show":"hide"]().html(settings.next);$prev[settings.loop||index?"show":"hide"]().html(settings.previous);if(settings.slideshow){$slideshow.show()}if(settings.preloading){$.each([getIndex(-1),getIndex(1)],function(){var src,img,i=$related[this],data=$.data(i,colorbox);if(data&&data.href){src=data.href;if($.isFunction(src)){src=src.call(i)}}else{src=$(i).attr("href")}if(src&&(isImage(src)||data.photo)){img=new Image;img.src=src}})}}else{$groupControls.hide()}if(settings.iframe){iframe=$tag("iframe")[0];if(frameBorder in iframe){iframe[frameBorder]=0}if(allowTransparency in iframe){iframe[allowTransparency]="true"}if(!settings.scrolling){iframe.scrolling="no"}$(iframe).attr({src:settings.href,name:(new Date).getTime(),"class":prefix+"Iframe",allowFullScreen:true,webkitAllowFullScreen:true,mozallowfullscreen:true}).one("load",complete).appendTo($loaded);$events.one(event_purge,function(){iframe.src="//about:blank"});if(settings.fastIframe){$(iframe).trigger("load")}}else{complete()}if(settings.transition==="fade"){$box.fadeTo(speed,1,removeFilter)}else{removeFilter()}};if(settings.transition==="fade"){$box.fadeTo(speed,0,function(){publicMethod.position(0,callback)})}else{publicMethod.position(speed,callback)}};publicMethod.load=function(launched){var href,setResize,prep=publicMethod.prep,$inline;active=true;photo=false;element=$related[index];if(!launched){makeSettings()}if(className){$box.add($overlay).removeClass(className)}if(settings.className){$box.add($overlay).addClass(settings.className)}className=settings.className;trigger(event_purge);trigger(event_load,settings.onLoad);settings.h=settings.height?setSize(settings.height,"y")-loadedHeight-interfaceHeight:settings.innerHeight&&setSize(settings.innerHeight,"y");settings.w=settings.width?setSize(settings.width,"x")-loadedWidth-interfaceWidth:settings.innerWidth&&setSize(settings.innerWidth,"x");settings.mw=settings.w;settings.mh=settings.h;if(settings.maxWidth){settings.mw=setSize(settings.maxWidth,"x")-loadedWidth-interfaceWidth;settings.mw=settings.w&&settings.w<settings.mw?settings.w:settings.mw}if(settings.maxHeight){settings.mh=setSize(settings.maxHeight,"y")-loadedHeight-interfaceHeight;settings.mh=settings.h&&settings.h<settings.mh?settings.h:settings.mh}href=settings.href;loadingTimer=setTimeout(function(){$loadingOverlay.appendTo($content)},100);if(settings.inline){$inline=$tag(div).hide().insertBefore($(href)[0]);$events.one(event_purge,function(){$inline.replaceWith($loaded.children())});prep($(href))}else if(settings.iframe){prep(" ")}else if(settings.html){prep(settings.html)}else if(isImage(href)){$(photo=new Image).addClass(prefix+"Photo").bind("error",function(){settings.title=false;prep($tag(div,"Error").html(settings.imgError))}).one("load",function(){var percent;if(settings.scalePhotos){setResize=function(){photo.height-=photo.height*percent;photo.width-=photo.width*percent};if(settings.mw&&photo.width>settings.mw){percent=(photo.width-settings.mw)/photo.width;setResize()}if(settings.mh&&photo.height>settings.mh){percent=(photo.height-settings.mh)/photo.height;setResize()}}if(settings.h){photo.style.marginTop=Math.max(settings.mh-photo.height,0)/2+"px"}if($related[1]&&(settings.loop||$related[index+1])){photo.style.cursor="pointer";photo.onclick=function(){publicMethod.next()}}if(isIE){photo.style.msInterpolationMode="bicubic"}setTimeout(function(){prep(photo)},1)});setTimeout(function(){photo.src=href},1)}else if(href){$loadingBay.load(href,settings.data,function(data,status){prep(status==="error"?$tag(div,"Error").html(settings.xhrError):$(this).contents())})}};publicMethod.next=function(){if(!active&&$related[1]&&(settings.loop||$related[index+1])){index=getIndex(1);publicMethod.load()}};publicMethod.prev=function(){if(!active&&$related[1]&&(settings.loop||index)){index=getIndex(-1);publicMethod.load()}};publicMethod.close=function(){if(open&&!closing){closing=true;open=false;trigger(event_cleanup,settings.onCleanup);$window.unbind("."+prefix+" ."+event_ie6);$overlay.fadeTo(200,0);$box.stop().fadeTo(300,0,function(){$box.add($overlay).css({opacity:1,cursor:"auto"}).hide();trigger(event_purge);$loaded.empty().remove();setTimeout(function(){closing=false;trigger(event_closed,settings.onClosed)},1)})}};publicMethod.remove=function(){$([]).add($box).add($overlay).remove();$box=null;$("."+boxElement).removeData(colorbox).removeClass(boxElement);$(document).unbind("click."+prefix)};publicMethod.element=function(){return $(element)};publicMethod.settings=defaults})(jQuery,document,window); \ No newline at end of file
+/*!
+ Colorbox 1.5.14
+ license: MIT
+ http://www.jacklmoore.com/colorbox
+*/
+(function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(z+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in y[0]&&!y[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),y.focus())}function c(t){c.str!==t&&(y.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){z=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),z=W.index(_.el),-1===z&&(W=W.add(_.el),z=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!$){$=q=!0,c(_.get("className")),y.css({visibility:"hidden",display:"block",opacity:""}),L=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(L),D=T.height()+k.height()+b.outerHeight(!0)-b.height(),j=C.width()+H.width()+b.outerWidth(!0)-b.width(),A=L.outerHeight(!0),N=L.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=(l!==!1?Math.min(h,a(l,"x")):h)-N-j,_.h=(f!==!1?Math.min(s,a(f,"y")):s)-A-D,L.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),y.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){y||(V=!1,E=t(i),y=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),S=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),x=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),I=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),R=n("button","Slideshow"),S),B=t('<button type="button"/>').attr({id:Z+"Close"}),x.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(I).add(R)),e.body&&!y.parent().length&&t(e.body).append(v,y.append(x,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return y?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;$&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),$&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if(q=!0,U=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-A-D:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-N-j:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-N-j,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-A-D,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){S.show()},100),_.get("inline")){var c=t(e);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),U=new Image,t(U).addClass(Z+"Photo").bind("error",function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;t.each(["alt","longdesc","aria-describedby"],function(e,i){var n=t(_.el).attr(i)||t(_.el).attr("data-"+i);n&&U.setAttribute(i,n)}),_.get("retinaImage")&&i.devicePixelRatio>1&&(U.height=U.height/i.devicePixelRatio,U.width=U.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){U.height-=U.height*e,U.width-=U.width*e},_.mw&&U.width>_.mw&&(e=(U.width-_.mw)/U.width,o()),_.mh&&U.height>_.mh&&(e=(U.height-_.mh)/U.height,o())),_.h&&(U.style.marginTop=Math.max(_.mh-U.height,0)/2+"px"),W[1]&&(_.get("loop")||W[z+1])&&(U.style.cursor="pointer",U.onclick=function(){J.next()}),U.style.width=U.width+"px",U.style.height=U.height+"px",h(U)},1)}),U.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,y,x,b,T,C,H,k,W,E,L,M,S,F,I,R,K,P,B,O,_,D,j,A,N,z,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[z+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){R.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),y.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),R.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),y.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,R.hide(),t(),ae.unbind(ne,e).unbind(ie,t),y.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),R.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;if(e=e||{},t.isFunction(o))o=t("<a/>"),e.open=!0;else if(!o[0])return o;return o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(y[0].style.width,10)-j+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(y[0].style.height,10)-D+"px"}var r,h,s,l=0,d=0,c=y.offset();if(E.unbind("resize."+Z),y.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,y.css({position:"fixed"})):(l=h,d=s,y.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-N-j-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-N-j,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-A-D-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-A-D,0)/2),y.css({top:c.top,left:c.left,visibility:"visible"}),x[0].style.width=x[0].style.height="9999px",r={width:_.w+N+j,height:_.h+A+D,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||y.css(r),y.dequeue().animate(r,{duration:e||0,complete:function(){n(),q=!1,x[0].style.width=_.w+N+j+"px",x[0].style.height=_.h+A+D+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;$&&(t=t||{},t.width&&(_.w=a(t.width,"x")-N-j),t.innerWidth&&(_.w=a(t.innerWidth,"x")),L.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-A-D),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=L.scrollTop(),L.css({height:"auto"}),_.h=L.height()),L.css({height:_.h}),e&&L.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||L.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||L.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if($){var d,g="none"===_.get("transition")?0:_.get("speed");L.remove(),L=n(se,"LoadedContent").append(i),L.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(U).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&y[0].style.removeAttribute("filter")}var n,o,a=W.length;$&&(o=function(){clearTimeout(Q),S.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),L.show(),a>1?("string"==typeof _.get("current")&&I.html(_.get("current").replace("{current}",z+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>z?"show":"hide"]().html(_.get("next")),P[_.get("loop")||z?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=e.createElement("iframe"),"frameBorder"in n&&(n.frameBorder=0),"allowTransparency"in n&&(n.allowTransparency="true"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0}).one("load",o).appendTo(L),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?y.fadeTo(g,1,i):i())},"fade"===_.get("transition")?y.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!q&&W[1]&&(_.get("loop")||W[z+1])&&(z=h(1),f(W[z]))},J.prev=function(){!q&&W[1]&&(_.get("loop")||z)&&(z=h(-1),f(W[z]))},J.close=function(){$&&!G&&(G=!0,$=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),y.stop().fadeTo(_.get("fadeOut")||0,0,function(){y.hide(),v.hide(),u(he),L.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){y&&(y.stop(),t[Y].close(),y.stop(!1,!0).remove(),v.remove(),G=!1,y=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window); \ No newline at end of file
diff --git a/library/colorbox/jquery.colorbox.js b/library/colorbox/jquery.colorbox.js
index 5b9aecdc2..c0348849e 100644
--- a/library/colorbox/jquery.colorbox.js
+++ b/library/colorbox/jquery.colorbox.js
@@ -1,15 +1,23 @@
-/*
- jQuery ColorBox v1.3.32 - 2013-01-31
- (c) 2013 Jack Moore - jacklmoore.com/colorbox
- license: http://www.opensource.org/licenses/mit-license.php
+/*!
+ Colorbox 1.5.14
+ license: MIT
+ http://www.jacklmoore.com/colorbox
*/
(function ($, document, window) {
var
// Default settings object.
// See http://jacklmoore.com/colorbox for details.
defaults = {
+ // data sources
+ html: false,
+ photo: false,
+ iframe: false,
+ inline: false,
+
+ // behavior and appearance
transition: "elastic",
speed: 300,
+ fadeOut: 300,
width: false,
initialWidth: "600",
innerWidth: false,
@@ -20,18 +28,36 @@
maxHeight: false,
scalePhotos: true,
scrolling: true,
- inline: false,
- html: false,
- iframe: false,
- fastIframe: true,
- photo: false,
- href: false,
- title: false,
- rel: false,
opacity: 0.9,
preloading: true,
className: false,
+ overlayClose: true,
+ escKey: true,
+ arrowKey: true,
+ top: false,
+ bottom: false,
+ left: false,
+ right: false,
+ fixed: false,
+ data: undefined,
+ closeButton: true,
+ fastIframe: true,
+ open: false,
+ reposition: true,
+ loop: true,
+ slideshow: false,
+ slideshowAuto: true,
+ slideshowSpeed: 2500,
+ slideshowStart: "start slideshow",
+ slideshowStop: "stop slideshow",
+ photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,
+
+ // alternate image paths for high-res displays
+ retinaImage: false,
+ retinaUrl: false,
+ retinaSuffix: '@2x.$1',
+ // internationalization
current: "image {current} of {total}",
previous: "previous",
next: "next",
@@ -39,31 +65,29 @@
xhrError: "This content failed to load.",
imgError: "This image failed to load.",
- open: false,
+ // accessbility
returnFocus: true,
- reposition: true,
- loop: true,
- slideshow: false,
- slideshowAuto: true,
- slideshowSpeed: 2500,
- slideshowStart: "start slideshow",
- slideshowStop: "stop slideshow",
+ trapFocus: true,
+
+ // callbacks
onOpen: false,
onLoad: false,
onComplete: false,
onCleanup: false,
onClosed: false,
- overlayClose: true,
- escKey: true,
- arrowKey: true,
- top: false,
- bottom: false,
- left: false,
- right: false,
- fixed: false,
- data: undefined
+
+ rel: function() {
+ return this.rel;
+ },
+ href: function() {
+ // using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
+ return $(this).attr('href');
+ },
+ title: function() {
+ return this.title;
+ }
},
-
+
// Abstracting the HTML and event identifiers for easy rebranding
colorbox = 'colorbox',
prefix = 'cbox',
@@ -76,11 +100,6 @@
event_cleanup = prefix + '_cleanup',
event_closed = prefix + '_closed',
event_purge = prefix + '_purge',
-
- // Special Handling for IE
- isIE = !$.support.leadingWhitespace, // IE6 to IE8
- isIE6 = isIE && !window.XMLHttpRequest, // IE6
- event_ie6 = prefix + '_IE6',
// Cached jQuery Object Variables
$overlay,
@@ -103,7 +122,7 @@
$prev,
$close,
$groupControls,
- $events = $({}),
+ $events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2
// Variables for cached values or use across multiple functions
settings,
@@ -111,7 +130,6 @@
interfaceWidth,
loadedHeight,
loadedWidth,
- element,
index,
photo,
open,
@@ -120,14 +138,15 @@
loadingTimer,
publicMethod,
div = "div",
- className,
+ requests = 0,
+ previousCSS = {},
init;
// ****************
// HELPER FUNCTIONS
// ****************
- // Convience function for creating new jQuery objects
+ // Convenience function for creating new jQuery objects
function $tag(tag, id, css) {
var element = document.createElement(tag);
@@ -141,6 +160,44 @@
return $(element);
}
+
+ // Get the window height using innerHeight when available to avoid an issue with iOS
+ // http://bugs.jquery.com/ticket/6724
+ function winheight() {
+ return window.innerHeight ? window.innerHeight : $(window).height();
+ }
+
+ function Settings(element, options) {
+ if (options !== Object(options)) {
+ options = {};
+ }
+
+ this.cache = {};
+ this.el = element;
+
+ this.value = function(key) {
+ var dataAttr;
+
+ if (this.cache[key] === undefined) {
+ dataAttr = $(this.el).attr('data-cbox-'+key);
+
+ if (dataAttr !== undefined) {
+ this.cache[key] = dataAttr;
+ } else if (options[key] !== undefined) {
+ this.cache[key] = options[key];
+ } else if (defaults[key] !== undefined) {
+ this.cache[key] = defaults[key];
+ }
+ }
+
+ return this.cache[key];
+ };
+
+ this.get = function(key) {
+ var value = this.value(key);
+ return $.isFunction(value) ? value.call(this.el, this) : value;
+ };
+ }
// Determine the next and previous members in a group.
function getIndex(increment) {
@@ -153,224 +210,254 @@
// Convert '%' and 'px' values to integers
function setSize(size, dimension) {
- return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
+ return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
}
// Checks an href to see if it is a photo.
- // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
- function isImage(url) {
- return settings.photo || /\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(url);
+ // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
+ function isImage(settings, url) {
+ return settings.get('photo') || settings.get('photoRegex').test(url);
}
- // Assigns function results to their respective properties
- function makeSettings() {
- var i,
- data = $.data(element, colorbox);
-
- if (data == null) {
- settings = $.extend({}, defaults);
- if (console && console.log) {
- console.log('Error: cboxElement missing settings object');
- }
- } else {
- settings = $.extend({}, data);
+ function retinaUrl(settings, url) {
+ return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
+ }
+
+ function trapFocus(e) {
+ if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
+ e.stopPropagation();
+ $box.focus();
}
-
- for (i in settings) {
- if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
- settings[i] = settings[i].call(element);
- }
+ }
+
+ function setClass(str) {
+ if (setClass.str !== str) {
+ $box.add($overlay).removeClass(setClass.str).addClass(str);
+ setClass.str = str;
}
+ }
+
+ function getRelated(rel) {
+ index = 0;
- settings.rel = settings.rel || element.rel || $(element).data('rel') || 'nofollow';
- settings.href = settings.href || $(element).attr('href');
- settings.title = settings.title || element.title;
-
- if (typeof settings.href === "string") {
- settings.href = $.trim(settings.href);
+ if (rel && rel !== false && rel !== 'nofollow') {
+ $related = $('.' + boxElement).filter(function () {
+ var options = $.data(this, colorbox);
+ var settings = new Settings(this, options);
+ return (settings.get('rel') === rel);
+ });
+ index = $related.index(settings.el);
+
+ // Check direct calls to Colorbox.
+ if (index === -1) {
+ $related = $related.add(settings.el);
+ index = $related.length - 1;
+ }
+ } else {
+ $related = $(settings.el);
}
}
- function trigger(event, callback) {
+ function trigger(event) {
// for external use
$(document).trigger(event);
-
// for internal use
- $events.trigger(event);
+ $events.triggerHandler(event);
+ }
+
+ var slideshow = (function(){
+ var active,
+ className = prefix + "Slideshow_",
+ click = "click." + prefix,
+ timeOut;
- if ($.isFunction(callback)) {
- callback.call(element);
+ function clear () {
+ clearTimeout(timeOut);
}
- }
- // Slideshow functionality
- function slideshow() {
- var
- timeOut,
- className = prefix + "Slideshow_",
- click = "click." + prefix,
- clear,
- set,
- start,
- stop;
-
- if (settings.slideshow && $related[1]) {
- clear = function () {
- clearTimeout(timeOut);
- };
+ function set() {
+ if (settings.get('loop') || $related[index + 1]) {
+ clear();
+ timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
+ }
+ }
- set = function () {
- if (settings.loop || $related[index + 1]) {
- timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
- }
- };
+ function start() {
+ $slideshow
+ .html(settings.get('slideshowStop'))
+ .unbind(click)
+ .one(click, stop);
- start = function () {
- $slideshow
- .html(settings.slideshowStop)
- .unbind(click)
- .one(click, stop);
+ $events
+ .bind(event_complete, set)
+ .bind(event_load, clear);
- $events
- .bind(event_complete, set)
- .bind(event_load, clear)
- .bind(event_cleanup, stop);
+ $box.removeClass(className + "off").addClass(className + "on");
+ }
- $box.removeClass(className + "off").addClass(className + "on");
- };
+ function stop() {
+ clear();
- stop = function () {
- clear();
-
- $events
- .unbind(event_complete, set)
- .unbind(event_load, clear)
- .unbind(event_cleanup, stop);
-
- $slideshow
- .html(settings.slideshowStart)
- .unbind(click)
- .one(click, function () {
- publicMethod.next();
- start();
- });
+ $events
+ .unbind(event_complete, set)
+ .unbind(event_load, clear);
+
+ $slideshow
+ .html(settings.get('slideshowStart'))
+ .unbind(click)
+ .one(click, function () {
+ publicMethod.next();
+ start();
+ });
- $box.removeClass(className + "on").addClass(className + "off");
- };
-
- if (settings.slideshowAuto) {
- start();
- } else {
- stop();
- }
- } else {
- $box.removeClass(className + "off " + className + "on");
+ $box.removeClass(className + "on").addClass(className + "off");
}
- }
- function launch(target) {
- if (!closing) {
-
- element = target;
-
- makeSettings();
-
- $related = $(element);
-
- index = 0;
-
- if (settings.rel !== 'nofollow') {
- $related = $('.' + boxElement).filter(function () {
- var data = $.data(this, colorbox),
- relRelated;
+ function reset() {
+ active = false;
+ $slideshow.hide();
+ clear();
+ $events
+ .unbind(event_complete, set)
+ .unbind(event_load, clear);
+ $box.removeClass(className + "off " + className + "on");
+ }
- if (data) {
- relRelated = $(this).data('rel') || data.rel || this.rel;
+ return function(){
+ if (active) {
+ if (!settings.get('slideshow')) {
+ $events.unbind(event_cleanup, reset);
+ reset();
+ }
+ } else {
+ if (settings.get('slideshow') && $related[1]) {
+ active = true;
+ $events.one(event_cleanup, reset);
+ if (settings.get('slideshowAuto')) {
+ start();
+ } else {
+ stop();
}
-
- return (relRelated === settings.rel);
- });
- index = $related.index(element);
-
- // Check direct calls to ColorBox.
- if (index === -1) {
- $related = $related.add(element);
- index = $related.length - 1;
+ $slideshow.show();
}
}
+ };
+
+ }());
+
+
+ function launch(element) {
+ var options;
+
+ if (!closing) {
+
+ options = $(element).data(colorbox);
+
+ settings = new Settings(element, options);
+ getRelated(settings.get('rel'));
+
if (!open) {
open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
+
+ setClass(settings.get('className'));
// Show colorbox so the sizes can be calculated in older versions of jQuery
- $box.css({visibility:'hidden', display:'block'});
+ $box.css({visibility:'hidden', display:'block', opacity:''});
- $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden').appendTo($content);
+ $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
+ $content.css({width:'', height:''}).append($loaded);
// Cache values needed for size calculations
- interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
+ interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
loadedHeight = $loaded.outerHeight(true);
loadedWidth = $loaded.outerWidth(true);
- if (settings.returnFocus) {
- $(element).blur();
- $events.one(event_closed, function () {
- $(element).focus();
- });
- }
-
- $overlay.css({
- opacity: parseFloat(settings.opacity),
- cursor: settings.overlayClose ? "pointer" : "auto",
- visibility: 'visible'
- }).show();
-
- // Opens inital empty ColorBox prior to content being loaded.
- settings.w = setSize(settings.initialWidth, 'x');
- settings.h = setSize(settings.initialHeight, 'y');
+ // Opens inital empty Colorbox prior to content being loaded.
+ var initialWidth = setSize(settings.get('initialWidth'), 'x');
+ var initialHeight = setSize(settings.get('initialHeight'), 'y');
+ var maxWidth = settings.get('maxWidth');
+ var maxHeight = settings.get('maxHeight');
+
+ settings.w = (maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth;
+ settings.h = (maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight;
+
+ $loaded.css({width:'', height:settings.h});
publicMethod.position();
- if (isIE6) {
- $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
- $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
- }).trigger('resize.' + event_ie6);
- }
-
- slideshow();
+ trigger(event_open);
+ settings.get('onOpen');
- trigger(event_open, settings.onOpen);
-
$groupControls.add($title).hide();
+
+ $box.focus();
- $close.html(settings.close).show();
+ if (settings.get('trapFocus')) {
+ // Confine focus to the modal
+ // Uses event capturing that is not supported in IE8-
+ if (document.addEventListener) {
+
+ document.addEventListener('focus', trapFocus, true);
+
+ $events.one(event_closed, function () {
+ document.removeEventListener('focus', trapFocus, true);
+ });
+ }
+ }
+
+ // Return focus on closing
+ if (settings.get('returnFocus')) {
+ $events.one(event_closed, function () {
+ $(settings.el).focus();
+ });
+ }
}
+
+ var opacity = parseFloat(settings.get('opacity'));
+ $overlay.css({
+ opacity: opacity === opacity ? opacity : '',
+ cursor: settings.get('overlayClose') ? 'pointer' : '',
+ visibility: 'visible'
+ }).show();
- publicMethod.load(true);
+ if (settings.get('closeButton')) {
+ $close.html(settings.get('close')).appendTo($content);
+ } else {
+ $close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
+ }
+
+ load();
}
}
- // ColorBox's markup needs to be added to the DOM prior to being called
+ // Colorbox's markup needs to be added to the DOM prior to being called
// so that the browser will go ahead and load the CSS background images.
function appendHTML() {
- if (!$box && document.body) {
+ if (!$box) {
init = false;
-
$window = $(window);
- $box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();
- $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
- $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic"));
+ $box = $tag(div).attr({
+ id: colorbox,
+ 'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
+ role: 'dialog',
+ tabindex: '-1'
+ }).hide();
+ $overlay = $tag(div, "Overlay").hide();
+ $loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
$wrap = $tag(div, "Wrapper");
$content = $tag(div, "Content").append(
$title = $tag(div, "Title"),
$current = $tag(div, "Current"),
- $next = $tag(div, "Next"),
- $prev = $tag(div, "Previous"),
- $slideshow = $tag(div, "Slideshow"),
- $close = $tag(div, "Close")
+ $prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
+ $next = $('<button type="button"/>').attr({id:prefix+'Next'}),
+ $slideshow = $tag('button', "Slideshow"),
+ $loadingOverlay
);
+
+ $close = $('<button type="button"/>').attr({id:prefix+'Close'});
- $wrap.append( // The 3x3 Grid that makes up ColorBox
+ $wrap.append( // The 3x3 Grid that makes up Colorbox
$tag(div).append(
$tag(div, "TopLeft"),
$topBorder = $tag(div, "TopCenter"),
@@ -388,20 +475,21 @@
)
).find('div div').css({'float': 'left'});
- $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
+ $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');
$groupControls = $next.add($prev).add($current).add($slideshow);
-
+ }
+ if (document.body && !$box.parent().length) {
$(document.body).append($overlay, $box.append($wrap, $loadingBay));
}
}
- // Add ColorBox's event bindings
+ // Add Colorbox's event bindings
function addBindings() {
function clickHandler(e) {
// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
// See: http://jacklmoore.com/notes/click-events/
- if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
+ if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
e.preventDefault();
launch(this);
}
@@ -422,7 +510,7 @@
publicMethod.close();
});
$overlay.click(function () {
- if (settings.overlayClose) {
+ if (settings.get('overlayClose')) {
publicMethod.close();
}
});
@@ -430,11 +518,11 @@
// Key Bindings
$(document).bind('keydown.' + prefix, function (e) {
var key = e.keyCode;
- if (open && settings.escKey && key === 27) {
+ if (open && settings.get('escKey') && key === 27) {
e.preventDefault();
publicMethod.close();
}
- if (open && settings.arrowKey && $related[1]) {
+ if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
if (key === 37) {
e.preventDefault();
$prev.click();
@@ -446,8 +534,12 @@
});
if ($.isFunction($.fn.on)) {
+ // For jQuery 1.7+
$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
- } else { // For jQuery 1.3.x -> 1.6.x
+ } else {
+ // For jQuery 1.3.x -> 1.6.x
+ // This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
+ // This is not here for jQuery 1.9, it's here for legacy users.
$('.'+boxElement).live('click.'+prefix, clickHandler);
}
}
@@ -456,8 +548,8 @@
return false;
}
- // Don't do anything if ColorBox already exists.
- if ($.colorbox) {
+ // Don't do anything if Colorbox already exists.
+ if ($[colorbox]) {
return;
}
@@ -467,39 +559,49 @@
// ****************
// PUBLIC FUNCTIONS
- // Usage format: $.fn.colorbox.close();
- // Usage from within an iframe: parent.$.fn.colorbox.close();
+ // Usage format: $.colorbox.close();
+ // Usage from within an iframe: parent.jQuery.colorbox.close();
// ****************
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
- var $this = this;
-
+ var settings;
+ var $obj = this;
+
options = options || {};
+
+ if ($.isFunction($obj)) { // assume a call to $.colorbox
+ $obj = $('<a/>');
+ options.open = true;
+ } else if (!$obj[0]) { // colorbox being applied to empty collection
+ return $obj;
+ }
+
+
+ if (!$obj[0]) { // colorbox being applied to empty collection
+ return $obj;
+ }
appendHTML();
if (addBindings()) {
- if ($.isFunction($this)) { // assume a call to $.colorbox
- $this = $('<a/>');
- options.open = true;
- } else if (!$this[0]) { // colorbox being applied to empty collection
- return $this;
- }
-
+
if (callback) {
options.onComplete = callback;
}
-
- $this.each(function () {
- $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
+
+ $obj.each(function () {
+ var old = $.data(this, colorbox) || {};
+ $.data(this, colorbox, $.extend(old, options));
}).addClass(boxElement);
+
+ settings = new Settings($obj[0], options);
- if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
- launch($this[0]);
+ if (settings.get('open')) {
+ launch($obj[0]);
}
}
- return $this;
+ return $obj;
};
publicMethod.position = function (speed, loadedCallback) {
@@ -519,7 +621,7 @@
scrollTop = $window.scrollTop();
scrollLeft = $window.scrollLeft();
- if (settings.fixed && !isIE6) {
+ if (settings.get('fixed')) {
offset.top -= scrollTop;
offset.left -= scrollLeft;
$box.css({position: 'fixed'});
@@ -530,46 +632,58 @@
}
// keeps the top and left positions within the browser's viewport.
- if (settings.right !== false) {
- left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
- } else if (settings.left !== false) {
- left += setSize(settings.left, 'x');
+ if (settings.get('right') !== false) {
+ left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
+ } else if (settings.get('left') !== false) {
+ left += setSize(settings.get('left'), 'x');
} else {
left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
}
- if (settings.bottom !== false) {
- top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
- } else if (settings.top !== false) {
- top += setSize(settings.top, 'y');
+ if (settings.get('bottom') !== false) {
+ top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
+ } else if (settings.get('top') !== false) {
+ top += setSize(settings.get('top'), 'y');
} else {
- top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
+ top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
}
$box.css({top: offset.top, left: offset.left, visibility:'visible'});
-
- // setting the speed to 0 to reduce the delay between same-sized content.
- speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
// but it has to be shrank down around the size of div#colorbox when it's done. If not,
// it can invoke an obscure IE bug when using iframes.
$wrap[0].style.width = $wrap[0].style.height = "9999px";
- function modalDimensions(that) {
- $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt(that.style.width,10) - interfaceWidth)+'px';
- $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt(that.style.height,10) - interfaceHeight)+'px';
+ function modalDimensions() {
+ $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
+ $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
}
css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};
- if(speed===0){ // temporary workaround to side-step jQuery-UI 1.8 bug (http://bugs.jquery.com/ticket/12273)
+ // setting the speed to 0 if the content hasn't changed size or position
+ if (speed) {
+ var tempSpeed = 0;
+ $.each(css, function(i){
+ if (css[i] !== previousCSS[i]) {
+ tempSpeed = speed;
+ return;
+ }
+ });
+ speed = tempSpeed;
+ }
+
+ previousCSS = css;
+
+ if (!speed) {
$box.css(css);
}
+
$box.dequeue().animate(css, {
- duration: speed,
+ duration: speed || 0,
complete: function () {
- modalDimensions(this);
+ modalDimensions();
active = false;
@@ -577,47 +691,57 @@
$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
- if (settings.reposition) {
+ if (settings.get('reposition')) {
setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
$window.bind('resize.' + prefix, publicMethod.position);
}, 1);
}
- if (loadedCallback) {
+ if ($.isFunction(loadedCallback)) {
loadedCallback();
}
},
- step: function () {
- modalDimensions(this);
- }
+ step: modalDimensions
});
};
publicMethod.resize = function (options) {
+ var scrolltop;
+
if (open) {
options = options || {};
if (options.width) {
settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
}
+
if (options.innerWidth) {
settings.w = setSize(options.innerWidth, 'x');
}
+
$loaded.css({width: settings.w});
if (options.height) {
settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
}
+
if (options.innerHeight) {
settings.h = setSize(options.innerHeight, 'y');
}
+
if (!options.innerHeight && !options.height) {
+ scrolltop = $loaded.scrollTop();
$loaded.css({height: "auto"});
settings.h = $loaded.height();
}
+
$loaded.css({height: settings.h});
+
+ if(scrolltop) {
+ $loaded.scrollTop(scrolltop);
+ }
- publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
+ publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
}
};
@@ -626,9 +750,9 @@
return;
}
- var callback, speed = settings.transition === "none" ? 0 : settings.speed;
-
- $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
+ var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');
+
+ $loaded.remove();
$loaded = $tag(div, 'LoadedContent').append(object);
@@ -645,81 +769,65 @@
$loaded.hide()
.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
- .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
+ .css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
.prependTo($content);
$loadingBay.hide();
// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
- //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
$(photo).css({'float': 'none'});
-
+ setClass(settings.get('className'));
+
callback = function () {
var total = $related.length,
iframe,
- frameBorder = 'frameBorder',
- allowTransparency = 'allowTransparency',
complete;
if (!open) {
return;
}
- function removeFilter() {
- if (isIE) {
+ function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
+ if ($.support.opacity === false) {
$box[0].style.removeAttribute('filter');
}
}
complete = function () {
clearTimeout(loadingTimer);
- $loadingOverlay.remove();
- trigger(event_complete, settings.onComplete);
+ $loadingOverlay.hide();
+ trigger(event_complete);
+ settings.get('onComplete');
};
+
- if (isIE) {
- //This fadeIn helps the bicubic resampling to kick-in.
- if (photo) {
- $loaded.fadeIn(100);
- }
- }
-
- $title.html(settings.title).add($loaded).show();
+ $title.html(settings.get('title')).show();
+ $loaded.show();
if (total > 1) { // handle grouping
- if (typeof settings.current === "string") {
- $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
+ if (typeof settings.get('current') === "string") {
+ $current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
}
- $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
- $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
+ $next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
+ $prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));
- if (settings.slideshow) {
- $slideshow.show();
- }
+ slideshow();
// Preloads images within a rel group
- if (settings.preloading) {
+ if (settings.get('preloading')) {
$.each([getIndex(-1), getIndex(1)], function(){
- var src,
- img,
+ var img,
i = $related[this],
- data = $.data(i, colorbox);
-
- if (data && data.href) {
- src = data.href;
- if ($.isFunction(src)) {
- src = src.call(i);
- }
- } else {
- src = $(i).attr('href');
- }
+ settings = new Settings(i, $.data(i, colorbox)),
+ src = settings.get('href');
- if (src && (isImage(src) || data.photo)) {
- img = new Image();
+ if (src && isImage(settings, src)) {
+ src = retinaUrl(settings, src);
+ img = document.createElement('img');
img.src = src;
}
});
@@ -728,29 +836,27 @@
$groupControls.hide();
}
- if (settings.iframe) {
- iframe = $tag('iframe')[0];
+ if (settings.get('iframe')) {
+ iframe = document.createElement('iframe');
- if (frameBorder in iframe) {
- iframe[frameBorder] = 0;
+ if ('frameBorder' in iframe) {
+ iframe.frameBorder = 0;
}
- if (allowTransparency in iframe) {
- iframe[allowTransparency] = "true";
+ if ('allowTransparency' in iframe) {
+ iframe.allowTransparency = "true";
}
- if (!settings.scrolling) {
+ if (!settings.get('scrolling')) {
iframe.scrolling = "no";
}
$(iframe)
.attr({
- src: settings.href,
+ src: settings.get('href'),
name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
'class': prefix + 'Iframe',
- allowFullScreen : true, // allow HTML5 video to go fullscreen
- webkitAllowFullScreen : true,
- mozallowfullscreen : true
+ allowFullScreen : true // allow HTML5 video to go fullscreen
})
.one('load', complete)
.appendTo($loaded);
@@ -759,21 +865,21 @@
iframe.src = "//about:blank";
});
- if (settings.fastIframe) {
+ if (settings.get('fastIframe')) {
$(iframe).trigger('load');
}
} else {
complete();
}
- if (settings.transition === 'fade') {
+ if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 1, removeFilter);
} else {
removeFilter();
}
};
- if (settings.transition === 'fade') {
+ if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 0, function () {
publicMethod.position(0, callback);
});
@@ -782,38 +888,24 @@
}
};
- publicMethod.load = function (launched) {
- var href, setResize, prep = publicMethod.prep, $inline;
+ function load () {
+ var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;
active = true;
photo = false;
- element = $related[index];
-
- if (!launched) {
- makeSettings();
- }
-
- if (className) {
- $box.add($overlay).removeClass(className);
- }
- if (settings.className) {
- $box.add($overlay).addClass(settings.className);
- }
- className = settings.className;
-
trigger(event_purge);
+ trigger(event_load);
+ settings.get('onLoad');
- trigger(event_load, settings.onLoad);
+ settings.h = settings.get('height') ?
+ setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
+ settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');
- settings.h = settings.height ?
- setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
- settings.innerHeight && setSize(settings.innerHeight, 'y');
-
- settings.w = settings.width ?
- setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
- settings.innerWidth && setSize(settings.innerWidth, 'x');
+ settings.w = settings.get('width') ?
+ setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
+ settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');
// Sets the minimum dimensions for use in image scaling
settings.mw = settings.w;
@@ -821,153 +913,176 @@
// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
- if (settings.maxWidth) {
- settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
+ if (settings.get('maxWidth')) {
+ settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
}
- if (settings.maxHeight) {
- settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
+ if (settings.get('maxHeight')) {
+ settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
}
- href = settings.href;
+ href = settings.get('href');
loadingTimer = setTimeout(function () {
- $loadingOverlay.appendTo($content);
+ $loadingOverlay.show();
}, 100);
- if (settings.inline) {
+ if (settings.get('inline')) {
+ var $target = $(href);
// Inserts an empty placeholder where inline content is being pulled from.
- // An event is bound to put inline content back when ColorBox closes or loads new content.
- $inline = $tag(div).hide().insertBefore($(href)[0]);
+ // An event is bound to put inline content back when Colorbox closes or loads new content.
+ $inline = $('<div>').hide().insertBefore($target);
$events.one(event_purge, function () {
- $inline.replaceWith($loaded.children());
+ $inline.replaceWith($target);
});
- prep($(href));
- } else if (settings.iframe) {
+ prep($target);
+ } else if (settings.get('iframe')) {
// IFrame element won't be added to the DOM until it is ready to be displayed,
// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
prep(" ");
- } else if (settings.html) {
- prep(settings.html);
- } else if (isImage(href)) {
- $(photo = new Image())
+ } else if (settings.get('html')) {
+ prep(settings.get('html'));
+ } else if (isImage(settings, href)) {
+
+ href = retinaUrl(settings, href);
+
+ photo = new Image();
+
+ $(photo)
.addClass(prefix + 'Photo')
.bind('error',function () {
- settings.title = false;
- prep($tag(div, 'Error').html(settings.imgError));
+ prep($tag(div, 'Error').html(settings.get('imgError')));
})
.one('load', function () {
- var percent;
-
- if (settings.scalePhotos) {
- setResize = function () {
- photo.height -= photo.height * percent;
- photo.width -= photo.width * percent;
- };
- if (settings.mw && photo.width > settings.mw) {
- percent = (photo.width - settings.mw) / photo.width;
- setResize();
+ if (request !== requests) {
+ return;
+ }
+
+ // A small pause because some browsers will occassionaly report a
+ // img.width and img.height of zero immediately after the img.onload fires
+ setTimeout(function(){
+ var percent;
+
+ $.each(['alt', 'longdesc', 'aria-describedby'], function(i,val){
+ var attr = $(settings.el).attr(val) || $(settings.el).attr('data-'+val);
+ if (attr) {
+ photo.setAttribute(val, attr);
+ }
+ });
+
+ if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
+ photo.height = photo.height / window.devicePixelRatio;
+ photo.width = photo.width / window.devicePixelRatio;
}
- if (settings.mh && photo.height > settings.mh) {
- percent = (photo.height - settings.mh) / photo.height;
- setResize();
+
+ if (settings.get('scalePhotos')) {
+ setResize = function () {
+ photo.height -= photo.height * percent;
+ photo.width -= photo.width * percent;
+ };
+ if (settings.mw && photo.width > settings.mw) {
+ percent = (photo.width - settings.mw) / photo.width;
+ setResize();
+ }
+ if (settings.mh && photo.height > settings.mh) {
+ percent = (photo.height - settings.mh) / photo.height;
+ setResize();
+ }
}
- }
-
- if (settings.h) {
- photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
- }
-
- if ($related[1] && (settings.loop || $related[index + 1])) {
- photo.style.cursor = 'pointer';
- photo.onclick = function () {
- publicMethod.next();
- };
- }
-
- if (isIE) {
- photo.style.msInterpolationMode = 'bicubic';
- }
-
- setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
+
+ if (settings.h) {
+ photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
+ }
+
+ if ($related[1] && (settings.get('loop') || $related[index + 1])) {
+ photo.style.cursor = 'pointer';
+ photo.onclick = function () {
+ publicMethod.next();
+ };
+ }
+
+ photo.style.width = photo.width + 'px';
+ photo.style.height = photo.height + 'px';
prep(photo);
}, 1);
});
- setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
- photo.src = href;
- }, 1);
+ photo.src = href;
+
} else if (href) {
- $loadingBay.load(href, settings.data, function (data, status) {
- prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
+ $loadingBay.load(href, settings.get('data'), function (data, status) {
+ if (request === requests) {
+ prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
+ }
});
}
- };
+ }
// Navigates to the next page/image in a set.
publicMethod.next = function () {
- if (!active && $related[1] && (settings.loop || $related[index + 1])) {
+ if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
index = getIndex(1);
- publicMethod.load();
+ launch($related[index]);
}
};
publicMethod.prev = function () {
- if (!active && $related[1] && (settings.loop || index)) {
+ if (!active && $related[1] && (settings.get('loop') || index)) {
index = getIndex(-1);
- publicMethod.load();
+ launch($related[index]);
}
};
- // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
+ // Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
publicMethod.close = function () {
if (open && !closing) {
closing = true;
-
open = false;
+ trigger(event_cleanup);
+ settings.get('onCleanup');
+ $window.unbind('.' + prefix);
+ $overlay.fadeTo(settings.get('fadeOut') || 0, 0);
- trigger(event_cleanup, settings.onCleanup);
-
- $window.unbind('.' + prefix + ' .' + event_ie6);
-
- $overlay.fadeTo(200, 0);
-
- $box.stop().fadeTo(300, 0, function () {
-
- $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
-
+ $box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
+ $box.hide();
+ $overlay.hide();
trigger(event_purge);
-
- $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
+ $loaded.remove();
setTimeout(function () {
closing = false;
- trigger(event_closed, settings.onClosed);
+ trigger(event_closed);
+ settings.get('onClosed');
}, 1);
});
}
};
- // Removes changes ColorBox made to the document, but does not remove the plugin
- // from jQuery.
+ // Removes changes Colorbox made to the document, but does not remove the plugin.
publicMethod.remove = function () {
- $([]).add($box).add($overlay).remove();
+ if (!$box) { return; }
+
+ $box.stop();
+ $[colorbox].close();
+ $box.stop(false, true).remove();
+ $overlay.remove();
+ closing = false;
$box = null;
$('.' + boxElement)
.removeData(colorbox)
.removeClass(boxElement);
- $(document).unbind('click.'+prefix);
+ $(document).unbind('click.'+prefix).unbind('keydown.'+prefix);
};
- // A method for fetching the current element ColorBox is referencing.
+ // A method for fetching the current element Colorbox is referencing.
// returns a jQuery object.
publicMethod.element = function () {
- return $(element);
+ return $(settings.el);
};
publicMethod.settings = defaults;
diff --git a/library/colorpicker/css/colorpicker.css b/library/colorpicker/css/colorpicker.css
deleted file mode 100644
index 05b02b485..000000000
--- a/library/colorpicker/css/colorpicker.css
+++ /dev/null
@@ -1,161 +0,0 @@
-.colorpicker {
- width: 356px;
- height: 176px;
- overflow: hidden;
- position: absolute;
- background: url(../images/colorpicker_background.png);
- font-family: Arial, Helvetica, sans-serif;
- display: none;
-}
-.colorpicker_color {
- width: 150px;
- height: 150px;
- left: 14px;
- top: 13px;
- position: absolute;
- background: #f00;
- overflow: hidden;
- cursor: crosshair;
-}
-.colorpicker_color div {
- position: absolute;
- top: 0;
- left: 0;
- width: 150px;
- height: 150px;
- background: url(../images/colorpicker_overlay.png);
-}
-.colorpicker_color div div {
- position: absolute;
- top: 0;
- left: 0;
- width: 11px;
- height: 11px;
- overflow: hidden;
- background: url(../images/colorpicker_select.gif);
- margin: -5px 0 0 -5px;
-}
-.colorpicker_hue {
- position: absolute;
- top: 13px;
- left: 171px;
- width: 35px;
- height: 150px;
- cursor: n-resize;
-}
-.colorpicker_hue div {
- position: absolute;
- width: 35px;
- height: 9px;
- overflow: hidden;
- background: url(../images/colorpicker_indic.gif) left top;
- margin: -4px 0 0 0;
- left: 0px;
-}
-.colorpicker_new_color {
- position: absolute;
- width: 60px;
- height: 30px;
- left: 213px;
- top: 13px;
- background: #f00;
-}
-.colorpicker_current_color {
- position: absolute;
- width: 60px;
- height: 30px;
- left: 283px;
- top: 13px;
- background: #f00;
-}
-.colorpicker input {
- background-color: transparent;
- border: 1px solid transparent;
- position: absolute;
- font-size: 10px;
- font-family: Arial, Helvetica, sans-serif;
- color: #898989;
- top: 4px;
- right: 11px;
- text-align: right;
- margin: 0;
- padding: 0;
- height: 11px;
-}
-.colorpicker_hex {
- position: absolute;
- width: 72px;
- height: 22px;
- background: url(../images/colorpicker_hex.png) top;
- left: 212px;
- top: 142px;
-}
-.colorpicker_hex input {
- right: 6px;
-}
-.colorpicker_field {
- height: 22px;
- width: 62px;
- background-position: top;
- position: absolute;
-}
-.colorpicker_field span {
- position: absolute;
- width: 12px;
- height: 22px;
- overflow: hidden;
- top: 0;
- right: 0;
- cursor: n-resize;
-}
-.colorpicker_rgb_r {
- background-image: url(../images/colorpicker_rgb_r.png);
- top: 52px;
- left: 212px;
-}
-.colorpicker_rgb_g {
- background-image: url(../images/colorpicker_rgb_g.png);
- top: 82px;
- left: 212px;
-}
-.colorpicker_rgb_b {
- background-image: url(../images/colorpicker_rgb_b.png);
- top: 112px;
- left: 212px;
-}
-.colorpicker_hsb_h {
- background-image: url(../images/colorpicker_hsb_h.png);
- top: 52px;
- left: 282px;
-}
-.colorpicker_hsb_s {
- background-image: url(../images/colorpicker_hsb_s.png);
- top: 82px;
- left: 282px;
-}
-.colorpicker_hsb_b {
- background-image: url(../images/colorpicker_hsb_b.png);
- top: 112px;
- left: 282px;
-}
-.colorpicker_submit {
- position: absolute;
- width: 22px;
- height: 22px;
- background: url(../images/colorpicker_submit.png) top;
- left: 322px;
- top: 142px;
- overflow: hidden;
-}
-.colorpicker_focus {
- background-position: center;
-}
-.colorpicker_hex.colorpicker_focus {
- background-position: bottom;
-}
-.colorpicker_submit.colorpicker_focus {
- background-position: bottom;
-}
-.colorpicker_slider {
- background-position: bottom;
-}
diff --git a/library/colorpicker/css/layout.css b/library/colorpicker/css/layout.css
deleted file mode 100644
index 8b3f00ff3..000000000
--- a/library/colorpicker/css/layout.css
+++ /dev/null
@@ -1,218 +0,0 @@
-body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
- margin:0;
- padding:0;
-}
-table {
- border-collapse:collapse;
- border-spacing:0;
-}
-fieldset,img {
- border:0;
-}
-address,caption,cite,code,dfn,em,strong,th,var {
- font-style:normal;
- font-weight:normal;
-}
-ol,ul {
- list-style:none;
-}
-caption,th {
- text-align:left;
-}
-h1,h2,h3,h4,h5,h6 {
- font-size:100%;
- font-weight:normal;
-}
-q:before,q:after {
- content:'';
-}
-abbr,acronym { border:0;
-}
-html, body {
- background-color: #fff;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12px;
- line-height: 18px;
- color: #52697E;
-}
-body {
- text-align: center;
- overflow: auto;
-}
-.wrapper {
- width: 700px;
- margin: 0 auto;
- text-align: left;
-}
-h1 {
- font-size: 21px;
- height: 47px;
- line-height: 47px;
- text-transform: uppercase;
-}
-.navigationTabs {
- height: 23px;
- line-height: 23px;
- border-bottom: 1px solid #ccc;
-}
-.navigationTabs li {
- float: left;
- height: 23px;
- line-height: 23px;
- padding-right: 3px;
-}
-.navigationTabs li a{
- float: left;
- dispaly: block;
- height: 23px;
- line-height: 23px;
- padding: 0 10px;
- overflow: hidden;
- color: #52697E;
- background-color: #eee;
- position: relative;
- text-decoration: none;
-}
-.navigationTabs li a:hover {
- background-color: #f0f0f0;
-}
-.navigationTabs li a.active {
- background-color: #fff;
- border: 1px solid #ccc;
- border-bottom: 0px solid;
-}
-.tabsContent {
- border: 1px solid #ccc;
- border-top: 0px solid;
- width: 698px;
- overflow: hidden;
-}
-.tab {
- padding: 16px;
- display: none;
-}
-.tab h2 {
- font-weight: bold;
- font-size: 16px;
-}
-.tab h3 {
- font-weight: bold;
- font-size: 14px;
- margin-top: 20px;
-}
-.tab p {
- margin-top: 16px;
- clear: both;
-}
-.tab ul {
- margin-top: 16px;
- list-style: disc;
-}
-.tab li {
- margin: 10px 0 0 35px;
-}
-.tab a {
- color: #8FB0CF;
-}
-.tab strong {
- font-weight: bold;
-}
-.tab pre {
- font-size: 11px;
- margin-top: 20px;
- width: 668px;
- overflow: auto;
- clear: both;
-}
-.tab table {
- width: 100%;
-}
-.tab table td {
- padding: 6px 10px 6px 0;
- vertical-align: top;
-}
-.tab dt {
- margin-top: 16px;
-}
-
-#colorSelector {
- position: relative;
- width: 36px;
- height: 36px;
- background: url(../images/select.png);
-}
-#colorSelector div {
- position: absolute;
- top: 3px;
- left: 3px;
- width: 30px;
- height: 30px;
- background: url(../images/select.png) center;
-}
-#colorSelector2 {
- position: absolute;
- top: 0;
- left: 0;
- width: 36px;
- height: 36px;
- background: url(../images/select2.png);
-}
-#colorSelector2 div {
- position: absolute;
- top: 4px;
- left: 4px;
- width: 28px;
- height: 28px;
- background: url(../images/select2.png) center;
-}
-#colorpickerHolder2 {
- top: 32px;
- left: 0;
- width: 356px;
- height: 0;
- overflow: hidden;
- position: absolute;
-}
-#colorpickerHolder2 .colorpicker {
- background-image: url(../images/custom_background.png);
- position: absolute;
- bottom: 0;
- left: 0;
-}
-#colorpickerHolder2 .colorpicker_hue div {
- background-image: url(../images/custom_indic.gif);
-}
-#colorpickerHolder2 .colorpicker_hex {
- background-image: url(../images/custom_hex.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_r {
- background-image: url(../images/custom_rgb_r.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_g {
- background-image: url(../images/custom_rgb_g.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_b {
- background-image: url(../images/custom_rgb_b.png);
-}
-#colorpickerHolder2 .colorpicker_hsb_s {
- background-image: url(../images/custom_hsb_s.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_hsb_h {
- background-image: url(../images/custom_hsb_h.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_hsb_b {
- background-image: url(../images/custom_hsb_b.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_submit {
- background-image: url(../images/custom_submit.png);
-}
-#colorpickerHolder2 .colorpicker input {
- color: #778398;
-}
-#customWidget {
- position: relative;
- height: 36px;
-}
diff --git a/library/colorpicker/images/blank.gif b/library/colorpicker/images/blank.gif
deleted file mode 100644
index 75b945d25..000000000
--- a/library/colorpicker/images/blank.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_background.png b/library/colorpicker/images/colorpicker_background.png
deleted file mode 100644
index 8401572f1..000000000
--- a/library/colorpicker/images/colorpicker_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hex.png b/library/colorpicker/images/colorpicker_hex.png
deleted file mode 100644
index 4e532d7c6..000000000
--- a/library/colorpicker/images/colorpicker_hex.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_b.png b/library/colorpicker/images/colorpicker_hsb_b.png
deleted file mode 100644
index dfac595d0..000000000
--- a/library/colorpicker/images/colorpicker_hsb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_h.png b/library/colorpicker/images/colorpicker_hsb_h.png
deleted file mode 100644
index 3977ed9f2..000000000
--- a/library/colorpicker/images/colorpicker_hsb_h.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_s.png b/library/colorpicker/images/colorpicker_hsb_s.png
deleted file mode 100644
index a2a699736..000000000
--- a/library/colorpicker/images/colorpicker_hsb_s.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_indic.gif b/library/colorpicker/images/colorpicker_indic.gif
deleted file mode 100644
index f9fa95e28..000000000
--- a/library/colorpicker/images/colorpicker_indic.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_overlay.png b/library/colorpicker/images/colorpicker_overlay.png
deleted file mode 100644
index 561cdd9c5..000000000
--- a/library/colorpicker/images/colorpicker_overlay.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_b.png b/library/colorpicker/images/colorpicker_rgb_b.png
deleted file mode 100644
index dfac595d0..000000000
--- a/library/colorpicker/images/colorpicker_rgb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_g.png b/library/colorpicker/images/colorpicker_rgb_g.png
deleted file mode 100644
index 72b32760a..000000000
--- a/library/colorpicker/images/colorpicker_rgb_g.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_r.png b/library/colorpicker/images/colorpicker_rgb_r.png
deleted file mode 100644
index 4855fe03f..000000000
--- a/library/colorpicker/images/colorpicker_rgb_r.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_select.gif b/library/colorpicker/images/colorpicker_select.gif
deleted file mode 100644
index 599f7f13a..000000000
--- a/library/colorpicker/images/colorpicker_select.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_submit.png b/library/colorpicker/images/colorpicker_submit.png
deleted file mode 100644
index 7f4c0825f..000000000
--- a/library/colorpicker/images/colorpicker_submit.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_background.png b/library/colorpicker/images/custom_background.png
deleted file mode 100644
index cf55ffdd6..000000000
--- a/library/colorpicker/images/custom_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hex.png b/library/colorpicker/images/custom_hex.png
deleted file mode 100644
index 888f44449..000000000
--- a/library/colorpicker/images/custom_hex.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_b.png b/library/colorpicker/images/custom_hsb_b.png
deleted file mode 100644
index 2f99dae8e..000000000
--- a/library/colorpicker/images/custom_hsb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_h.png b/library/colorpicker/images/custom_hsb_h.png
deleted file mode 100644
index a217e9218..000000000
--- a/library/colorpicker/images/custom_hsb_h.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_s.png b/library/colorpicker/images/custom_hsb_s.png
deleted file mode 100644
index 7826b4150..000000000
--- a/library/colorpicker/images/custom_hsb_s.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_indic.gif b/library/colorpicker/images/custom_indic.gif
deleted file mode 100644
index 222fb94cf..000000000
--- a/library/colorpicker/images/custom_indic.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_b.png b/library/colorpicker/images/custom_rgb_b.png
deleted file mode 100644
index 80764e5d6..000000000
--- a/library/colorpicker/images/custom_rgb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_g.png b/library/colorpicker/images/custom_rgb_g.png
deleted file mode 100644
index fc9778be1..000000000
--- a/library/colorpicker/images/custom_rgb_g.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_r.png b/library/colorpicker/images/custom_rgb_r.png
deleted file mode 100644
index 91b0cd4c5..000000000
--- a/library/colorpicker/images/custom_rgb_r.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_submit.png b/library/colorpicker/images/custom_submit.png
deleted file mode 100644
index cd202cd93..000000000
--- a/library/colorpicker/images/custom_submit.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/select.png b/library/colorpicker/images/select.png
deleted file mode 100644
index 21213bfd5..000000000
--- a/library/colorpicker/images/select.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/select2.png b/library/colorpicker/images/select2.png
deleted file mode 100644
index 2cd2cabeb..000000000
--- a/library/colorpicker/images/select2.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/slider.png b/library/colorpicker/images/slider.png
deleted file mode 100644
index 8b03da96e..000000000
--- a/library/colorpicker/images/slider.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/index.html b/library/colorpicker/index.html
deleted file mode 100644
index e1ad5782d..000000000
--- a/library/colorpicker/index.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <link rel="stylesheet" href="css/colorpicker.css" type="text/css" />
- <link rel="stylesheet" media="screen" type="text/css" href="css/layout.css" />
- <title>ColorPicker - jQuery plugin</title>
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/colorpicker.js"></script>
- <script type="text/javascript" src="js/eye.js"></script>
- <script type="text/javascript" src="js/utils.js"></script>
- <script type="text/javascript" src="js/layout.js?ver=1.0.2"></script>
-</head>
-<body>
- <div class="wrapper">
- <h1>Color Picker - jQuery plugin</h1>
- <ul class="navigationTabs">
- <li><a href="#about" rel="about">About</a></li>
- <li><a href="#download" rel="download">Download</a></li>
- <li><a href="#implement" rel="implement">Implement</a></li>
- </ul>
- <div class="tabsContent">
- <div class="tab">
- <h2>About</h2>
- <p>A simple component to select color in the same way you select color in Adobe Photoshop</p>
- <h3>Last update</h3>
- <p>23.05.2009 - Check Download tab</p>
- <h3>Features</h3>
- <ul>
- <li>Flat mode - as element in page</li>
- <li>Powerful controls for color selection</li>
- <li>Easy to customize the look by changing some images</li>
- <li>Fits into the viewport</li>
- </ul>
- <h3>License</h3>
- <p>Dual licensed under the MIT and GPL licenses.</p>
- <h3>Examples</h3>
- <p>Flat mode.</p>
- <p id="colorpickerHolder">
- </p>
- <pre>
-$('#colorpickerHolder').ColorPicker({flat: true});
- </pre>
- <p>Custom skin and using flat mode to display the color picker in a custom widget.</p>
- <div id="customWidget">
- <div id="colorSelector2"><div style="background-color: #00ff00"></div></div>
- <div id="colorpickerHolder2">
- </div>
- </div>
-
- <p>Attached to an text field and using callback functions to update the color with field's value and set the value back in the field by submiting the color.</p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField1" value="00ff00" /></p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField3" value="0000ff" /></p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField2" value="ff0000" /></p>
- <pre>$('#colorpickerField1, #colorpickerField2, #colorpickerField3').ColorPicker({
- onSubmit: function(hsb, hex, rgb, el) {
- $(el).val(hex);
- $(el).ColorPickerHide();
- },
- onBeforeShow: function () {
- $(this).ColorPickerSetColor(this.value);
- }
-})
-.bind('keyup', function(){
- $(this).ColorPickerSetColor(this.value);
-});
-</pre>
- <p>Attached to DOMElement and using callbacks to live preview the color and adding animation.</p>
- <p>
- <div id="colorSelector"><div style="background-color: #0000ff"></div></div>
- </p>
- <pre>
-$('#colorSelector').ColorPicker({
- color: '#0000ff',
- onShow: function (colpkr) {
- $(colpkr).fadeIn(500);
- return false;
- },
- onHide: function (colpkr) {
- $(colpkr).fadeOut(500);
- return false;
- },
- onChange: function (hsb, hex, rgb) {
- $('#colorSelector div').css('backgroundColor', '#' + hex);
- }
-});
-</pre>
- </div>
- <div class="tab">
- <h2>Download</h2>
- <p><a href="colorpicker.zip">colorpicker.zip (73 kb)</a>: jQuery, Javscript files, CSS files, images, examples and instructions.</p>
- <h3>Changelog</h3>
- <dl>
- <dt>23.05.2009</dt>
- <dd>Added: close on color selection example</dd>
- <dd>Added: restore original color option</dd>
- <dd>Changed: color update on key up event</dd>
- <dd>Fixed: colorpicker hide and show methods</dd>
- <dd>Fixed: reference to options. Multiple fields with colorpickers is possible now.</dd>
- <dd>Fixed: RGB to HSB convertion</dd>
- <dt>22.08.2008</dt>
- <dd>Fixed bug: where some events were not canceled right on Safari</dd>
- <dd>Fixed bug: where teh view port was not detected right on Safari</dd>
- <dt>16-07-2008</dt>
- <dd>Fixed bug where the letter 'F' could not be typed in the Hex field</dd>
- <dd>Fixed bug where the changes on Hex field where not parsed</dd>
- <dd>Added new option 'livePreview'</dd>
- <dt>08-07-2008</dt>
- <dd>Fixed typo in the code, both JavaScript and CSS</dd>
- <dd>Changed the cursor for some elements</dd>
- <dd>Added new demo explaining how to implement custom skin</dd>
- <dt>07.07.2008</dt>
- <dd>The first release.</dd>
- </dl>
- </div>
- <div class="tab">
- <h2>Implement</h2>
- <p>Attach the Javascript and CSS files to your document. Edit CSS file and fix the paths to images and change colors to fit your site theme.</p>
- <pre>
-&lt;link rel="stylesheet" media="screen" type="text/css" href="css/colorpicker.css" /&gt;
-&lt;script type="text/javascript" src="js/colorpicker.js"&gt;&lt;/script&gt;
- </pre>
- <h3>Invocation code</h3>
- <p>All you have to do is to select the elements in a jQuery way and call the plugin.</p>
- <pre>
- $('input').ColorPicker(options);
- </pre>
- <h3>Options</h3>
- <p>A hash of parameters. All parameters are optional.</p>
- <table>
- <tr>
- <td><strong>eventName</strong></td>
- <td>string</td>
- <td>The desired event to trigger the colorpicker. Default: 'click'</td>
- </tr>
- <tr>
- <td><strong>color</strong></td>
- <td>string or hash</td>
- <td>The default color. String for hex color or hash for RGB and HSB ({r:255, r:0, b:0}) . Default: 'ff0000'</td>
- </tr>
- <tr>
- <td><strong>flat</strong></td>
- <td>boolean</td>
- <td>Whatever if the color picker is appended to the element or triggered by an event. Default false</td>
- </tr>
- <tr>
- <td><strong>livePreview</strong></td>
- <td>boolean</td>
- <td>Whatever if the color values are filled in the fields while changing values on selector or a field. If false it may improve speed. Default true</td>
- </tr>
- <tr>
- <td><strong>onShow</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color picker is shown</td>
- </tr>
- <tr>
- <td><strong>onBeforeShow</strong></td>
- <td>function</td>
- <td>Callback function triggered before the color picker is shown</td>
- </tr>
- <tr>
- <td><strong>onHide</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color picker is hidden</td>
- </tr>
- <tr>
- <td><strong>onChange</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color is changed</td>
- </tr>
- <tr>
- <td><strong>onSubmit</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color it is chosen</td>
- </tr>
- </table>
- <h3>Set color</h3>
- <p>If you want to set a new color.</p>
- <pre>$('input').ColorPickerSetColor(color);</pre>
- <p>The 'color' argument is the same format as the option color, string for hex color or hash for RGB and HSB ({r:255, r:0, b:0}).</p>
- </div>
- </div>
- </div>
-</body>
-</html>
diff --git a/library/colorpicker/js/colorpicker.js b/library/colorpicker/js/colorpicker.js
deleted file mode 100644
index 10a2b2244..000000000
--- a/library/colorpicker/js/colorpicker.js
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- *
- * Color picker
- * Author: Stefan Petre www.eyecon.ro
- *
- * Dual licensed under the MIT and GPL licenses
- *
- */
-(function ($) {
- var ColorPicker = function () {
- var
- ids = {},
- inAction,
- charMin = 65,
- visible,
- tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
- defaults = {
- eventName: 'click',
- onShow: function () {},
- onBeforeShow: function(){},
- onHide: function () {},
- onChange: function () {},
- onSubmit: function () {},
- color: 'ff0000',
- livePreview: true,
- flat: false
- },
- fillRGBFields = function (hsb, cal) {
- var rgb = HSBToRGB(hsb);
- $(cal).data('colorpicker').fields
- .eq(1).val(rgb.r).end()
- .eq(2).val(rgb.g).end()
- .eq(3).val(rgb.b).end();
- },
- fillHSBFields = function (hsb, cal) {
- $(cal).data('colorpicker').fields
- .eq(4).val(hsb.h).end()
- .eq(5).val(hsb.s).end()
- .eq(6).val(hsb.b).end();
- },
- fillHexFields = function (hsb, cal) {
- $(cal).data('colorpicker').fields
- .eq(0).val(HSBToHex(hsb)).end();
- },
- setSelector = function (hsb, cal) {
- $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
- $(cal).data('colorpicker').selectorIndic.css({
- left: parseInt(150 * hsb.s/100, 10),
- top: parseInt(150 * (100-hsb.b)/100, 10)
- });
- },
- setHue = function (hsb, cal) {
- $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
- },
- setCurrentColor = function (hsb, cal) {
- $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
- },
- setNewColor = function (hsb, cal) {
- $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
- },
- keyDown = function (ev) {
- var pressedKey = ev.charCode || ev.keyCode || -1;
- if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
- return false;
- }
- var cal = $(this).parent().parent();
- if (cal.data('colorpicker').livePreview === true) {
- change.apply(this);
- }
- },
- change = function (ev) {
- var cal = $(this).parent().parent(), col;
- if (this.parentNode.className.indexOf('_hex') > 0) {
- cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
- } else if (this.parentNode.className.indexOf('_hsb') > 0) {
- cal.data('colorpicker').color = col = fixHSB({
- h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
- s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
- b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
- });
- } else {
- cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
- r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
- g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
- b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
- }));
- }
- if (ev) {
- fillRGBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- }
- setSelector(col, cal.get(0));
- setHue(col, cal.get(0));
- setNewColor(col, cal.get(0));
- cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
- },
- blur = function (ev) {
- var cal = $(this).parent().parent();
- cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
- },
- focus = function () {
- charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
- $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
- $(this).parent().addClass('colorpicker_focus');
- },
- downIncrement = function (ev) {
- var field = $(this).parent().find('input').focus();
- var current = {
- el: $(this).parent().addClass('colorpicker_slider'),
- max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
- y: ev.pageY,
- field: field,
- val: parseInt(field.val(), 10),
- preview: $(this).parent().parent().data('colorpicker').livePreview
- };
- $(document).bind('mouseup', current, upIncrement);
- $(document).bind('mousemove', current, moveIncrement);
- },
- moveIncrement = function (ev) {
- ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
- if (ev.data.preview) {
- change.apply(ev.data.field.get(0), [true]);
- }
- return false;
- },
- upIncrement = function (ev) {
- change.apply(ev.data.field.get(0), [true]);
- ev.data.el.removeClass('colorpicker_slider').find('input').focus();
- $(document).unbind('mouseup', upIncrement);
- $(document).unbind('mousemove', moveIncrement);
- return false;
- },
- downHue = function (ev) {
- var current = {
- cal: $(this).parent(),
- y: $(this).offset().top
- };
- current.preview = current.cal.data('colorpicker').livePreview;
- $(document).bind('mouseup', current, upHue);
- $(document).bind('mousemove', current, moveHue);
- },
- moveHue = function (ev) {
- change.apply(
- ev.data.cal.data('colorpicker')
- .fields
- .eq(4)
- .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
- .get(0),
- [ev.data.preview]
- );
- return false;
- },
- upHue = function (ev) {
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- $(document).unbind('mouseup', upHue);
- $(document).unbind('mousemove', moveHue);
- return false;
- },
- downSelector = function (ev) {
- var current = {
- cal: $(this).parent(),
- pos: $(this).offset()
- };
- current.preview = current.cal.data('colorpicker').livePreview;
- $(document).bind('mouseup', current, upSelector);
- $(document).bind('mousemove', current, moveSelector);
- },
- moveSelector = function (ev) {
- change.apply(
- ev.data.cal.data('colorpicker')
- .fields
- .eq(6)
- .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
- .end()
- .eq(5)
- .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
- .get(0),
- [ev.data.preview]
- );
- return false;
- },
- upSelector = function (ev) {
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- $(document).unbind('mouseup', upSelector);
- $(document).unbind('mousemove', moveSelector);
- return false;
- },
- enterSubmit = function (ev) {
- $(this).addClass('colorpicker_focus');
- },
- leaveSubmit = function (ev) {
- $(this).removeClass('colorpicker_focus');
- },
- clickSubmit = function (ev) {
- var cal = $(this).parent();
- var col = cal.data('colorpicker').color;
- cal.data('colorpicker').origColor = col;
- setCurrentColor(col, cal.get(0));
- cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
- },
- show = function (ev) {
- var cal = $('#' + $(this).data('colorpickerId'));
- cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
- var pos = $(this).offset();
- var viewPort = getViewport();
- var top = pos.top + this.offsetHeight;
- var left = pos.left;
- if (top + 176 > viewPort.t + viewPort.h) {
- top -= this.offsetHeight + 176;
- }
- if (left + 356 > viewPort.l + viewPort.w) {
- left -= 356;
- }
- cal.css({left: left + 'px', top: top + 'px'});
- if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
- cal.show();
- }
- $(document).bind('mousedown', {cal: cal}, hide);
- return false;
- },
- hide = function (ev) {
- if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
- if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
- ev.data.cal.hide();
- }
- $(document).unbind('mousedown', hide);
- }
- },
- isChildOf = function(parentEl, el, container) {
- if (parentEl == el) {
- return true;
- }
- if (parentEl.contains) {
- return parentEl.contains(el);
- }
- if ( parentEl.compareDocumentPosition ) {
- return !!(parentEl.compareDocumentPosition(el) & 16);
- }
- var prEl = el.parentNode;
- while(prEl && prEl != container) {
- if (prEl == parentEl)
- return true;
- prEl = prEl.parentNode;
- }
- return false;
- },
- getViewport = function () {
- var m = document.compatMode == 'CSS1Compat';
- return {
- l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
- t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
- w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
- h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
- };
- },
- fixHSB = function (hsb) {
- return {
- h: Math.min(360, Math.max(0, hsb.h)),
- s: Math.min(100, Math.max(0, hsb.s)),
- b: Math.min(100, Math.max(0, hsb.b))
- };
- },
- fixRGB = function (rgb) {
- return {
- r: Math.min(255, Math.max(0, rgb.r)),
- g: Math.min(255, Math.max(0, rgb.g)),
- b: Math.min(255, Math.max(0, rgb.b))
- };
- },
- fixHex = function (hex) {
- var len = 6 - hex.length;
- if (len > 0) {
- var o = [];
- for (var i=0; i<len; i++) {
- o.push('0');
- }
- o.push(hex);
- hex = o.join('');
- }
- return hex;
- },
- HexToRGB = function (hex) {
- var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
- return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
- },
- HexToHSB = function (hex) {
- return RGBToHSB(HexToRGB(hex));
- },
- RGBToHSB = function (rgb) {
- var hsb = {
- h: 0,
- s: 0,
- b: 0
- };
- var min = Math.min(rgb.r, rgb.g, rgb.b);
- var max = Math.max(rgb.r, rgb.g, rgb.b);
- var delta = max - min;
- hsb.b = max;
- if (max != 0) {
-
- }
- hsb.s = max != 0 ? 255 * delta / max : 0;
- if (hsb.s != 0) {
- if (rgb.r == max) {
- hsb.h = (rgb.g - rgb.b) / delta;
- } else if (rgb.g == max) {
- hsb.h = 2 + (rgb.b - rgb.r) / delta;
- } else {
- hsb.h = 4 + (rgb.r - rgb.g) / delta;
- }
- } else {
- hsb.h = -1;
- }
- hsb.h *= 60;
- if (hsb.h < 0) {
- hsb.h += 360;
- }
- hsb.s *= 100/255;
- hsb.b *= 100/255;
- return hsb;
- },
- HSBToRGB = function (hsb) {
- var rgb = {};
- var h = Math.round(hsb.h);
- var s = Math.round(hsb.s*255/100);
- var v = Math.round(hsb.b*255/100);
- if(s == 0) {
- rgb.r = rgb.g = rgb.b = v;
- } else {
- var t1 = v;
- var t2 = (255-s)*v/255;
- var t3 = (t1-t2)*(h%60)/60;
- if(h==360) h = 0;
- if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
- else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
- else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
- else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
- else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
- else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
- else {rgb.r=0; rgb.g=0; rgb.b=0}
- }
- return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
- },
- RGBToHex = function (rgb) {
- var hex = [
- rgb.r.toString(16),
- rgb.g.toString(16),
- rgb.b.toString(16)
- ];
- $.each(hex, function (nr, val) {
- if (val.length == 1) {
- hex[nr] = '0' + val;
- }
- });
- return hex.join('');
- },
- HSBToHex = function (hsb) {
- return RGBToHex(HSBToRGB(hsb));
- },
- restoreOriginal = function () {
- var cal = $(this).parent();
- var col = cal.data('colorpicker').origColor;
- cal.data('colorpicker').color = col;
- fillRGBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- setSelector(col, cal.get(0));
- setHue(col, cal.get(0));
- setNewColor(col, cal.get(0));
- };
- return {
- init: function (opt) {
- opt = $.extend({}, defaults, opt||{});
- if (typeof opt.color == 'string') {
- opt.color = HexToHSB(opt.color);
- } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
- opt.color = RGBToHSB(opt.color);
- } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
- opt.color = fixHSB(opt.color);
- } else {
- return this;
- }
- return this.each(function () {
- if (!$(this).data('colorpickerId')) {
- var options = $.extend({}, opt);
- options.origColor = opt.color;
- var id = 'collorpicker_' + parseInt(Math.random() * 1000);
- $(this).data('colorpickerId', id);
- var cal = $(tpl).attr('id', id);
- if (options.flat) {
- cal.appendTo(this).show();
- } else {
- cal.appendTo(document.body);
- }
- options.fields = cal
- .find('input')
- .bind('keyup', keyDown)
- .bind('change', change)
- .bind('blur', blur)
- .bind('focus', focus);
- cal
- .find('span').bind('mousedown', downIncrement).end()
- .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
- options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
- options.selectorIndic = options.selector.find('div div');
- options.el = this;
- options.hue = cal.find('div.colorpicker_hue div');
- cal.find('div.colorpicker_hue').bind('mousedown', downHue);
- options.newColor = cal.find('div.colorpicker_new_color');
- options.currentColor = cal.find('div.colorpicker_current_color');
- cal.data('colorpicker', options);
- cal.find('div.colorpicker_submit')
- .bind('mouseenter', enterSubmit)
- .bind('mouseleave', leaveSubmit)
- .bind('click', clickSubmit);
- fillRGBFields(options.color, cal.get(0));
- fillHSBFields(options.color, cal.get(0));
- fillHexFields(options.color, cal.get(0));
- setHue(options.color, cal.get(0));
- setSelector(options.color, cal.get(0));
- setCurrentColor(options.color, cal.get(0));
- setNewColor(options.color, cal.get(0));
- if (options.flat) {
- cal.css({
- position: 'relative',
- display: 'block'
- });
- } else {
- $(this).bind(options.eventName, show);
- }
- }
- });
- },
- showPicker: function() {
- return this.each( function () {
- if ($(this).data('colorpickerId')) {
- show.apply(this);
- }
- });
- },
- hidePicker: function() {
- return this.each( function () {
- if ($(this).data('colorpickerId')) {
- $('#' + $(this).data('colorpickerId')).hide();
- }
- });
- },
- setColor: function(col) {
- if (typeof col == 'string') {
- col = HexToHSB(col);
- } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
- col = RGBToHSB(col);
- } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
- col = fixHSB(col);
- } else {
- return this;
- }
- return this.each(function(){
- if ($(this).data('colorpickerId')) {
- var cal = $('#' + $(this).data('colorpickerId'));
- cal.data('colorpicker').color = col;
- cal.data('colorpicker').origColor = col;
- fillRGBFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- setHue(col, cal.get(0));
- setSelector(col, cal.get(0));
- setCurrentColor(col, cal.get(0));
- setNewColor(col, cal.get(0));
- }
- });
- }
- };
- }();
- $.fn.extend({
- ColorPicker: ColorPicker.init,
- ColorPickerHide: ColorPicker.hidePicker,
- ColorPickerShow: ColorPicker.showPicker,
- ColorPickerSetColor: ColorPicker.setColor
- });
-})(jQuery) \ No newline at end of file
diff --git a/library/colorpicker/js/eye.js b/library/colorpicker/js/eye.js
deleted file mode 100644
index ea70e643f..000000000
--- a/library/colorpicker/js/eye.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- *
- * Zoomimage
- * Author: Stefan Petre www.eyecon.ro
- *
- */
-(function($){
- var EYE = window.EYE = function() {
- var _registered = {
- init: []
- };
- return {
- init: function() {
- $.each(_registered.init, function(nr, fn){
- fn.call();
- });
- },
- extend: function(prop) {
- for (var i in prop) {
- if (prop[i] != undefined) {
- this[i] = prop[i];
- }
- }
- },
- register: function(fn, type) {
- if (!_registered[type]) {
- _registered[type] = [];
- }
- _registered[type].push(fn);
- }
- };
- }();
- $(EYE.init);
-})(jQuery);
diff --git a/library/colorpicker/js/layout.js b/library/colorpicker/js/layout.js
deleted file mode 100644
index e0dfb8f33..000000000
--- a/library/colorpicker/js/layout.js
+++ /dev/null
@@ -1,67 +0,0 @@
-(function($){
- var initLayout = function() {
- var hash = window.location.hash.replace('#', '');
- var currentTab = $('ul.navigationTabs a')
- .bind('click', showTab)
- .filter('a[rel=' + hash + ']');
- if (currentTab.size() == 0) {
- currentTab = $('ul.navigationTabs a:first');
- }
- showTab.apply(currentTab.get(0));
- $('#colorpickerHolder').ColorPicker({flat: true});
- $('#colorpickerHolder2').ColorPicker({
- flat: true,
- color: '#00ff00',
- onSubmit: function(hsb, hex, rgb) {
- $('#colorSelector2 div').css('backgroundColor', '#' + hex);
- }
- });
- $('#colorpickerHolder2>div').css('position', 'absolute');
- var widt = false;
- $('#colorSelector2').bind('click', function() {
- $('#colorpickerHolder2').stop().animate({height: widt ? 0 : 173}, 500);
- widt = !widt;
- });
- $('#colorpickerField1, #colorpickerField2, #colorpickerField3').ColorPicker({
- onSubmit: function(hsb, hex, rgb, el) {
- $(el).val(hex);
- $(el).ColorPickerHide();
- },
- onBeforeShow: function () {
- $(this).ColorPickerSetColor(this.value);
- }
- })
- .bind('keyup', function(){
- $(this).ColorPickerSetColor(this.value);
- });
- $('#colorSelector').ColorPicker({
- color: '#0000ff',
- onShow: function (colpkr) {
- $(colpkr).fadeIn(500);
- return false;
- },
- onHide: function (colpkr) {
- $(colpkr).fadeOut(500);
- return false;
- },
- onChange: function (hsb, hex, rgb) {
- $('#colorSelector div').css('backgroundColor', '#' + hex);
- }
- });
- };
-
- var showTab = function(e) {
- var tabIndex = $('ul.navigationTabs a')
- .removeClass('active')
- .index(this);
- $(this)
- .addClass('active')
- .blur();
- $('div.tab')
- .hide()
- .eq(tabIndex)
- .show();
- };
-
- EYE.register(initLayout, 'init');
-})(jQuery) \ No newline at end of file
diff --git a/library/colorpicker/js/utils.js b/library/colorpicker/js/utils.js
deleted file mode 100644
index cc7ce14ec..000000000
--- a/library/colorpicker/js/utils.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- *
- * Utilities
- * Author: Stefan Petre www.eyecon.ro
- *
- */
-(function($) {
-EYE.extend({
- getPosition : function(e, forceIt)
- {
- var x = 0;
- var y = 0;
- var es = e.style;
- var restoreStyles = false;
- if (forceIt && jQuery.curCSS(e,'display') == 'none') {
- var oldVisibility = es.visibility;
- var oldPosition = es.position;
- restoreStyles = true;
- es.visibility = 'hidden';
- es.display = 'block';
- es.position = 'absolute';
- }
- var el = e;
- if (el.getBoundingClientRect) { // IE
- var box = el.getBoundingClientRect();
- x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
- y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
- } else {
- x = el.offsetLeft;
- y = el.offsetTop;
- el = el.offsetParent;
- if (e != el) {
- while (el) {
- x += el.offsetLeft;
- y += el.offsetTop;
- el = el.offsetParent;
- }
- }
- if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
- x -= document.body.offsetLeft;
- y -= document.body.offsetTop;
- }
- el = e.parentNode;
- while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML')
- {
- if (jQuery.curCSS(el, 'display') != 'inline') {
- x -= el.scrollLeft;
- y -= el.scrollTop;
- }
- el = el.parentNode;
- }
- }
- if (restoreStyles == true) {
- es.display = 'none';
- es.position = oldPosition;
- es.visibility = oldVisibility;
- }
- return {x:x, y:y};
- },
- getSize : function(e)
- {
- var w = parseInt(jQuery.curCSS(e,'width'), 10);
- var h = parseInt(jQuery.curCSS(e,'height'), 10);
- var wb = 0;
- var hb = 0;
- if (jQuery.curCSS(e, 'display') != 'none') {
- wb = e.offsetWidth;
- hb = e.offsetHeight;
- } else {
- var es = e.style;
- var oldVisibility = es.visibility;
- var oldPosition = es.position;
- es.visibility = 'hidden';
- es.display = 'block';
- es.position = 'absolute';
- wb = e.offsetWidth;
- hb = e.offsetHeight;
- es.display = 'none';
- es.position = oldPosition;
- es.visibility = oldVisibility;
- }
- return {w:w, h:h, wb:wb, hb:hb};
- },
- getClient : function(e)
- {
- var h, w;
- if (e) {
- w = e.clientWidth;
- h = e.clientHeight;
- } else {
- var de = document.documentElement;
- w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
- h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
- }
- return {w:w,h:h};
- },
- getScroll : function (e)
- {
- var t=0, l=0, w=0, h=0, iw=0, ih=0;
- if (e && e.nodeName.toLowerCase() != 'body') {
- t = e.scrollTop;
- l = e.scrollLeft;
- w = e.scrollWidth;
- h = e.scrollHeight;
- } else {
- if (document.documentElement) {
- t = document.documentElement.scrollTop;
- l = document.documentElement.scrollLeft;
- w = document.documentElement.scrollWidth;
- h = document.documentElement.scrollHeight;
- } else if (document.body) {
- t = document.body.scrollTop;
- l = document.body.scrollLeft;
- w = document.body.scrollWidth;
- h = document.body.scrollHeight;
- }
- if (typeof pageYOffset != 'undefined') {
- t = pageYOffset;
- l = pageXOffset;
- }
- iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
- ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
- }
- return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
- },
- getMargins : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'marginTop') || '';
- var r = jQuery.curCSS(e,'marginRight') || '';
- var b = jQuery.curCSS(e,'marginBottom') || '';
- var l = jQuery.curCSS(e,'marginLeft') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- getPadding : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'paddingTop') || '';
- var r = jQuery.curCSS(e,'paddingRight') || '';
- var b = jQuery.curCSS(e,'paddingBottom') || '';
- var l = jQuery.curCSS(e,'paddingLeft') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- getBorder : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'borderTopWidth') || '';
- var r = jQuery.curCSS(e,'borderRightWidth') || '';
- var b = jQuery.curCSS(e,'borderBottomWidth') || '';
- var l = jQuery.curCSS(e,'borderLeftWidth') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)||0
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- traverseDOM : function(nodeEl, func)
- {
- func(nodeEl);
- nodeEl = nodeEl.firstChild;
- while(nodeEl){
- EYE.traverseDOM(nodeEl, func);
- nodeEl = nodeEl.nextSibling;
- }
- },
- getInnerWidth : function(el, scroll) {
- var offsetW = el.offsetWidth;
- return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
- },
- getInnerHeight : function(el, scroll) {
- var offsetH = el.offsetHeight;
- return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
- },
- getExtraWidth : function(el) {
- if($.boxModel)
- return (parseInt($.curCSS(el, 'paddingLeft'))||0)
- + (parseInt($.curCSS(el, 'paddingRight'))||0)
- + (parseInt($.curCSS(el, 'borderLeftWidth'))||0)
- + (parseInt($.curCSS(el, 'borderRightWidth'))||0);
- return 0;
- },
- getExtraHeight : function(el) {
- if($.boxModel)
- return (parseInt($.curCSS(el, 'paddingTop'))||0)
- + (parseInt($.curCSS(el, 'paddingBottom'))||0)
- + (parseInt($.curCSS(el, 'borderTopWidth'))||0)
- + (parseInt($.curCSS(el, 'borderBottomWidth'))||0);
- return 0;
- },
- isChildOf: function(parentEl, el, container) {
- if (parentEl == el) {
- return true;
- }
- if (!el || !el.nodeType || el.nodeType != 1) {
- return false;
- }
- if (parentEl.contains && !$.browser.safari) {
- return parentEl.contains(el);
- }
- if ( parentEl.compareDocumentPosition ) {
- return !!(parentEl.compareDocumentPosition(el) & 16);
- }
- var prEl = el.parentNode;
- while(prEl && prEl != container) {
- if (prEl == parentEl)
- return true;
- prEl = prEl.parentNode;
- }
- return false;
- },
- centerEl : function(el, axis)
- {
- var clientScroll = EYE.getScroll();
- var size = EYE.getSize(el);
- if (!axis || axis == 'vertically')
- $(el).css(
- {
- top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
- }
- );
- if (!axis || axis == 'horizontally')
- $(el).css(
- {
- left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
- }
- );
- }
-});
-if (!$.easing.easeout) {
- $.easing.easeout = function(p, n, firstNum, delta, duration) {
- return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
- };
-}
-
-})(jQuery); \ No newline at end of file
diff --git a/library/fancybox/blank.gif b/library/fancybox/blank.gif
deleted file mode 100644
index 35d42e808..000000000
--- a/library/fancybox/blank.gif
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_close.png b/library/fancybox/fancy_close.png
deleted file mode 100644
index 07035307a..000000000
--- a/library/fancybox/fancy_close.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_loading.png b/library/fancybox/fancy_loading.png
deleted file mode 100644
index 250301796..000000000
--- a/library/fancybox/fancy_loading.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_nav_left.png b/library/fancybox/fancy_nav_left.png
deleted file mode 100644
index ebaa6a4fd..000000000
--- a/library/fancybox/fancy_nav_left.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_nav_right.png b/library/fancybox/fancy_nav_right.png
deleted file mode 100644
index 873294e96..000000000
--- a/library/fancybox/fancy_nav_right.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_e.png b/library/fancybox/fancy_shadow_e.png
deleted file mode 100644
index 2eda08936..000000000
--- a/library/fancybox/fancy_shadow_e.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_n.png b/library/fancybox/fancy_shadow_n.png
deleted file mode 100644
index 69aa10e23..000000000
--- a/library/fancybox/fancy_shadow_n.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_ne.png b/library/fancybox/fancy_shadow_ne.png
deleted file mode 100644
index 79f6980a3..000000000
--- a/library/fancybox/fancy_shadow_ne.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_nw.png b/library/fancybox/fancy_shadow_nw.png
deleted file mode 100644
index 7182cd938..000000000
--- a/library/fancybox/fancy_shadow_nw.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_s.png b/library/fancybox/fancy_shadow_s.png
deleted file mode 100644
index d8858bfb7..000000000
--- a/library/fancybox/fancy_shadow_s.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_se.png b/library/fancybox/fancy_shadow_se.png
deleted file mode 100644
index 541e3ffd3..000000000
--- a/library/fancybox/fancy_shadow_se.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_sw.png b/library/fancybox/fancy_shadow_sw.png
deleted file mode 100644
index b451689fa..000000000
--- a/library/fancybox/fancy_shadow_sw.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_w.png b/library/fancybox/fancy_shadow_w.png
deleted file mode 100644
index 8a4e4a887..000000000
--- a/library/fancybox/fancy_shadow_w.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_left.png b/library/fancybox/fancy_title_left.png
deleted file mode 100644
index 6049223d1..000000000
--- a/library/fancybox/fancy_title_left.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_main.png b/library/fancybox/fancy_title_main.png
deleted file mode 100644
index 8044271f2..000000000
--- a/library/fancybox/fancy_title_main.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_over.png b/library/fancybox/fancy_title_over.png
deleted file mode 100644
index d9f458f4b..000000000
--- a/library/fancybox/fancy_title_over.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_right.png b/library/fancybox/fancy_title_right.png
deleted file mode 100644
index e36d9db2a..000000000
--- a/library/fancybox/fancy_title_right.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox-x.png b/library/fancybox/fancybox-x.png
deleted file mode 100644
index c2130f869..000000000
--- a/library/fancybox/fancybox-x.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox-y.png b/library/fancybox/fancybox-y.png
deleted file mode 100644
index 7ef399b99..000000000
--- a/library/fancybox/fancybox-y.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox.png b/library/fancybox/fancybox.png
deleted file mode 100644
index 65e14f68f..000000000
--- a/library/fancybox/fancybox.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/jquery.easing-1.3.pack.js b/library/fancybox/jquery.easing-1.3.pack.js
deleted file mode 100644
index 9028179e7..000000000
--- a/library/fancybox/jquery.easing-1.3.pack.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
- *
- * Uses the built in easing capabilities added In jQuery 1.1
- * to offer multiple easing options
- *
- * TERMS OF USE - jQuery Easing
- *
- * Open source under the BSD License.
- *
- * Copyright © 2008 George McGinley Smith
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
-*/
-
-// t: current time, b: begInnIng value, c: change In value, d: duration
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}))
-
-/*
- *
- * TERMS OF USE - EASING EQUATIONS
- *
- * Open source under the BSD License.
- *
- * Copyright © 2001 Robert Penner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
diff --git a/library/fancybox/jquery.fancybox-1.3.4.css b/library/fancybox/jquery.fancybox-1.3.4.css
deleted file mode 100644
index 6f53d8f4a..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.css
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-#fancybox-loading {
- position: fixed;
- top: 50%;
- left: 50%;
- width: 40px;
- height: 40px;
- margin-top: -20px;
- margin-left: -20px;
- cursor: pointer;
- overflow: hidden;
- z-index: 1104;
- display: none;
-}
-
-#fancybox-loading div {
- position: absolute;
- top: 0;
- left: 0;
- width: 40px;
- height: 480px;
- background-image: url('fancybox.png');
-}
-
-#fancybox-overlay {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: 1100;
- display: none;
-}
-
-#fancybox-tmp {
- padding: 0;
- margin: 0;
- border: 0;
- overflow: auto;
- display: none;
-}
-
-#fancybox-wrap {
- position: absolute;
- top: 0;
- left: 0;
- padding: 20px;
- z-index: 1101;
- outline: none;
- display: none;
-}
-
-#fancybox-outer {
- position: relative;
- width: 100%;
- height: 100%;
- background: #fff;
-}
-
-#fancybox-content {
- width: 0;
- height: 0;
- padding: 0;
- outline: none;
- position: relative;
- overflow: hidden;
- z-index: 1102;
- border: 0px solid #fff;
-}
-
-#fancybox-hide-sel-frame {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: transparent;
- z-index: 1101;
-}
-
-#fancybox-close {
- position: absolute;
- top: -15px;
- right: -15px;
- width: 30px;
- height: 30px;
- background: transparent url('fancybox.png') -40px 0px;
- cursor: pointer;
- z-index: 1103;
- display: none;
-}
-
-#fancybox-error {
- color: #444;
- font: normal 12px/20px Arial;
- padding: 14px;
- margin: 0;
-}
-
-#fancybox-img {
- width: 100%;
- height: 100%;
- padding: 0;
- margin: 0;
- border: none;
- outline: none;
- line-height: 0;
- vertical-align: top;
-}
-
-#fancybox-frame {
- width: 100%;
- height: 100%;
- border: none;
- display: block;
-}
-
-#fancybox-left, #fancybox-right {
- position: absolute;
- bottom: 0px;
- height: 100%;
- width: 35%;
- cursor: pointer;
- outline: none;
- background: transparent url('blank.gif');
- z-index: 1102;
- display: none;
-}
-
-#fancybox-left {
- left: 0px;
-}
-
-#fancybox-right {
- right: 0px;
-}
-
-#fancybox-left-ico, #fancybox-right-ico {
- position: absolute;
- top: 50%;
- left: -9999px;
- width: 30px;
- height: 30px;
- margin-top: -15px;
- cursor: pointer;
- z-index: 1102;
- display: block;
-}
-
-#fancybox-left-ico {
- background-image: url('fancybox.png');
- background-position: -40px -30px;
-}
-
-#fancybox-right-ico {
- background-image: url('fancybox.png');
- background-position: -40px -60px;
-}
-
-#fancybox-left:hover, #fancybox-right:hover {
- visibility: visible; /* IE6 */
-}
-
-#fancybox-left:hover span {
- left: 20px;
-}
-
-#fancybox-right:hover span {
- left: auto;
- right: 20px;
-}
-
-.fancybox-bg {
- position: absolute;
- padding: 0;
- margin: 0;
- border: 0;
- width: 20px;
- height: 20px;
- z-index: 1001;
-}
-
-#fancybox-bg-n {
- top: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
-}
-
-#fancybox-bg-ne {
- top: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -162px;
-}
-
-#fancybox-bg-e {
- top: 0;
- right: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
- background-position: -20px 0px;
-}
-
-#fancybox-bg-se {
- bottom: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -182px;
-}
-
-#fancybox-bg-s {
- bottom: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
- background-position: 0px -20px;
-}
-
-#fancybox-bg-sw {
- bottom: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -142px;
-}
-
-#fancybox-bg-w {
- top: 0;
- left: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
-}
-
-#fancybox-bg-nw {
- top: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -122px;
-}
-
-#fancybox-title {
- font-family: Helvetica;
- font-size: 12px;
- z-index: 1102;
-}
-
-.fancybox-title-inside {
- padding-bottom: 10px;
- text-align: center;
- color: #333;
- background: #fff;
- position: relative;
-}
-
-.fancybox-title-outside {
- padding-top: 10px;
- color: #fff;
-}
-
-.fancybox-title-over {
- position: absolute;
- bottom: 0;
- left: 0;
- color: #FFF;
- text-align: left;
-}
-
-#fancybox-title-over {
- padding: 10px;
- background-image: url('fancy_title_over.png');
- display: block;
-}
-
-.fancybox-title-float {
- position: absolute;
- left: 0;
- bottom: -20px;
- height: 32px;
-}
-
-#fancybox-title-float-wrap {
- border: none;
- border-collapse: collapse;
- width: auto;
-}
-
-#fancybox-title-float-wrap td {
- border: none;
- white-space: nowrap;
-}
-
-#fancybox-title-float-left {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -40px -90px no-repeat;
-}
-
-#fancybox-title-float-main {
- color: #FFF;
- line-height: 29px;
- font-weight: bold;
- padding: 0 0 3px 0;
- background: url('fancybox-x.png') 0px -40px;
-}
-
-#fancybox-title-float-right {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -55px -90px no-repeat;
-}
-
-/* IE6 */
-
-.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
-.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
- height: expression(this.parentNode.clientHeight + "px");
-}
-
-#fancybox-loading.fancybox-ie6 {
- position: absolute; margin-top: 0;
- top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
-}
-
-#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
-
-/* IE6, IE7, IE8 */
-
-.fancybox-ie .fancybox-bg { background: transparent !important; }
-
-.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); } \ No newline at end of file
diff --git a/library/fancybox/jquery.fancybox-1.3.4.js b/library/fancybox/jquery.fancybox-1.3.4.js
deleted file mode 100644
index 43e2cd56b..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.js
+++ /dev/null
@@ -1,1157 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-;(function($) {
- var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
-
- selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
-
- ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
-
- loadingTimer, loadingFrame = 1,
-
- titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
-
- isIE6 = false,
-// $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
-
- /*
- * Private methods
- */
-
- _abort = function() {
- loading.hide();
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- if (ajaxLoader) {
- ajaxLoader.abort();
- }
-
- tmp.empty();
- },
-
- _error = function() {
- if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
- loading.hide();
- busy = false;
- return;
- }
-
- selectedOpts.titleShow = false;
-
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
-
- tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );
-
- _process_inline();
- },
-
- _start = function() {
- var obj = selectedArray[ selectedIndex ],
- href,
- type,
- title,
- str,
- emb,
- ret;
-
- _abort();
-
- selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
-
- ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);
-
- if (ret === false) {
- busy = false;
- return;
- } else if (typeof ret == 'object') {
- selectedOpts = $.extend(selectedOpts, ret);
- }
-
- title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';
-
- if (obj.nodeName && !selectedOpts.orig) {
- selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
- }
-
- if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
- title = selectedOpts.orig.attr('alt');
- }
-
- href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;
-
- if ((/^(?:javascript)/i).test(href) || href == '#') {
- href = null;
- }
-
- if (selectedOpts.type) {
- type = selectedOpts.type;
-
- if (!href) {
- href = selectedOpts.content;
- }
-
- } else if (selectedOpts.content) {
- type = 'html';
-
- } else if (href) {
- if (href.match(imgRegExp)) {
- type = 'image';
-
- } else if (href.match(swfRegExp)) {
- type = 'swf';
-
- } else if ($(obj).hasClass("iframe")) {
- type = 'iframe';
-
- } else if (href.indexOf("#") === 0) {
- type = 'inline';
-
- } else {
- type = 'ajax';
- }
- }
-
- if (!type) {
- _error();
- return;
- }
-
- if (type == 'inline') {
- obj = href.substr(href.indexOf("#"));
- type = $(obj).length > 0 ? 'inline' : 'ajax';
- }
-
- selectedOpts.type = type;
- selectedOpts.href = href;
- selectedOpts.title = title;
-
- if (selectedOpts.autoDimensions) {
- if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
- } else {
- selectedOpts.autoDimensions = false;
- }
- }
-
- if (selectedOpts.modal) {
- selectedOpts.overlayShow = true;
- selectedOpts.hideOnOverlayClick = false;
- selectedOpts.hideOnContentClick = false;
- selectedOpts.enableEscapeButton = false;
- selectedOpts.showCloseButton = false;
- }
-
- selectedOpts.padding = parseInt(selectedOpts.padding, 10);
- selectedOpts.margin = parseInt(selectedOpts.margin, 10);
-
- tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
-
- $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
- $(this).replaceWith(content.children());
- });
-
- switch (type) {
- case 'html' :
- tmp.html( selectedOpts.content );
- _process_inline();
- break;
-
- case 'inline' :
- if ( $(obj).parent().is('#fancybox-content') === true) {
- busy = false;
- return;
- }
-
- $('<div class="fancybox-inline-tmp" />')
- .hide()
- .insertBefore( $(obj) )
- .bind('fancybox-cleanup', function() {
- $(this).replaceWith(content.children());
- }).bind('fancybox-cancel', function() {
- $(this).replaceWith(tmp.children());
- });
-
- $(obj).appendTo(tmp);
-
- _process_inline();
- break;
-
- case 'image':
- busy = false;
-
- $.fancybox.showActivity();
-
- imgPreloader = new Image();
-
- imgPreloader.onerror = function() {
- _error();
- };
-
- imgPreloader.onload = function() {
- busy = true;
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- _process_image();
- };
-
- imgPreloader.src = href;
- break;
-
- case 'swf':
- selectedOpts.scrolling = 'no';
-
- str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
- emb = '';
-
- $.each(selectedOpts.swf, function(name, val) {
- str += '<param name="' + name + '" value="' + val + '"></param>';
- emb += ' ' + name + '="' + val + '"';
- });
-
- str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
-
- tmp.html(str);
-
- _process_inline();
- break;
-
- case 'ajax':
- busy = false;
-
- $.fancybox.showActivity();
-
- selectedOpts.ajax.win = selectedOpts.ajax.success;
-
- ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
- url : href,
- data : selectedOpts.ajax.data || {},
- error : function(XMLHttpRequest, textStatus, errorThrown) {
- if ( XMLHttpRequest.status > 0 ) {
- _error();
- }
- },
- success : function(data, textStatus, XMLHttpRequest) {
- var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
- if (o.status == 200) {
- if ( typeof selectedOpts.ajax.win == 'function' ) {
- ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);
-
- if (ret === false) {
- loading.hide();
- return;
- } else if (typeof ret == 'string' || typeof ret == 'object') {
- data = ret;
- }
- }
-
- tmp.html( data );
- _process_inline();
- }
- }
- }));
-
- break;
-
- case 'iframe':
- _show();
- break;
- }
- },
-
- _process_inline = function() {
- var
- w = selectedOpts.width,
- h = selectedOpts.height;
-
- if (w.toString().indexOf('%') > -1) {
- w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';
-
- } else {
- w = w == 'auto' ? 'auto' : w + 'px';
- }
-
- if (h.toString().indexOf('%') > -1) {
- h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';
-
- } else {
- h = h == 'auto' ? 'auto' : h + 'px';
- }
-
- tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');
-
- selectedOpts.width = tmp.width();
- selectedOpts.height = tmp.height();
-
- _show();
- },
-
- _process_image = function() {
- selectedOpts.width = imgPreloader.width;
- selectedOpts.height = imgPreloader.height;
-
- $("<img />").attr({
- 'id' : 'fancybox-img',
- 'src' : imgPreloader.src,
- 'alt' : selectedOpts.title
- }).appendTo( tmp );
-
- _show();
- },
-
- _show = function() {
- var pos, equal;
-
- loading.hide();
-
- if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- $.event.trigger('fancybox-cancel');
-
- busy = false;
- return;
- }
-
- busy = true;
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
- wrap.css('height', wrap.height());
- }
-
- currentArray = selectedArray;
- currentIndex = selectedIndex;
- currentOpts = selectedOpts;
-
- if (currentOpts.overlayShow) {
- overlay.css({
- 'background-color' : currentOpts.overlayColor,
- 'opacity' : currentOpts.overlayOpacity,
- 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
- 'height' : $(document).height()
- });
-
- if (!overlay.is(':visible')) {
- if (isIE6) {
- $('select:not(#fancybox-tmp select)').filter(function() {
- return this.style.visibility !== 'hidden';
- }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
- this.style.visibility = 'inherit';
- });
- }
-
- overlay.show();
- }
- } else {
- overlay.hide();
- }
-
- final_pos = _get_zoom_to();
-
- _process_title();
-
- if (wrap.is(":visible")) {
- $( close.add( nav_left ).add( nav_right ) ).hide();
-
- pos = wrap.position(),
-
- start_pos = {
- top : pos.top,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
-
- content.fadeTo(currentOpts.changeFade, 0.3, function() {
- var finish_resizing = function() {
- content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
- };
-
- $.event.trigger('fancybox-change');
-
- content
- .empty()
- .removeAttr('filter')
- .css({
- 'border-width' : currentOpts.padding,
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- });
-
- if (equal) {
- finish_resizing();
-
- } else {
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.changeSpeed,
- easing : currentOpts.easingChange,
- step : _draw,
- complete : finish_resizing
- });
- }
- });
-
- return;
- }
-
- wrap.removeAttr("style");
-
- content.css('border-width', currentOpts.padding);
-
- if (currentOpts.transitionIn == 'elastic') {
- start_pos = _get_zoom_from();
-
- content.html( tmp.contents() );
-
- wrap.show();
-
- if (currentOpts.opacity) {
- final_pos.opacity = 0;
- }
-
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.speedIn,
- easing : currentOpts.easingIn,
- step : _draw,
- complete : _finish
- });
-
- return;
- }
-
- if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {
- title.show();
- }
-
- content
- .css({
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- })
- .html( tmp.contents() );
-
- wrap
- .css(final_pos)
- .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
- },
-
- _format_title = function(title) {
- if (title && title.length) {
- if (currentOpts.titlePosition == 'float') {
- return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>';
- }
-
- return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>';
- }
-
- return false;
- },
-
- _process_title = function() {
- titleStr = currentOpts.title || '';
- titleHeight = 0;
-
- title
- .empty()
- .removeAttr('style')
- .removeClass();
-
- if (currentOpts.titleShow === false) {
- title.hide();
- return;
- }
-
- titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
-
- if (!titleStr || titleStr === '') {
- title.hide();
- return;
- }
-
- title
- .addClass('fancybox-title-' + currentOpts.titlePosition)
- .html( titleStr )
- .appendTo( 'body' )
- .show();
-
- switch (currentOpts.titlePosition) {
- case 'inside':
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'marginLeft' : currentOpts.padding,
- 'marginRight' : currentOpts.padding
- });
-
- titleHeight = title.outerHeight(true);
-
- title.appendTo( outer );
-
- final_pos.height += titleHeight;
- break;
-
- case 'over':
- title
- .css({
- 'marginLeft' : currentOpts.padding,
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'bottom' : currentOpts.padding
- })
- .appendTo( outer );
- break;
-
- case 'float':
- title
- .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
- .appendTo( wrap );
- break;
-
- default:
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'paddingLeft' : currentOpts.padding,
- 'paddingRight' : currentOpts.padding
- })
- .appendTo( wrap );
- break;
- }
-
- title.hide();
- },
-
- _set_navigation = function() {
- if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
- $(document).bind('keydown.fb', function(e) {
- if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
- e.preventDefault();
- $.fancybox.close();
-
- } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
- e.preventDefault();
- $.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!currentOpts.showNavArrows) {
- nav_left.hide();
- nav_right.hide();
- return;
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
- nav_left.show();
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
- nav_right.show();
- }
- },
-
- _finish = function () {
- if (!$.support.opacity) {
- content.get(0).style.removeAttribute('filter');
- wrap.get(0).style.removeAttribute('filter');
- }
-
- if (selectedOpts.autoDimensions) {
- content.css('height', 'auto');
- }
-
- wrap.css('height', 'auto');
-
- if (titleStr && titleStr.length) {
- title.show();
- }
-
- if (currentOpts.showCloseButton) {
- close.show();
- }
-
- _set_navigation();
-
- if (currentOpts.hideOnContentClick) {
- content.bind('click', $.fancybox.close);
- }
-
- if (currentOpts.hideOnOverlayClick) {
- overlay.bind('click', $.fancybox.close);
- }
-
- $(window).bind("resize.fb", $.fancybox.resize);
-
- if (currentOpts.centerOnScroll) {
- $(window).bind("scroll.fb", $.fancybox.center);
- }
-
- if (currentOpts.type == 'iframe') {
- $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
- }
-
- wrap.show();
-
- busy = false;
-
- $.fancybox.center();
-
- currentOpts.onComplete(currentArray, currentIndex, currentOpts);
-
- _preload_images();
- },
-
- _preload_images = function() {
- var href,
- objNext;
-
- if ((currentArray.length -1) > currentIndex) {
- href = currentArray[ currentIndex + 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
-
- if (currentIndex > 0) {
- href = currentArray[ currentIndex - 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
- },
-
- _draw = function(pos) {
- var dim = {
- width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
- height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
-
- top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
- left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
- };
-
- if (typeof final_pos.opacity !== 'undefined') {
- dim.opacity = pos < 0.5 ? 0.5 : pos;
- }
-
- wrap.css(dim);
-
- content.css({
- 'width' : dim.width - currentOpts.padding * 2,
- 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
- });
- },
-
- _get_viewport = function() {
- return [
- $(window).width() - (currentOpts.margin * 2),
- $(window).height() - (currentOpts.margin * 2),
- $(document).scrollLeft() + currentOpts.margin,
- $(document).scrollTop() + currentOpts.margin
- ];
- },
-
- _get_zoom_to = function () {
- var view = _get_viewport(),
- to = {},
- resize = currentOpts.autoScale,
- double_padding = currentOpts.padding * 2,
- ratio;
-
- if (currentOpts.width.toString().indexOf('%') > -1) {
- to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
- } else {
- to.width = currentOpts.width + double_padding;
- }
-
- if (currentOpts.height.toString().indexOf('%') > -1) {
- to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
- } else {
- to.height = currentOpts.height + double_padding;
- }
-
- if (resize && (to.width > view[0] || to.height > view[1])) {
- if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
- ratio = (currentOpts.width ) / (currentOpts.height );
-
- if ((to.width ) > view[0]) {
- to.width = view[0];
- to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
- }
-
- if ((to.height) > view[1]) {
- to.height = view[1];
- to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
- }
-
- } else {
- to.width = Math.min(to.width, view[0]);
- to.height = Math.min(to.height, view[1]);
- }
- }
-
- to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
- to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);
-
- return to;
- },
-
- _get_obj_pos = function(obj) {
- var pos = obj.offset();
-
- pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
- pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;
-
- pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
- pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;
-
- pos.width = obj.width();
- pos.height = obj.height();
-
- return pos;
- },
-
- _get_zoom_from = function() {
- var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
- from = {},
- pos,
- view;
-
- if (orig && orig.length) {
- pos = _get_obj_pos(orig);
-
- from = {
- width : pos.width + (currentOpts.padding * 2),
- height : pos.height + (currentOpts.padding * 2),
- top : pos.top - currentOpts.padding - 20,
- left : pos.left - currentOpts.padding - 20
- };
-
- } else {
- view = _get_viewport();
-
- from = {
- width : currentOpts.padding * 2,
- height : currentOpts.padding * 2,
- top : parseInt(view[3] + view[1] * 0.5, 10),
- left : parseInt(view[2] + view[0] * 0.5, 10)
- };
- }
-
- return from;
- },
-
- _animate_loading = function() {
- if (!loading.is(':visible')){
- clearInterval(loadingTimer);
- return;
- }
-
- $('div', loading).css('top', (loadingFrame * -40) + 'px');
-
- loadingFrame = (loadingFrame + 1) % 12;
- };
-
- /*
- * Public methods
- */
-
- $.fn.fancybox = function(options) {
- if (!$(this).length) {
- return this;
- }
-
- $(this)
- .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
- .unbind('click.fb')
- .bind('click.fb', function(e) {
- e.preventDefault();
-
- if (busy) {
- return;
- }
-
- busy = true;
-
- $(this).blur();
-
- selectedArray = [];
- selectedIndex = 0;
-
- var rel = $(this).attr('rel') || '';
-
- if (!rel || rel == '' || rel === 'nofollow') {
- selectedArray.push(this);
-
- } else {
- selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
- selectedIndex = selectedArray.index( this );
- }
-
- _start();
-
- return;
- });
-
- return this;
- };
-
- $.fancybox = function(obj) {
- var opts;
-
- if (busy) {
- return;
- }
-
- busy = true;
- opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
-
- selectedArray = [];
- selectedIndex = parseInt(opts.index, 10) || 0;
-
- if ($.isArray(obj)) {
- for (var i = 0, j = obj.length; i < j; i++) {
- if (typeof obj[i] == 'object') {
- $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
- } else {
- obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
- }
- }
-
- selectedArray = jQuery.merge(selectedArray, obj);
-
- } else {
- if (typeof obj == 'object') {
- $(obj).data('fancybox', $.extend({}, opts, obj));
- } else {
- obj = $({}).data('fancybox', $.extend({content : obj}, opts));
- }
-
- selectedArray.push(obj);
- }
-
- if (selectedIndex > selectedArray.length || selectedIndex < 0) {
- selectedIndex = 0;
- }
-
- _start();
- };
-
- $.fancybox.showActivity = function() {
- clearInterval(loadingTimer);
-
- loading.show();
- loadingTimer = setInterval(_animate_loading, 66);
- };
-
- $.fancybox.hideActivity = function() {
- loading.hide();
- };
-
- $.fancybox.next = function() {
- return $.fancybox.pos( currentIndex + 1);
- };
-
- $.fancybox.prev = function() {
- return $.fancybox.pos( currentIndex - 1);
- };
-
- $.fancybox.pos = function(pos) {
- if (busy) {
- return;
- }
-
- pos = parseInt(pos);
-
- selectedArray = currentArray;
-
- if (pos > -1 && pos < currentArray.length) {
- selectedIndex = pos;
- _start();
-
- } else if (currentOpts.cyclic && currentArray.length > 1) {
- selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
- _start();
- }
-
- return;
- };
-
- $.fancybox.cancel = function() {
- if (busy) {
- return;
- }
-
- busy = true;
-
- $.event.trigger('fancybox-cancel');
-
- _abort();
-
- selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
-
- busy = false;
- };
-
- // Note: within an iframe use - parent.$.fancybox.close();
- $.fancybox.close = function() {
- if (busy || wrap.is(':hidden')) {
- return;
- }
-
- busy = true;
-
- if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- busy = false;
- return;
- }
-
- _abort();
-
- $(close.add( nav_left ).add( nav_right )).hide();
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
-
- if (currentOpts.titlePosition !== 'inside') {
- title.empty();
- }
-
- wrap.stop();
-
- function _cleanup() {
- overlay.fadeOut('fast');
-
- title.empty().hide();
- wrap.hide();
-
- $.event.trigger('fancybox-cleanup');
-
- content.empty();
-
- currentOpts.onClosed(currentArray, currentIndex, currentOpts);
-
- currentArray = selectedOpts = [];
- currentIndex = selectedIndex = 0;
- currentOpts = selectedOpts = {};
-
- busy = false;
- }
-
- if (currentOpts.transitionOut == 'elastic') {
- start_pos = _get_zoom_from();
-
- var pos = wrap.position();
-
- final_pos = {
- top : pos.top ,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- if (currentOpts.opacity) {
- final_pos.opacity = 1;
- }
-
- title.empty().hide();
-
- fx.prop = 1;
-
- $(fx).animate({ prop: 0 }, {
- duration : currentOpts.speedOut,
- easing : currentOpts.easingOut,
- step : _draw,
- complete : _cleanup
- });
-
- } else {
- wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
- }
- };
-
- $.fancybox.resize = function() {
- if (overlay.is(':visible')) {
- overlay.css('height', $(document).height());
- }
-
- $.fancybox.center(true);
- };
-
- $.fancybox.center = function() {
- var view, align;
-
- if (busy) {
- return;
- }
-
- align = arguments[0] === true ? 1 : 0;
- view = _get_viewport();
-
- if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
- return;
- }
-
- wrap
- .stop()
- .animate({
- 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
- 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
- }, typeof arguments[0] == 'number' ? arguments[0] : 200);
- };
-
- $.fancybox.init = function() {
- if ($("#fancybox-wrap").length) {
- return;
- }
-
- $('body').append(
- tmp = $('<div id="fancybox-tmp"></div>'),
- loading = $('<div id="fancybox-loading"><div></div></div>'),
- overlay = $('<div id="fancybox-overlay"></div>'),
- wrap = $('<div id="fancybox-wrap"></div>')
- );
-
- outer = $('<div id="fancybox-outer"></div>')
- .append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
- .appendTo( wrap );
-
- outer.append(
- content = $('<div id="fancybox-content"></div>'),
- close = $('<a id="fancybox-close"></a>'),
- title = $('<div id="fancybox-title"></div>'),
-
- nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
- nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
- );
-
- close.click($.fancybox.close);
- loading.click($.fancybox.cancel);
-
- nav_left.click(function(e) {
- e.preventDefault();
- $.fancybox.prev();
- });
-
- nav_right.click(function(e) {
- e.preventDefault();
- $.fancybox.next();
- });
-
- if ($.fn.mousewheel) {
- wrap.bind('mousewheel.fb', function(e, delta) {
- if (busy) {
- e.preventDefault();
-
- } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
- e.preventDefault();
- $.fancybox[ delta > 0 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!$.support.opacity) {
- wrap.addClass('fancybox-ie');
- }
-
- if (isIE6) {
- loading.addClass('fancybox-ie6');
- wrap.addClass('fancybox-ie6');
-
- $('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
- }
- };
-
- $.fn.fancybox.defaults = {
- padding : 10,
- margin : 40,
- opacity : false,
- modal : false,
- cyclic : false,
- scrolling : 'auto', // 'auto', 'yes' or 'no'
-
- width : 560,
- height : 340,
-
- autoScale : true,
- autoDimensions : true,
- centerOnScroll : false,
-
- ajax : {},
- swf : { wmode: 'transparent' },
-
- hideOnOverlayClick : true,
- hideOnContentClick : false,
-
- overlayShow : true,
- overlayOpacity : 0.7,
- overlayColor : '#777',
-
- titleShow : true,
- titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
- titleFormat : null,
- titleFromAlt : false,
-
- transitionIn : 'fade', // 'elastic', 'fade' or 'none'
- transitionOut : 'fade', // 'elastic', 'fade' or 'none'
-
- speedIn : 300,
- speedOut : 300,
-
- changeSpeed : 300,
- changeFade : 'fast',
-
- easingIn : 'swing',
- easingOut : 'swing',
-
- showCloseButton : true,
- showNavArrows : true,
- enableEscapeButton : true,
- enableKeyboardNav : true,
-
- onStart : function(){},
- onCancel : function(){},
- onComplete : function(){},
- onCleanup : function(){},
- onClosed : function(){},
- onError : function(){}
- };
-
- $(document).ready(function() {
- $.fancybox.init();
- });
-
-})(jQuery); \ No newline at end of file
diff --git a/library/fancybox/jquery.fancybox-1.3.4.pack.js b/library/fancybox/jquery.fancybox-1.3.4.pack.js
deleted file mode 100644
index 1373ed083..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.pack.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
-F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
-c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
-false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
-function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+
-'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
-"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+
-";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
-opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
-d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
-y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
-i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
-f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
-37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
-s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j);
-f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
-j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
-"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
-10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
-b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
-0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
-1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
-true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
-b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
-d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f);
-D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
-b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}};
-b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
-easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); \ No newline at end of file
diff --git a/library/fancybox/jquery.mousewheel-3.0.4.pack.js b/library/fancybox/jquery.mousewheel-3.0.4.pack.js
deleted file mode 100644
index cb66588e2..000000000
--- a/library/fancybox/jquery.mousewheel-3.0.4.pack.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
-* Licensed under the MIT License (LICENSE.txt).
-*
-* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
-* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
-* Thanks to: Seamus Leahy for adding deltaX and deltaY
-*
-* Version: 3.0.4
-*
-* Requires: 1.2.2+
-*/
-
-(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
-f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file
diff --git a/library/intl/.gitignore b/library/intl/.gitignore
new file mode 100644
index 000000000..2659611c8
--- /dev/null
+++ b/library/intl/.gitignore
@@ -0,0 +1 @@
+composer.lock
diff --git a/library/intl/.travis.yml b/library/intl/.travis.yml
new file mode 100644
index 000000000..20bf1805d
--- /dev/null
+++ b/library/intl/.travis.yml
@@ -0,0 +1,14 @@
+language: php
+
+php:
+ - 5.4
+ - 5.5
+ - 5.6
+ - hhvm
+
+install:
+ - composer self-update
+ - composer install
+
+script:
+ - ./vendor/bin/phpunit -c ./phpunit.xml --coverage-text --strict
diff --git a/library/intl/LICENSE b/library/intl/LICENSE
new file mode 100644
index 000000000..e4ef21420
--- /dev/null
+++ b/library/intl/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Commerce Guys
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/library/intl/README.md b/library/intl/README.md
new file mode 100644
index 000000000..8de2de4d9
--- /dev/null
+++ b/library/intl/README.md
@@ -0,0 +1,163 @@
+intl
+=====
+
+[![Build Status](https://travis-ci.org/commerceguys/intl.svg?branch=master)](https://travis-ci.org/commerceguys/intl)
+
+A PHP 5.4+ internationalization library, powered by CLDR data.
+
+Features:
+- NumberFormatter, inspired by [intl](http://php.net/manual/en/class.numberformatter.php).
+- Currencies
+- Countries
+- Languages
+
+Coming soon: date formatting.
+
+Why not use the intl extension?
+-------------------------------
+The intl extension isn't present by default on PHP installs, requiring
+it can hurt software adoption.
+Behind the scenes the extension relies on libicu which includes the CLDR dataset,
+but depending on the OS/distribution used, could be several major CLDR releases behind.
+
+Since the CLDR dataset is freely available in JSON form, it is possible to
+reimplement the intl functionality in pure PHP code while ensuring that the
+dataset is always fresh.
+
+Having access to the CLDR dataset also makes it possible to offer additional APIs,
+such as listing all currencies.
+
+More backstory can be found in [this blog post](https://drupalcommerce.org/blog/15916/commerce-2x-stories-internationalization).
+
+Formatting numbers
+------------------
+Formats numbers (decimals, percents, currency amounts) using locale-specific rules.
+
+This ensures that the decimal and grouping separators, the position of the currency
+symbol, as well as the actual symbol used match what the user is expecting.
+
+The amounts passed for formatting should already be rounded, because the
+formatter doesn't do any rounding of its own.
+
+```php
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+use CommerceGuys\Intl\NumberFormat\NumberFormatRepository;
+use CommerceGuys\Intl\Formatter\NumberFormatter;
+
+$currencyRepository = new CurrencyRepository;
+$numberFormatRepository = new NumberFormatRepository;
+
+$currency = $currencyRepository->get('USD');
+$numberFormat = $numberFormatRepository->get('en');
+
+$decimalFormatter = new NumberFormatter($numberFormat);
+echo $decimalFormatter->format('1234.99'); // 123,456.99
+
+$percentFormatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+echo $percentFormatter->format('0.75'); // 75%
+
+$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+echo $currencyFormatter->formatCurrency('2.99', $currency); // $2.99
+
+// The accounting pattern shows negative numbers differently and is used
+// primarily for amounts shown on invoices.
+$invoiceCurrencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+echo $invoiceCurrencyFormatter->formatCurrency('-2.99', $currency); // (2.99$)
+
+// Arabic, Arabic extended, Bengali, Devanagari digits are supported as expected.
+$currency = $currencyRepository->get('USD', 'ar');
+$numberFormat = $numberFormatRepository->get('ar');
+$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+echo $currencyFormatter->formatCurrency('1230.99', $currency); // US$ ١٬٢٣٠٫٩٩
+
+// Parse formatted values into numeric values.
+echo $currencyFormatter->parseCurrency('US$ ١٬٢٣٠٫٩٩', $currency); // 1230.99
+```
+
+Currencies
+----------
+```php
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+
+// Reads the currency definitions from resources/currency.
+$currencyRepository = new CurrencyRepository;
+
+// Get the USD currency using the default locale (en).
+$currency = $currencyRepository->get('USD');
+echo $currency->getCurrencyCode(); // USD
+echo $currency->getNumericCode(); // 840
+echo $currency->getFractionDigits(); // 2
+echo $currency->getName(); // US Dollar
+echo $currency->getSymbol(); // $
+echo $currency->getLocale(); // en
+
+// Get the USD currency using the fr-FR locale.
+$currency = $currencyRepository->get('USD', 'fr-FR');
+echo $currency->getName(); // dollar des États-Unis
+echo $currency->getSymbol(); // $US
+echo $currency->getLocale(); // fr-FR
+
+$allCurrencies = $currencyRepository->getAll();
+```
+
+Countries
+---------
+```php
+use CommerceGuys\Intl\Country\CountryRepository;
+
+// Reads the country definitions from resources/country.
+$countryRepository = new CountryRepository;
+
+// Get the US country using the default locale (en).
+$country = $countryRepository->get('US');
+echo $country->getCountryCode(); // US
+echo $country->getTelephoneCode(); // 1
+echo $country->getName(); // United States
+
+// Get the US country using the fr-FR locale.
+$country = $countryRepository->get('US', 'fr-FR');
+echo $country->getName(); // États-Unis
+
+$allCountries = $countryRepository->getAll();
+```
+
+Languages
+---------
+```php
+use CommerceGuys\Intl\Language\LanguageRepository;
+
+// Reads the language definitions from resources/language.
+$languageRepository = new LanguageRepository;
+
+// Get the german language using the default locale (en).
+$language = $languageRepository->get('de');
+echo $language->getLanguageCode(); // de
+echo $language->getName(); // German
+
+// Get the german language using the fr-FR locale.
+$language = $languageRepository->get('de', 'fr-FR');
+echo $language->getName(); // allemand
+
+$allLanguages = $languageRepository->getAll();
+```
+
+Implementing the library
+------------------------
+While the library can be used as-is, most applications will want to store the
+relevant definitions (currencies, countries, etc) in the database.
+This allows for better performance while giving users the ability to modify and
+expand the data.
+
+Taking currencies as an example, a merchant frequently wants to be able to:
+
+- Define custom currencies.
+- Enable/disable existing currencies
+- Modify an existing currency (changing the default number of fraction digits, for example).
+
+This would be accomplished by using the CurrencyRepository to get all default currencies and
+insert them into the database. The doctrine entity (or any similar data object) would then implement
+the CurrencyInterface so that the NumberFormatter can continue to work.
+
+Related projects
+----------------
+[commerceguys/pricing](http://github.com/commerceguys/pricing) provides a Price object.
diff --git a/library/intl/phpunit.xml b/library/intl/phpunit.xml
new file mode 100644
index 000000000..82bf2b096
--- /dev/null
+++ b/library/intl/phpunit.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ stopOnFailure="false"
+ bootstrap="vendor/autoload.php"
+>
+ <testsuites>
+ <testsuite name="CommerceGuys Intl Test Suite">
+ <directory>./tests/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory suffix=".php">./src/</directory>
+ </whitelist>
+ </filter>
+</phpunit>
diff --git a/library/intl/resources/country/af.json b/library/intl/resources/country/af.json
new file mode 100644
index 000000000..a12a35891
--- /dev/null
+++ b/library/intl/resources/country/af.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ålandeilande"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerië"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagde-eilande"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensioneiland"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesj"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhoetan"
+ },
+ "BO": {
+ "name": "Bolivië"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilië"
+ },
+ "IO": {
+ "name": "Britse Indiese Oseaangebied"
+ },
+ "VG": {
+ "name": "Britse Maagde-eilande"
+ },
+ "BN": {
+ "name": "Broenei"
+ },
+ "BG": {
+ "name": "Bulgarye"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CC": {
+ "name": "Cocos- (Keeling) eilande"
+ },
+ "CO": {
+ "name": "Colombië"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CK": {
+ "name": "Cookeilande"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CD": {
+ "name": "Demokratiese Republiek van die Kongo"
+ },
+ "DK": {
+ "name": "Denemarke"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djiboeti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipte"
+ },
+ "IM": {
+ "name": "Eiland Man"
+ },
+ "GQ": {
+ "name": "Ekwatoriaal-Guinee"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FK": {
+ "name": "Falklandeilande"
+ },
+ "FO": {
+ "name": "Faroëreilande"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filippyne"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankryk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polinesië"
+ },
+ "TF": {
+ "name": "Franse Suidelike Gebiede"
+ },
+ "GA": {
+ "name": "Gaboen"
+ },
+ "GM": {
+ "name": "Gambië"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekeland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarye"
+ },
+ "HK": {
+ "name": "Hongkong SAS Sjina"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IN": {
+ "name": "Indië"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkus"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "KY": {
+ "name": "Kaaimanseilande"
+ },
+ "CV": {
+ "name": "Kaap Verde"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariese Eilande"
+ },
+ "BQ": {
+ "name": "Karibiese Nederland"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CX": {
+ "name": "Kerseiland"
+ },
+ "KG": {
+ "name": "Kirgisië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroasië"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberië"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litaue"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAS Sjina"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maledive"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilande"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mianmar (Birma)"
+ },
+ "FM": {
+ "name": "Mikronesië"
+ },
+ "MD": {
+ "name": "Moldowa"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambiek"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieu-Kaledonië"
+ },
+ "NZ": {
+ "name": "Nieu-Seeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerië"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelike Mariana-eilande"
+ },
+ "NO": {
+ "name": "Noorweë"
+ },
+ "NF": {
+ "name": "Norfolkeiland"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oesbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oos-Timor"
+ },
+ "AT": {
+ "name": "Oostenryk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestynse gebiede"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieu-Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilande"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "CG": {
+ "name": "Republiek van die Kongo"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "CF": {
+ "name": "Sentraal-Afrikaanse Republiek"
+ },
+ "RS": {
+ "name": "Serwië"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapoer"
+ },
+ "BL": {
+ "name": "Sint Barthélemy"
+ },
+ "SH": {
+ "name": "Sint Helena"
+ },
+ "KN": {
+ "name": "Sint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Sint Lucia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "MF": {
+ "name": "Sint Martin"
+ },
+ "PM": {
+ "name": "Sint Pierre en Miquelon"
+ },
+ "VC": {
+ "name": "Sint Vincent en die Grenadine"
+ },
+ "CY": {
+ "name": "Siprus"
+ },
+ "SY": {
+ "name": "Sirië"
+ },
+ "CN": {
+ "name": "Sjina"
+ },
+ "SK": {
+ "name": "Slowakye"
+ },
+ "SI": {
+ "name": "Slowenië"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SB": {
+ "name": "Solomoneilande"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "ZA": {
+ "name": "Suid-Afrika"
+ },
+ "GS": {
+ "name": "Suid-Georgië en die Suidelike Sandwicheilande"
+ },
+ "KR": {
+ "name": "Suid-Korea"
+ },
+ "SS": {
+ "name": "Suid-Soedan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard en Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Swede"
+ },
+ "CH": {
+ "name": "Switserland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzanië"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeggiese Republiek"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "TN": {
+ "name": "Tunisië"
+ },
+ "TM": {
+ "name": "Turkmenië"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilande"
+ },
+ "TR": {
+ "name": "Turkye"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Verenigde Arabiese Emirate"
+ },
+ "GB": {
+ "name": "Verenigde Koninkryk"
+ },
+ "US": {
+ "name": "Verenigde State van Amerika"
+ },
+ "VN": {
+ "name": "Viëtnam"
+ },
+ "UM": {
+ "name": "VS klein omliggende eilande"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Wes-Sahara"
+ },
+ "IS": {
+ "name": "Ysland"
+ },
+ "ZM": {
+ "name": "Zambië"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/agq.json b/library/intl/resources/country/agq.json
new file mode 100644
index 000000000..b95e32c0b
--- /dev/null
+++ b/library/intl/resources/country/agq.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Àabɛnìa"
+ },
+ "DZ": {
+ "name": "Àadzɛlìa"
+ },
+ "AR": {
+ "name": "Àdzɛ̀ntinà"
+ },
+ "PS": {
+ "name": "Adzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kò"
+ },
+ "IE": {
+ "name": "Aelɨ̀lân"
+ },
+ "IS": {
+ "name": "Aesɨ̀lân"
+ },
+ "AF": {
+ "name": "Àfɨ̀ganìsɨ̀tân"
+ },
+ "ZA": {
+ "name": "Afɨlekà ghɨ Emàm ghò"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AW": {
+ "name": "Àlubà"
+ },
+ "AS": {
+ "name": "Àmɛlekan Samwà"
+ },
+ "AM": {
+ "name": "Àmɛnyìa"
+ },
+ "AD": {
+ "name": "Àndolà"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Àntigwà à Bàbudà"
+ },
+ "AO": {
+ "name": "Àŋgolà"
+ },
+ "AI": {
+ "name": "Àŋgwilà"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Àzɨbɛ̀dzân"
+ },
+ "BB": {
+ "name": "Bàbadòs"
+ },
+ "BS": {
+ "name": "Bàhamàs"
+ },
+ "BH": {
+ "name": "Bàlaen"
+ },
+ "BD": {
+ "name": "Baŋgɨ̀làdɛ̂"
+ },
+ "BE": {
+ "name": "Bɛɛdzwùm"
+ },
+ "BY": {
+ "name": "Bɛlàlûs"
+ },
+ "BZ": {
+ "name": "Bɛ̀lezɨ̀"
+ },
+ "BM": {
+ "name": "Bɛ̀mudà"
+ },
+ "BJ": {
+ "name": "Bɛ̀nɨ̂ŋ"
+ },
+ "BR": {
+ "name": "Bɨ̀làzîi"
+ },
+ "BN": {
+ "name": "Bɨ̀lunè"
+ },
+ "BO": {
+ "name": "Bòlevà"
+ },
+ "BA": {
+ "name": "Bosɨnyìa à Hɛ̀zɛ̀gòvinà"
+ },
+ "BW": {
+ "name": "Bòtɨ̀swǎnà"
+ },
+ "BF": {
+ "name": "Bùkinà Fasò"
+ },
+ "BI": {
+ "name": "Bùlundì"
+ },
+ "BG": {
+ "name": "Bùugɛlìa"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Châ"
+ },
+ "CN": {
+ "name": "Chaenà"
+ },
+ "CZ": {
+ "name": "Chɛ̂ Lèkpubèlè"
+ },
+ "CL": {
+ "name": "Chilè"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "FK": {
+ "name": "Chwɨlà fɨ Fakɨlàn"
+ },
+ "MH": {
+ "name": "Chwɨlà fɨ Mashà"
+ },
+ "NF": {
+ "name": "Chwɨlà fɨ Nufòʔ"
+ },
+ "SB": {
+ "name": "Chwɨlà fɨ Solomwɨ̀n"
+ },
+ "MP": {
+ "name": "Chwɨlà m̀ Màlǐanà mɨ̀ Ekùw mò"
+ },
+ "VG": {
+ "name": "Chwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mò"
+ },
+ "TC": {
+ "name": "Chwɨla n Tɨtê à Kaekùs"
+ },
+ "KY": {
+ "name": "Chwɨlà ŋ̀ Kaemàn"
+ },
+ "CV": {
+ "name": "Chwɨla ŋ̀ Kɛ̀b Vɛ̂ɛ"
+ },
+ "CK": {
+ "name": "Chwɨla ŋ̀ Kûʔ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CD": {
+ "name": "Dɛ̀mùkàlatì Lèkpubèlè è Kuŋgù"
+ },
+ "DK": {
+ "name": "Dɛnɨmà"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "IO": {
+ "name": "Dɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kò"
+ },
+ "DM": {
+ "name": "Dòmenekà"
+ },
+ "DO": {
+ "name": "Dòmenekà Lèkpubèlè"
+ },
+ "JP": {
+ "name": "Dzàkpân"
+ },
+ "DE": {
+ "name": "Dzamanè"
+ },
+ "JM": {
+ "name": "Dzàmɛkà"
+ },
+ "GI": {
+ "name": "Dzibɨ̀latà"
+ },
+ "DJ": {
+ "name": "Dzìbuwtì"
+ },
+ "JO": {
+ "name": "Dzodàn"
+ },
+ "GE": {
+ "name": "Dzɔɔdzìa"
+ },
+ "EG": {
+ "name": "Edzì"
+ },
+ "EC": {
+ "name": "Ekwadò"
+ },
+ "GQ": {
+ "name": "Èkwɛ̀tolia Ginè"
+ },
+ "IQ": {
+ "name": "Èlâkɨ̀"
+ },
+ "IR": {
+ "name": "Èlân"
+ },
+ "ER": {
+ "name": "Èletɨ̀là"
+ },
+ "IN": {
+ "name": "Endìa"
+ },
+ "ID": {
+ "name": "Èndòneshìa"
+ },
+ "TL": {
+ "name": "Ês Taemò"
+ },
+ "SV": {
+ "name": "Esàvadò"
+ },
+ "EE": {
+ "name": "Èsɨ̀tonyìa"
+ },
+ "IT": {
+ "name": "Etalè"
+ },
+ "ET": {
+ "name": "Ètyǒpìa"
+ },
+ "IL": {
+ "name": "Ezɨ̀lɛ̂"
+ },
+ "FR": {
+ "name": "Fàlâŋnsì"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Felèkpî"
+ },
+ "FJ": {
+ "name": "Fidzi"
+ },
+ "FI": {
+ "name": "Fɨnlàn"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gaanà"
+ },
+ "GA": {
+ "name": "Gàbûn"
+ },
+ "GM": {
+ "name": "Gambìa"
+ },
+ "GF": {
+ "name": "Gàyanà è Fàlâŋnsì"
+ },
+ "GN": {
+ "name": "Ginè"
+ },
+ "GW": {
+ "name": "Ginè Bìsawù"
+ },
+ "NG": {
+ "name": "Gɨ̀anyɨ"
+ },
+ "GL": {
+ "name": "Gɨ̀lenlân"
+ },
+ "GR": {
+ "name": "Gɨ̀lês"
+ },
+ "GD": {
+ "name": "Gɨ̀lɛnadà"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gùyanà"
+ },
+ "GP": {
+ "name": "Gwadalukpɛ̀"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwàtɨ̀malà"
+ },
+ "HT": {
+ "name": "Hǎetì"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndulàs"
+ },
+ "HU": {
+ "name": "Hɔŋgàlè"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kàlèdonyìa È fūghū"
+ },
+ "CM": {
+ "name": "Kàmàlûŋ"
+ },
+ "KH": {
+ "name": "Kàmbodìa"
+ },
+ "CA": {
+ "name": "Kanadà"
+ },
+ "QA": {
+ "name": "Katà"
+ },
+ "KZ": {
+ "name": "Kàzasɨ̀tân"
+ },
+ "KI": {
+ "name": "Kèlèbati"
+ },
+ "KG": {
+ "name": "Kìdzisɨ̀tân"
+ },
+ "KE": {
+ "name": "Kɨnyà"
+ },
+ "CO": {
+ "name": "Kòlombìa"
+ },
+ "KM": {
+ "name": "Komolòs"
+ },
+ "CR": {
+ "name": "Kòsɨ̀tà Lekà"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kòwɛshìa"
+ },
+ "PK": {
+ "name": "Kpakìsɨ̀tân"
+ },
+ "PG": {
+ "name": "Kpakpua Ginè È fūghū"
+ },
+ "PY": {
+ "name": "Kpalàgwɛ̂"
+ },
+ "PW": {
+ "name": "Kpàlawù"
+ },
+ "PA": {
+ "name": "Kpanàma"
+ },
+ "PE": {
+ "name": "Kpɛlû"
+ },
+ "PN": {
+ "name": "Kpitɨ̀kalè"
+ },
+ "PF": {
+ "name": "Kpoleneshìa è Fàlâŋnsì"
+ },
+ "PR": {
+ "name": "Kpǒto Leko"
+ },
+ "PL": {
+ "name": "Kpulàn"
+ },
+ "PT": {
+ "name": "Kputuwgà"
+ },
+ "CI": {
+ "name": "Ku Dɨ̀vûa"
+ },
+ "CG": {
+ "name": "Kuŋgù"
+ },
+ "KP": {
+ "name": "Kùulîa, Ekùw"
+ },
+ "KR": {
+ "name": "Kùulîa, Emàm"
+ },
+ "CU": {
+ "name": "Kuuwbà"
+ },
+ "KW": {
+ "name": "Kùwɛ̂"
+ },
+ "LR": {
+ "name": "Làebɛlìa"
+ },
+ "LV": {
+ "name": "Làtɨva"
+ },
+ "LA": {
+ "name": "Làwos"
+ },
+ "LY": {
+ "name": "Lebìa"
+ },
+ "LI": {
+ "name": "Letɨnshɨ̀n"
+ },
+ "LT": {
+ "name": "Lètwǎnyìa"
+ },
+ "RE": {
+ "name": "Lèyunyɔ̀ŋ"
+ },
+ "LB": {
+ "name": "Lɛbanè"
+ },
+ "LS": {
+ "name": "Lɛ̀sotù"
+ },
+ "RU": {
+ "name": "Loshìa"
+ },
+ "RO": {
+ "name": "Lùmanyìa"
+ },
+ "RW": {
+ "name": "Lùwandà"
+ },
+ "LU": {
+ "name": "Luzɨmbùʔ"
+ },
+ "MT": {
+ "name": "Maatà"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Màdàgasɨkà"
+ },
+ "MV": {
+ "name": "Màdivè"
+ },
+ "FM": {
+ "name": "Maekòlòneshìa"
+ },
+ "MW": {
+ "name": "Màlawì"
+ },
+ "ML": {
+ "name": "Malè"
+ },
+ "MY": {
+ "name": "Màlɛshìa"
+ },
+ "MQ": {
+ "name": "Màtìnekì"
+ },
+ "YT": {
+ "name": "Màyotì"
+ },
+ "BT": {
+ "name": "Mbutàn"
+ },
+ "MX": {
+ "name": "Mɛkɨzikù"
+ },
+ "MM": {
+ "name": "Mǐanmà"
+ },
+ "MK": {
+ "name": "Mɨ̀sɨ̀donyìa"
+ },
+ "MA": {
+ "name": "Mòlokò"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Mòodovà"
+ },
+ "MU": {
+ "name": "Mùleshwɨ̀s"
+ },
+ "MR": {
+ "name": "Mùlètanyìa"
+ },
+ "MC": {
+ "name": "Mùnaku"
+ },
+ "MN": {
+ "name": "Mùŋgolìa"
+ },
+ "MS": {
+ "name": "Mùŋtselà"
+ },
+ "MZ": {
+ "name": "Mùzàmbî"
+ },
+ "NE": {
+ "name": "Naedzà"
+ },
+ "NA": {
+ "name": "Nàmibìa"
+ },
+ "NR": {
+ "name": "Nàwulù"
+ },
+ "NL": {
+ "name": "Nedàlân"
+ },
+ "NP": {
+ "name": "Nɛkpâa"
+ },
+ "NI": {
+ "name": "Nikàlagwà"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "NO": {
+ "name": "Noowɛ̂ɛ"
+ },
+ "CY": {
+ "name": "Saekpùlù"
+ },
+ "WS": {
+ "name": "Sàmowà"
+ },
+ "SM": {
+ "name": "Sàn Màlenù"
+ },
+ "ST": {
+ "name": "Sawo Tɔ̀me à Kpèlènsikpɛ̀"
+ },
+ "SA": {
+ "name": "Sawudi Alabi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sɛchɛ̀lɛ̀s"
+ },
+ "SH": {
+ "name": "Sɛ̀n Èlenà"
+ },
+ "KN": {
+ "name": "Sɛ̀n Kî à Nevì"
+ },
+ "PM": {
+ "name": "Sɛ̀n Kpiyɛ̀ à Mikelɔŋ"
+ },
+ "LC": {
+ "name": "Sɛ̀n Lushìa"
+ },
+ "VC": {
+ "name": "Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tē"
+ },
+ "SN": {
+ "name": "Sɛ̀nɛ̀gâa"
+ },
+ "CF": {
+ "name": "Sɛnta Afɨlekan Lèkpobèlè"
+ },
+ "SZ": {
+ "name": "Shǔazìlân"
+ },
+ "SY": {
+ "name": "Silîa"
+ },
+ "SL": {
+ "name": "Silìa lûŋ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Siŋgàkpôo"
+ },
+ "ES": {
+ "name": "Sɨ̀kpɛ̂n"
+ },
+ "LK": {
+ "name": "Sɨ̀le Laŋkà"
+ },
+ "SK": {
+ "name": "Sɨ̀lòvɨkɨ̀a"
+ },
+ "SI": {
+ "name": "Sɨ̀lòvɨnyìa"
+ },
+ "SO": {
+ "name": "Sòmalìa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sùdân"
+ },
+ "SE": {
+ "name": "Suedɨ̀n"
+ },
+ "CH": {
+ "name": "Suezàlân"
+ },
+ "SR": {
+ "name": "Sulènamè"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Tàanzanyìa"
+ },
+ "TJ": {
+ "name": "Tàdzikìsɨ̀tân"
+ },
+ "TH": {
+ "name": "Taelàn"
+ },
+ "TW": {
+ "name": "Taewàn"
+ },
+ "TR": {
+ "name": "Teekì"
+ },
+ "TM": {
+ "name": "Tekɨmènèsɨ̀tân"
+ },
+ "TT": {
+ "name": "Tèlenedà à Tòbagù"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Tugù"
+ },
+ "TN": {
+ "name": "Tùneshìa"
+ },
+ "TO": {
+ "name": "Tuŋgà"
+ },
+ "TK": {
+ "name": "Tuwkelawù"
+ },
+ "TV": {
+ "name": "Tuwvalùw"
+ },
+ "VI": {
+ "name": "U. S. Chwɨlà fɨ Mbuʔmbu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "OM": {
+ "name": "Umàn"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "AU": {
+ "name": "Ùsɨ̀tɛ̀lɛlìa"
+ },
+ "AT": {
+ "name": "Usɨtɨ̀là"
+ },
+ "VU": {
+ "name": "Vànǔatùw"
+ },
+ "VA": {
+ "name": "Vatikàn Sɨ̀tɛ̂"
+ },
+ "VE": {
+ "name": "Vɛ̀nɛ̀zǔɛɛlà"
+ },
+ "VN": {
+ "name": "Vìyɛnàm"
+ },
+ "WF": {
+ "name": "Wales à Fùwtuwnà"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yɛmɛ̀n"
+ },
+ "UG": {
+ "name": "Yùgandà"
+ },
+ "UA": {
+ "name": "Yùkɛ̀lɛ̂"
+ },
+ "UY": {
+ "name": "Yulùgwɛ̂"
+ },
+ "AE": {
+ "name": "Yùnaetɛ Alab ɛmelɛ̀"
+ },
+ "GB": {
+ "name": "Yùnaetɛ Kiŋdɔ̀m"
+ },
+ "UZ": {
+ "name": "Yùzɨ̀bɛkìsɨ̀tân"
+ },
+ "ZM": {
+ "name": "Zambìa"
+ },
+ "NZ": {
+ "name": "Zìlân È fūghū"
+ },
+ "ZW": {
+ "name": "Zìmbagbɛ̀"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ak.json b/library/intl/resources/country/ak.json
new file mode 100644
index 000000000..92ccb39c3
--- /dev/null
+++ b/library/intl/resources/country/ak.json
@@ -0,0 +1,761 @@
+{
+ "AM": {
+ "name": "Aamenia"
+ },
+ "IE": {
+ "name": "Aereland"
+ },
+ "IS": {
+ "name": "Aesland"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika Anaafo"
+ },
+ "CF": {
+ "name": "Afrika Finimfin Man"
+ },
+ "AR": {
+ "name": "Agyɛntina"
+ },
+ "GB": {
+ "name": "Ahendiman Nkabom"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albenia"
+ },
+ "US": {
+ "name": "Amɛrika"
+ },
+ "AS": {
+ "name": "Amɛrika Samoa"
+ },
+ "VI": {
+ "name": "Amɛrika Virgin Islands"
+ },
+ "KR": {
+ "name": "Anaafo Koria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua ne Baabuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azebaegyan"
+ },
+ "BB": {
+ "name": "Baabados"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladɛhye"
+ },
+ "BH": {
+ "name": "Baren"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BY": {
+ "name": "Bɛlarus"
+ },
+ "BE": {
+ "name": "Bɛlgyium"
+ },
+ "BM": {
+ "name": "Bɛmuda"
+ },
+ "BJ": {
+ "name": "Bɛnin"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ne Hɛzegovina"
+ },
+ "BF": {
+ "name": "Bɔkina Faso"
+ },
+ "BG": {
+ "name": "Bɔlgeria"
+ },
+ "BW": {
+ "name": "Bɔtswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britainfo Virgin Islands"
+ },
+ "IO": {
+ "name": "Britenfo Hɔn Man Wɔ India Po No Mu"
+ },
+ "BN": {
+ "name": "Brunae"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dɛnmak"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dɔmeneka"
+ },
+ "DO": {
+ "name": "Dɔmeneka Kurokɛse"
+ },
+ "KP": {
+ "name": "Etifi Koria"
+ },
+ "SV": {
+ "name": "Ɛl Salvadɔ"
+ },
+ "ER": {
+ "name": "Ɛritrea"
+ },
+ "EE": {
+ "name": "Ɛstonia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FK": {
+ "name": "Fɔlkman Aeland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GF": {
+ "name": "Frɛnkye Gayana"
+ },
+ "PF": {
+ "name": "Frɛnkye Pɔlenehyia"
+ },
+ "FR": {
+ "name": "Frɛnkyeman"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GA": {
+ "name": "Gabɔn"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bisaw"
+ },
+ "GQ": {
+ "name": "Gini Ikuweta"
+ },
+ "GR": {
+ "name": "Greekman"
+ },
+ "GL": {
+ "name": "Greenman"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Guwadelup"
+ },
+ "GT": {
+ "name": "Guwatemala"
+ },
+ "DE": {
+ "name": "Gyaaman"
+ },
+ "JM": {
+ "name": "Gyameka"
+ },
+ "JP": {
+ "name": "Gyapan"
+ },
+ "GI": {
+ "name": "Gyebralta"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "JO": {
+ "name": "Gyɔdan"
+ },
+ "GE": {
+ "name": "Gyɔgyea"
+ },
+ "HU": {
+ "name": "Hangari"
+ },
+ "HT": {
+ "name": "Heiti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔnduras"
+ },
+ "EC": {
+ "name": "Ikuwadɔ"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indɔnehyia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "ET": {
+ "name": "Ithiopia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kaledonia Foforo"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamɛrun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KY": {
+ "name": "Kemanfo Islands"
+ },
+ "CV": {
+ "name": "Kepvɛdfo Islands"
+ },
+ "KG": {
+ "name": "Kɛɛgestan"
+ },
+ "KE": {
+ "name": "Kɛnya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo (Zair)"
+ },
+ "CK": {
+ "name": "Kook Nsupɔw"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KM": {
+ "name": "Kɔmɔrɔs"
+ },
+ "CR": {
+ "name": "Kɔsta Rika"
+ },
+ "HR": {
+ "name": "Krowehyia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwete"
+ },
+ "TD": {
+ "name": "Kyad"
+ },
+ "CN": {
+ "name": "Kyaena"
+ },
+ "CZ": {
+ "name": "Kyɛk Kurokɛse"
+ },
+ "CL": {
+ "name": "Kyili"
+ },
+ "CI": {
+ "name": "La Côte d’Ivoire"
+ },
+ "LR": {
+ "name": "Laeberia"
+ },
+ "LU": {
+ "name": "Laksembɛg"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LI": {
+ "name": "Lektenstaen"
+ },
+ "LB": {
+ "name": "Lɛbanɔn"
+ },
+ "LS": {
+ "name": "Lɛsutu"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LT": {
+ "name": "Lituwenia"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "FM": {
+ "name": "Maekronehyia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MY": {
+ "name": "Malehyia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MS": {
+ "name": "Mantserat"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MQ": {
+ "name": "Matinik"
+ },
+ "YT": {
+ "name": "Mayɔte"
+ },
+ "MX": {
+ "name": "Mɛksiko"
+ },
+ "MM": {
+ "name": "Miyanma"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MD": {
+ "name": "Mɔldova"
+ },
+ "MT": {
+ "name": "Mɔlta"
+ },
+ "MC": {
+ "name": "Mɔnako"
+ },
+ "MN": {
+ "name": "Mɔngolia"
+ },
+ "MU": {
+ "name": "Mɔrehyeɔs"
+ },
+ "MR": {
+ "name": "Mɔretenia"
+ },
+ "NG": {
+ "name": "Naegyeria"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naworu"
+ },
+ "NI": {
+ "name": "Nekaraguwa"
+ },
+ "NL": {
+ "name": "Nɛdɛland"
+ },
+ "NP": {
+ "name": "Nɛpɔl"
+ },
+ "NE": {
+ "name": "Nigyɛ"
+ },
+ "EG": {
+ "name": "Nisrim"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NF": {
+ "name": "Nɔfolk Aeland"
+ },
+ "NO": {
+ "name": "Nɔɔwe"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "DZ": {
+ "name": "Ɔlgyeria"
+ },
+ "AU": {
+ "name": "Ɔstrelia"
+ },
+ "AT": {
+ "name": "Ɔstria"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestaen West Bank ne Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guinea Foforo"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Pɔtugal"
+ },
+ "PR": {
+ "name": "Puɛto Riko"
+ },
+ "RE": {
+ "name": "Reyuniɔn"
+ },
+ "RO": {
+ "name": "Romenia"
+ },
+ "RU": {
+ "name": "Rɔhyea"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saeprɔs"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ne Nɛves"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ne Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ne Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyhyɛl"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapɔ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovinia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Swetzaland"
+ },
+ "TH": {
+ "name": "Taeland"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TR": {
+ "name": "Tɛɛki"
+ },
+ "TM": {
+ "name": "Tɛkmɛnistan"
+ },
+ "TL": {
+ "name": "Timɔ Boka"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ne Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunihyia"
+ },
+ "TC": {
+ "name": "Turks ne Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukren"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "UZ": {
+ "name": "Uzbɛkistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican Man"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viɛtnam"
+ },
+ "WF": {
+ "name": "Wallis ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yɛmen"
+ },
+ "UY": {
+ "name": "Yurugwae"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zembabwe"
+ },
+ "NZ": {
+ "name": "Ziland Foforo"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/am.json b/library/intl/resources/country/am.json
new file mode 100644
index 000000000..ea86c156d
--- /dev/null
+++ b/library/intl/resources/country/am.json
@@ -0,0 +1,761 @@
+{
+ "HU": {
+ "name": "ሀንጋሪ"
+ },
+ "HT": {
+ "name": "ሀይቲ"
+ },
+ "IN": {
+ "name": "ህንድ"
+ },
+ "HN": {
+ "name": "ሆንዱራስ"
+ },
+ "HK": {
+ "name": "ሆንግ ኮንግ SAR ቻይና"
+ },
+ "LU": {
+ "name": "ሉክሰምበርግ"
+ },
+ "LY": {
+ "name": "ሊቢያ"
+ },
+ "LB": {
+ "name": "ሊባኖስ"
+ },
+ "LT": {
+ "name": "ሊቱዌኒያ"
+ },
+ "LI": {
+ "name": "ሊችተንስታይን"
+ },
+ "LV": {
+ "name": "ላትቪያ"
+ },
+ "LA": {
+ "name": "ላኦስ"
+ },
+ "LR": {
+ "name": "ላይቤሪያ"
+ },
+ "LS": {
+ "name": "ሌሶቶ"
+ },
+ "MK": {
+ "name": "መቄዶንያ"
+ },
+ "FM": {
+ "name": "ሚክሮኔዢያ"
+ },
+ "ML": {
+ "name": "ማሊ"
+ },
+ "MW": {
+ "name": "ማላዊ"
+ },
+ "MY": {
+ "name": "ማሌዢያ"
+ },
+ "MT": {
+ "name": "ማልታ"
+ },
+ "MV": {
+ "name": "ማልዲቭስ"
+ },
+ "MH": {
+ "name": "ማርሻል አይላንድ"
+ },
+ "MQ": {
+ "name": "ማርቲኒክ"
+ },
+ "MO": {
+ "name": "ማካኡ ልዩ የአስተዳደር ክልል ቻይና"
+ },
+ "MM": {
+ "name": "ማይናማር(በርማ)"
+ },
+ "MG": {
+ "name": "ማዳጋስካር"
+ },
+ "MX": {
+ "name": "ሜክሲኮ"
+ },
+ "YT": {
+ "name": "ሜይኦቴ"
+ },
+ "TL": {
+ "name": "ምስራቅ ሌስት"
+ },
+ "EH": {
+ "name": "ምዕራባዊ ሳህራ"
+ },
+ "MD": {
+ "name": "ሞልዶቫ"
+ },
+ "MU": {
+ "name": "ሞሪሸስ"
+ },
+ "MR": {
+ "name": "ሞሪቴኒያ"
+ },
+ "MA": {
+ "name": "ሞሮኮ"
+ },
+ "MC": {
+ "name": "ሞናኮ"
+ },
+ "ME": {
+ "name": "ሞንተኔግሮ"
+ },
+ "MS": {
+ "name": "ሞንትሴራት"
+ },
+ "MN": {
+ "name": "ሞንጎሊያ"
+ },
+ "MZ": {
+ "name": "ሞዛምቢክ"
+ },
+ "RW": {
+ "name": "ሩዋንዳ"
+ },
+ "RE": {
+ "name": "ሪዩኒየን"
+ },
+ "RU": {
+ "name": "ራሺያ"
+ },
+ "RO": {
+ "name": "ሮሜኒያ"
+ },
+ "SB": {
+ "name": "ሰሎሞን ደሴት"
+ },
+ "KP": {
+ "name": "ሰሜን ኮሪያ"
+ },
+ "RS": {
+ "name": "ሰርብያ"
+ },
+ "SO": {
+ "name": "ሱማሌ"
+ },
+ "SR": {
+ "name": "ሱሪናም"
+ },
+ "SZ": {
+ "name": "ሱዋዚላንድ"
+ },
+ "SD": {
+ "name": "ሱዳን"
+ },
+ "LK": {
+ "name": "ሲሪላንካ"
+ },
+ "SY": {
+ "name": "ሲሪያ"
+ },
+ "SC": {
+ "name": "ሲሼልስ"
+ },
+ "SX": {
+ "name": "ሲንት ማርተን"
+ },
+ "SG": {
+ "name": "ሲንጋፖር"
+ },
+ "WS": {
+ "name": "ሳሞአ"
+ },
+ "SM": {
+ "name": "ሳን ማሪኖ"
+ },
+ "ST": {
+ "name": "ሳኦ ቶሜ እና ፕሪንሲፔ"
+ },
+ "SA": {
+ "name": "ሳውድአረቢያ"
+ },
+ "CY": {
+ "name": "ሳይፕረስ"
+ },
+ "SL": {
+ "name": "ሴራሊዮን"
+ },
+ "SN": {
+ "name": "ሴኔጋል"
+ },
+ "SH": {
+ "name": "ሴንት ሄለና"
+ },
+ "LC": {
+ "name": "ሴንት ሉቺያ"
+ },
+ "MF": {
+ "name": "ሴንት ማርቲን"
+ },
+ "EA": {
+ "name": "ሴኡታና ሜሊላ"
+ },
+ "SK": {
+ "name": "ስሎቫኪያ"
+ },
+ "SI": {
+ "name": "ስሎቬኒያ"
+ },
+ "SJ": {
+ "name": "ስቫልባርድ እና ጃን ማየን"
+ },
+ "CH": {
+ "name": "ስዊዘርላንድ"
+ },
+ "SE": {
+ "name": "ስዊድን"
+ },
+ "ES": {
+ "name": "ስፔን"
+ },
+ "BL": {
+ "name": "ቅዱስ በርቴሎሜ"
+ },
+ "VC": {
+ "name": "ቅዱስ ቪንሴንት እና ግሬናዲንስ"
+ },
+ "KN": {
+ "name": "ቅዱስ ኪትስ እና ኔቪስ"
+ },
+ "PM": {
+ "name": "ቅዱስ ፒዬር እና ሚኩኤሎን"
+ },
+ "BT": {
+ "name": "ቡህታን"
+ },
+ "BG": {
+ "name": "ቡልጌሪያ"
+ },
+ "BF": {
+ "name": "ቡርኪና ፋሶ"
+ },
+ "BS": {
+ "name": "ባሃማስ"
+ },
+ "BH": {
+ "name": "ባህሬን"
+ },
+ "BB": {
+ "name": "ባርቤዶስ"
+ },
+ "BD": {
+ "name": "ባንግላዲሽ"
+ },
+ "BZ": {
+ "name": "ቤሊዘ"
+ },
+ "BY": {
+ "name": "ቤላሩስ"
+ },
+ "BE": {
+ "name": "ቤልጄም"
+ },
+ "BM": {
+ "name": "ቤርሙዳ"
+ },
+ "BJ": {
+ "name": "ቤኒን"
+ },
+ "BN": {
+ "name": "ብሩኒ"
+ },
+ "BI": {
+ "name": "ብሩንዲ"
+ },
+ "BR": {
+ "name": "ብራዚል"
+ },
+ "BO": {
+ "name": "ቦሊቪያ"
+ },
+ "BA": {
+ "name": "ቦስኒያ እና ሄርዞጎቪኒያ"
+ },
+ "BW": {
+ "name": "ቦትስዋና"
+ },
+ "VA": {
+ "name": "ቫቲካን ከተማ"
+ },
+ "VU": {
+ "name": "ቫኑአቱ"
+ },
+ "VN": {
+ "name": "ቬትናም"
+ },
+ "VE": {
+ "name": "ቬንዙዌላ"
+ },
+ "TR": {
+ "name": "ቱርክ"
+ },
+ "TM": {
+ "name": "ቱርክሜኒስታን"
+ },
+ "TV": {
+ "name": "ቱቫሉ"
+ },
+ "TN": {
+ "name": "ቱኒዚያ"
+ },
+ "TZ": {
+ "name": "ታንዛኒያ"
+ },
+ "TH": {
+ "name": "ታይላንድ"
+ },
+ "TW": {
+ "name": "ታይዋን"
+ },
+ "TJ": {
+ "name": "ታጃኪስታን"
+ },
+ "TA": {
+ "name": "ትሪስታን ዲ ኩንሃ"
+ },
+ "TT": {
+ "name": "ትሪናዳድ እና ቶቤጎ"
+ },
+ "TO": {
+ "name": "ቶንጋ"
+ },
+ "TK": {
+ "name": "ቶክላው"
+ },
+ "TG": {
+ "name": "ቶጐ"
+ },
+ "CL": {
+ "name": "ቺሊ"
+ },
+ "CN": {
+ "name": "ቻይና"
+ },
+ "TD": {
+ "name": "ቻድ"
+ },
+ "CZ": {
+ "name": "ቼክ ሪፑብሊክ"
+ },
+ "NU": {
+ "name": "ኒኡይ"
+ },
+ "NI": {
+ "name": "ኒካራጓ"
+ },
+ "NC": {
+ "name": "ኒው ካሌዶኒያ"
+ },
+ "NZ": {
+ "name": "ኒው ዚላንድ"
+ },
+ "NE": {
+ "name": "ኒጀር"
+ },
+ "NA": {
+ "name": "ናሚቢያ"
+ },
+ "NR": {
+ "name": "ናኡሩ"
+ },
+ "NG": {
+ "name": "ናይጄሪያ"
+ },
+ "NL": {
+ "name": "ኔዘርላንድ"
+ },
+ "NP": {
+ "name": "ኔፓል"
+ },
+ "NO": {
+ "name": "ኖርዌ"
+ },
+ "NF": {
+ "name": "ኖርፎልክ ደሴት"
+ },
+ "AL": {
+ "name": "አልባኒያ"
+ },
+ "DZ": {
+ "name": "አልጄሪያ"
+ },
+ "AW": {
+ "name": "አሩባ"
+ },
+ "AM": {
+ "name": "አርሜኒያ"
+ },
+ "AR": {
+ "name": "አርጀንቲና"
+ },
+ "AC": {
+ "name": "አሴንሽን ደሴት"
+ },
+ "AG": {
+ "name": "አንቲጓ እና ባሩዳ"
+ },
+ "AQ": {
+ "name": "አንታርክቲካ"
+ },
+ "AD": {
+ "name": "አንዶራ"
+ },
+ "AI": {
+ "name": "አንጉኢላ"
+ },
+ "AO": {
+ "name": "አንጐላ"
+ },
+ "AU": {
+ "name": "አውስትራልያ"
+ },
+ "AZ": {
+ "name": "አዘርባጃን"
+ },
+ "IE": {
+ "name": "አየርላንድ"
+ },
+ "IM": {
+ "name": "አይል ኦፍ ማን"
+ },
+ "IS": {
+ "name": "አይስላንድ"
+ },
+ "AF": {
+ "name": "አፍጋኒስታን"
+ },
+ "UY": {
+ "name": "ኡራጓይ"
+ },
+ "UZ": {
+ "name": "ኡዝቤኪስታን"
+ },
+ "IQ": {
+ "name": "ኢራቅ"
+ },
+ "IR": {
+ "name": "ኢራን"
+ },
+ "ET": {
+ "name": "ኢትዮጵያ"
+ },
+ "ID": {
+ "name": "ኢንዶኔዢያ"
+ },
+ "GQ": {
+ "name": "ኢኳቶሪያል ጊኒ"
+ },
+ "EC": {
+ "name": "ኢኳዶር"
+ },
+ "SV": {
+ "name": "ኤል ሳልቫዶር"
+ },
+ "ER": {
+ "name": "ኤርትራ"
+ },
+ "EE": {
+ "name": "ኤስቶኒያ"
+ },
+ "IL": {
+ "name": "እስራኤል"
+ },
+ "GB": {
+ "name": "እንግሊዝ"
+ },
+ "OM": {
+ "name": "ኦማን"
+ },
+ "AT": {
+ "name": "ኦስትሪያ"
+ },
+ "CW": {
+ "name": "ኩራሳዎ"
+ },
+ "CU": {
+ "name": "ኩባ"
+ },
+ "CK": {
+ "name": "ኩክ ደሴቶች"
+ },
+ "KI": {
+ "name": "ኪሪባቲ"
+ },
+ "KG": {
+ "name": "ኪርጊስታን"
+ },
+ "CM": {
+ "name": "ካሜሩን"
+ },
+ "KH": {
+ "name": "ካምቦዲያ"
+ },
+ "CA": {
+ "name": "ካናዳ"
+ },
+ "KZ": {
+ "name": "ካዛኪስታን"
+ },
+ "KY": {
+ "name": "ካይማን ደሴቶች"
+ },
+ "KE": {
+ "name": "ኬንያ"
+ },
+ "CV": {
+ "name": "ኬፕ ቬርዴ"
+ },
+ "HR": {
+ "name": "ክሮኤሽያ"
+ },
+ "KW": {
+ "name": "ክዌት"
+ },
+ "CO": {
+ "name": "ኮሎምቢያ"
+ },
+ "KM": {
+ "name": "ኮሞሮስ"
+ },
+ "CR": {
+ "name": "ኮስታ ሪካ"
+ },
+ "XK": {
+ "name": "ኮሶቮ"
+ },
+ "CI": {
+ "name": "ኮት ዲቯር"
+ },
+ "CG": {
+ "name": "ኮንጎ ብራዛቪል"
+ },
+ "CD": {
+ "name": "ኮንጎ-ኪንሻሳ"
+ },
+ "CC": {
+ "name": "ኮኮስ(ኬሊንግ) ደሴቶች"
+ },
+ "QA": {
+ "name": "ኳታር"
+ },
+ "WF": {
+ "name": "ዋሊስ እና ፉቱና ደሴቶች"
+ },
+ "ZW": {
+ "name": "ዚምቧቤ"
+ },
+ "ZM": {
+ "name": "ዛምቢያ"
+ },
+ "YE": {
+ "name": "የመን"
+ },
+ "CF": {
+ "name": "የመካከለኛው አፍሪካ ሪፐብሊክ"
+ },
+ "MP": {
+ "name": "የሰሜናዊ ማሪያና ደሴቶች"
+ },
+ "IO": {
+ "name": "የብሪታኒያ ህንድ ውቂያኖስ ግዛት"
+ },
+ "AE": {
+ "name": "የተባበሩት አረብ ኤምሬትስ"
+ },
+ "TC": {
+ "name": "የቱርኮችና የካኢኮስ ደሴቶች"
+ },
+ "AX": {
+ "name": "የአላንድ ደሴቶች"
+ },
+ "AS": {
+ "name": "የአሜሪካ ሳሞአ"
+ },
+ "VI": {
+ "name": "የአሜሪካ ቨርጂን ደሴቶች"
+ },
+ "VG": {
+ "name": "የእንግሊዝ ቨርጂን ደሴቶች"
+ },
+ "BQ": {
+ "name": "የካሪቢያን ኔዘርላንድስ"
+ },
+ "IC": {
+ "name": "የካናሪ ደሴቶች"
+ },
+ "UM": {
+ "name": "የዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶች"
+ },
+ "CX": {
+ "name": "የገና ደሴት"
+ },
+ "TF": {
+ "name": "የፈረንሳይ ደቡባዊ ግዛቶች"
+ },
+ "GF": {
+ "name": "የፈረንሳይ ጉዊአና"
+ },
+ "PF": {
+ "name": "የፈረንሳይ ፖሊኔዢያ"
+ },
+ "FO": {
+ "name": "የፋሮ ደሴቶች"
+ },
+ "PS": {
+ "name": "የፍልስጤም ግዛት"
+ },
+ "FK": {
+ "name": "የፎክላንድ ደሴቶች"
+ },
+ "US": {
+ "name": "ዩናይትድ ስቴትስ"
+ },
+ "UA": {
+ "name": "ዩክሬን"
+ },
+ "UG": {
+ "name": "ዩጋንዳ"
+ },
+ "SS": {
+ "name": "ደቡብ ሱዳን"
+ },
+ "ZA": {
+ "name": "ደቡብ አፍሪካ"
+ },
+ "KR": {
+ "name": "ደቡብ ኮሪያ"
+ },
+ "GS": {
+ "name": "ደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶች"
+ },
+ "DG": {
+ "name": "ዲዬጎ ጋርሺያ"
+ },
+ "DK": {
+ "name": "ዴንማርክ"
+ },
+ "DM": {
+ "name": "ዶሚኒካ"
+ },
+ "DO": {
+ "name": "ዶሚኒክ ሪፑብሊክ"
+ },
+ "DE": {
+ "name": "ጀርመን"
+ },
+ "JE": {
+ "name": "ጀርሲ"
+ },
+ "DJ": {
+ "name": "ጂቡቲ"
+ },
+ "GI": {
+ "name": "ጂብራልተር"
+ },
+ "JM": {
+ "name": "ጃማይካ"
+ },
+ "JP": {
+ "name": "ጃፓን"
+ },
+ "JO": {
+ "name": "ጆርዳን"
+ },
+ "GE": {
+ "name": "ጆርጂያ"
+ },
+ "GG": {
+ "name": "ጉርነሲ"
+ },
+ "GU": {
+ "name": "ጉዋም"
+ },
+ "GT": {
+ "name": "ጉዋቲማላ"
+ },
+ "GP": {
+ "name": "ጉዋደሉፕ"
+ },
+ "GY": {
+ "name": "ጉያና"
+ },
+ "GN": {
+ "name": "ጊኒ"
+ },
+ "GW": {
+ "name": "ጊኒ ቢሳኦ"
+ },
+ "GM": {
+ "name": "ጋምቢያ"
+ },
+ "GA": {
+ "name": "ጋቦን"
+ },
+ "GH": {
+ "name": "ጋና"
+ },
+ "GL": {
+ "name": "ግሪንላንድ"
+ },
+ "GR": {
+ "name": "ግሪክ"
+ },
+ "GD": {
+ "name": "ግሬናዳ"
+ },
+ "EG": {
+ "name": "ግብጽ"
+ },
+ "IT": {
+ "name": "ጣሊያን"
+ },
+ "FR": {
+ "name": "ፈረንሳይ"
+ },
+ "PH": {
+ "name": "ፊሊፒንስ"
+ },
+ "FI": {
+ "name": "ፊንላንድ"
+ },
+ "FJ": {
+ "name": "ፊጂ"
+ },
+ "PN": {
+ "name": "ፒትካኢርን አይስላንድ"
+ },
+ "PW": {
+ "name": "ፓላው"
+ },
+ "PY": {
+ "name": "ፓራጓይ"
+ },
+ "PA": {
+ "name": "ፓናማ"
+ },
+ "PK": {
+ "name": "ፓኪስታን"
+ },
+ "PG": {
+ "name": "ፓፑዋ ኒው ጊኒ"
+ },
+ "PE": {
+ "name": "ፔሩ"
+ },
+ "PL": {
+ "name": "ፖላንድ"
+ },
+ "PT": {
+ "name": "ፖርቱጋል"
+ },
+ "PR": {
+ "name": "ፖርታ ሪኮ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ar.json b/library/intl/resources/country/ar.json
new file mode 100644
index 000000000..4c8763235
--- /dev/null
+++ b/library/intl/resources/country/ar.json
@@ -0,0 +1,761 @@
+{
+ "AW": {
+ "name": "آروبا"
+ },
+ "AZ": {
+ "name": "أذربيجان"
+ },
+ "AM": {
+ "name": "أرمينيا"
+ },
+ "ER": {
+ "name": "أريتريا"
+ },
+ "AU": {
+ "name": "أستراليا"
+ },
+ "EE": {
+ "name": "أستونيا"
+ },
+ "AF": {
+ "name": "أفغانستان"
+ },
+ "AL": {
+ "name": "ألبانيا"
+ },
+ "DE": {
+ "name": "ألمانيا"
+ },
+ "AQ": {
+ "name": "أنتاركتيكا"
+ },
+ "AG": {
+ "name": "أنتيغوا وبربودا"
+ },
+ "AD": {
+ "name": "أندورا"
+ },
+ "ID": {
+ "name": "أندونيسيا"
+ },
+ "AO": {
+ "name": "أنغولا"
+ },
+ "AI": {
+ "name": "أنغويلا"
+ },
+ "UY": {
+ "name": "أورغواي"
+ },
+ "UZ": {
+ "name": "أوزبكستان"
+ },
+ "UG": {
+ "name": "أوغندا"
+ },
+ "UA": {
+ "name": "أوكرانيا"
+ },
+ "IE": {
+ "name": "أيرلندا"
+ },
+ "IS": {
+ "name": "أيسلندا"
+ },
+ "ET": {
+ "name": "إثيوبيا"
+ },
+ "ES": {
+ "name": "إسبانيا"
+ },
+ "IL": {
+ "name": "إسرائيل"
+ },
+ "IR": {
+ "name": "إيران"
+ },
+ "IT": {
+ "name": "إيطاليا"
+ },
+ "PS": {
+ "name": "الأراضي الفلسطينية"
+ },
+ "AR": {
+ "name": "الأرجنتين"
+ },
+ "JO": {
+ "name": "الأردن"
+ },
+ "IO": {
+ "name": "الإقليم البريطاني في المحيط الهندي"
+ },
+ "EC": {
+ "name": "الإكوادور"
+ },
+ "AE": {
+ "name": "الإمارات العربية المتحدة"
+ },
+ "BS": {
+ "name": "الباهاما"
+ },
+ "BH": {
+ "name": "البحرين"
+ },
+ "BR": {
+ "name": "البرازيل"
+ },
+ "PT": {
+ "name": "البرتغال"
+ },
+ "BA": {
+ "name": "البوسنة والهرسك"
+ },
+ "GA": {
+ "name": "الجابون"
+ },
+ "ME": {
+ "name": "الجبل الأسود"
+ },
+ "DZ": {
+ "name": "الجزائر"
+ },
+ "DK": {
+ "name": "الدانمرك"
+ },
+ "CV": {
+ "name": "الرأس الأخضر"
+ },
+ "SV": {
+ "name": "السلفادور"
+ },
+ "SN": {
+ "name": "السنغال"
+ },
+ "SD": {
+ "name": "السودان"
+ },
+ "SE": {
+ "name": "السويد"
+ },
+ "EH": {
+ "name": "الصحراء الغربية"
+ },
+ "SO": {
+ "name": "الصومال"
+ },
+ "CN": {
+ "name": "الصين"
+ },
+ "IQ": {
+ "name": "العراق"
+ },
+ "VA": {
+ "name": "الفاتيكان"
+ },
+ "PH": {
+ "name": "الفلبين"
+ },
+ "CM": {
+ "name": "الكاميرون"
+ },
+ "CG": {
+ "name": "الكونغو - برازافيل"
+ },
+ "CD": {
+ "name": "الكونغو - كينشاسا"
+ },
+ "KW": {
+ "name": "الكويت"
+ },
+ "MA": {
+ "name": "المغرب"
+ },
+ "TF": {
+ "name": "المقاطعات الجنوبية الفرنسية"
+ },
+ "MX": {
+ "name": "المكسيك"
+ },
+ "SA": {
+ "name": "المملكة العربية السعودية"
+ },
+ "GB": {
+ "name": "المملكة المتحدة"
+ },
+ "NO": {
+ "name": "النرويج"
+ },
+ "AT": {
+ "name": "النمسا"
+ },
+ "NE": {
+ "name": "النيجر"
+ },
+ "IN": {
+ "name": "الهند"
+ },
+ "US": {
+ "name": "الولايات المتحدة"
+ },
+ "JP": {
+ "name": "اليابان"
+ },
+ "YE": {
+ "name": "اليمن"
+ },
+ "GR": {
+ "name": "اليونان"
+ },
+ "PG": {
+ "name": "بابوا غينيا الجديدة"
+ },
+ "PY": {
+ "name": "باراغواي"
+ },
+ "PK": {
+ "name": "باكستان"
+ },
+ "PW": {
+ "name": "بالاو"
+ },
+ "BW": {
+ "name": "بتسوانا"
+ },
+ "BB": {
+ "name": "بربادوس"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "بروناي"
+ },
+ "BE": {
+ "name": "بلجيكا"
+ },
+ "BG": {
+ "name": "بلغاريا"
+ },
+ "BZ": {
+ "name": "بليز"
+ },
+ "BD": {
+ "name": "بنجلاديش"
+ },
+ "PA": {
+ "name": "بنما"
+ },
+ "BJ": {
+ "name": "بنين"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "PR": {
+ "name": "بورتوريكو"
+ },
+ "BF": {
+ "name": "بوركينا فاسو"
+ },
+ "BI": {
+ "name": "بوروندي"
+ },
+ "PL": {
+ "name": "بولندا"
+ },
+ "BO": {
+ "name": "بوليفيا"
+ },
+ "PF": {
+ "name": "بولينيزيا الفرنسية"
+ },
+ "PE": {
+ "name": "بيرو"
+ },
+ "TZ": {
+ "name": "تانزانيا"
+ },
+ "TH": {
+ "name": "تايلاند"
+ },
+ "TW": {
+ "name": "تايوان"
+ },
+ "TM": {
+ "name": "تركمانستان"
+ },
+ "TR": {
+ "name": "تركيا"
+ },
+ "TA": {
+ "name": "تريستان دي كونها"
+ },
+ "TT": {
+ "name": "ترينيداد وتوباغو"
+ },
+ "TD": {
+ "name": "تشاد"
+ },
+ "TG": {
+ "name": "توجو"
+ },
+ "TV": {
+ "name": "توفالو"
+ },
+ "TK": {
+ "name": "توكيلو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونغا"
+ },
+ "TL": {
+ "name": "تيمور الشرقية"
+ },
+ "JM": {
+ "name": "جامايكا"
+ },
+ "GI": {
+ "name": "جبل طارق"
+ },
+ "AX": {
+ "name": "جزر آلاند"
+ },
+ "TC": {
+ "name": "جزر الترك وجايكوس"
+ },
+ "KM": {
+ "name": "جزر القمر"
+ },
+ "KY": {
+ "name": "جزر الكايمن"
+ },
+ "IC": {
+ "name": "جزر الكناري"
+ },
+ "MH": {
+ "name": "جزر المارشال"
+ },
+ "MV": {
+ "name": "جزر المالديف"
+ },
+ "UM": {
+ "name": "جزر الولايات المتحدة النائية"
+ },
+ "PN": {
+ "name": "جزر بيتكيرن"
+ },
+ "SB": {
+ "name": "جزر سليمان"
+ },
+ "FO": {
+ "name": "جزر فارو"
+ },
+ "VI": {
+ "name": "جزر فرجين الأمريكية"
+ },
+ "VG": {
+ "name": "جزر فرجين البريطانية"
+ },
+ "FK": {
+ "name": "جزر فوكلاند"
+ },
+ "CK": {
+ "name": "جزر كوك"
+ },
+ "CC": {
+ "name": "جزر كوكوس"
+ },
+ "MP": {
+ "name": "جزر ماريانا الشمالية"
+ },
+ "WF": {
+ "name": "جزر والس وفوتونا"
+ },
+ "AC": {
+ "name": "جزيرة أسينشيون"
+ },
+ "CX": {
+ "name": "جزيرة الكريسماس"
+ },
+ "IM": {
+ "name": "جزيرة مان"
+ },
+ "NF": {
+ "name": "جزيرة نورفوك"
+ },
+ "CF": {
+ "name": "جمهورية أفريقيا الوسطى"
+ },
+ "CZ": {
+ "name": "جمهورية التشيك"
+ },
+ "DO": {
+ "name": "جمهورية الدومينيك"
+ },
+ "ZA": {
+ "name": "جنوب أفريقيا"
+ },
+ "SS": {
+ "name": "جنوب السودان"
+ },
+ "GP": {
+ "name": "جوادلوب"
+ },
+ "GE": {
+ "name": "جورجيا"
+ },
+ "GS": {
+ "name": "جورجيا الجنوبية وجزر ساندويتش الجنوبية"
+ },
+ "DJ": {
+ "name": "جيبوتي"
+ },
+ "JE": {
+ "name": "جيرسي"
+ },
+ "DM": {
+ "name": "دومينيكا"
+ },
+ "DG": {
+ "name": "دييغو غارسيا"
+ },
+ "RW": {
+ "name": "رواندا"
+ },
+ "RU": {
+ "name": "روسيا"
+ },
+ "BY": {
+ "name": "روسيا البيضاء"
+ },
+ "RO": {
+ "name": "رومانيا"
+ },
+ "RE": {
+ "name": "روينيون"
+ },
+ "ZM": {
+ "name": "زامبيا"
+ },
+ "ZW": {
+ "name": "زيمبابوي"
+ },
+ "CI": {
+ "name": "ساحل العاج"
+ },
+ "WS": {
+ "name": "ساموا"
+ },
+ "AS": {
+ "name": "ساموا الأمريكية"
+ },
+ "BL": {
+ "name": "سان بارتليمي"
+ },
+ "SM": {
+ "name": "سان مارينو"
+ },
+ "PM": {
+ "name": "سانت بيير وميكولون"
+ },
+ "VC": {
+ "name": "سانت فنسنت وغرنادين"
+ },
+ "KN": {
+ "name": "سانت كيتس ونيفيس"
+ },
+ "LC": {
+ "name": "سانت لوسيا"
+ },
+ "MF": {
+ "name": "سانت مارتن"
+ },
+ "SH": {
+ "name": "سانت هيلنا"
+ },
+ "ST": {
+ "name": "ساو تومي وبرينسيبي"
+ },
+ "LK": {
+ "name": "سريلانكا"
+ },
+ "SJ": {
+ "name": "سفالبارد وجان مايان"
+ },
+ "SK": {
+ "name": "سلوفاكيا"
+ },
+ "SI": {
+ "name": "سلوفينيا"
+ },
+ "SG": {
+ "name": "سنغافورة"
+ },
+ "SZ": {
+ "name": "سوازيلاند"
+ },
+ "SY": {
+ "name": "سوريا"
+ },
+ "SR": {
+ "name": "سورينام"
+ },
+ "CH": {
+ "name": "سويسرا"
+ },
+ "SL": {
+ "name": "سيراليون"
+ },
+ "SC": {
+ "name": "سيشل"
+ },
+ "SX": {
+ "name": "سينت مارتن"
+ },
+ "EA": {
+ "name": "سيوتا وميليلا"
+ },
+ "CL": {
+ "name": "شيلي"
+ },
+ "RS": {
+ "name": "صربيا"
+ },
+ "TJ": {
+ "name": "طاجكستان"
+ },
+ "OM": {
+ "name": "عُمان"
+ },
+ "GM": {
+ "name": "غامبيا"
+ },
+ "GH": {
+ "name": "غانا"
+ },
+ "GD": {
+ "name": "غرينادا"
+ },
+ "GL": {
+ "name": "غرينلاند"
+ },
+ "GT": {
+ "name": "غواتيمالا"
+ },
+ "GU": {
+ "name": "غوام"
+ },
+ "GF": {
+ "name": "غويانا الفرنسية"
+ },
+ "GY": {
+ "name": "غيانا"
+ },
+ "GG": {
+ "name": "غيرنزي"
+ },
+ "GN": {
+ "name": "غينيا"
+ },
+ "GQ": {
+ "name": "غينيا الإستوائية"
+ },
+ "GW": {
+ "name": "غينيا بيساو"
+ },
+ "VU": {
+ "name": "فانواتو"
+ },
+ "FR": {
+ "name": "فرنسا"
+ },
+ "VE": {
+ "name": "فنزويلا"
+ },
+ "FI": {
+ "name": "فنلندا"
+ },
+ "VN": {
+ "name": "فيتنام"
+ },
+ "FJ": {
+ "name": "فيجي"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KG": {
+ "name": "قرغيزستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "KZ": {
+ "name": "كازاخستان"
+ },
+ "NC": {
+ "name": "كاليدونيا الجديدة"
+ },
+ "HR": {
+ "name": "كرواتيا"
+ },
+ "KH": {
+ "name": "كمبوديا"
+ },
+ "CA": {
+ "name": "كندا"
+ },
+ "CU": {
+ "name": "كوبا"
+ },
+ "CW": {
+ "name": "كوراساو"
+ },
+ "KR": {
+ "name": "كوريا الجنوبية"
+ },
+ "KP": {
+ "name": "كوريا الشمالية"
+ },
+ "CR": {
+ "name": "كوستاريكا"
+ },
+ "XK": {
+ "name": "كوسوفو"
+ },
+ "CO": {
+ "name": "كولومبيا"
+ },
+ "KI": {
+ "name": "كيريباتي"
+ },
+ "KE": {
+ "name": "كينيا"
+ },
+ "LV": {
+ "name": "لاتفيا"
+ },
+ "LA": {
+ "name": "لاوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LU": {
+ "name": "لوكسمبورغ"
+ },
+ "LY": {
+ "name": "ليبيا"
+ },
+ "LR": {
+ "name": "ليبيريا"
+ },
+ "LT": {
+ "name": "ليتوانيا"
+ },
+ "LI": {
+ "name": "ليختنشتاين"
+ },
+ "LS": {
+ "name": "ليسوتو"
+ },
+ "MQ": {
+ "name": "مارتينيك"
+ },
+ "MT": {
+ "name": "مالطا"
+ },
+ "ML": {
+ "name": "مالي"
+ },
+ "MY": {
+ "name": "ماليزيا"
+ },
+ "YT": {
+ "name": "مايوت"
+ },
+ "MG": {
+ "name": "مدغشقر"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MK": {
+ "name": "مقدونيا"
+ },
+ "MO": {
+ "name": "مكاو الصينية (منطقة إدارية خاصة)"
+ },
+ "MW": {
+ "name": "ملاوي"
+ },
+ "MN": {
+ "name": "منغوليا"
+ },
+ "MR": {
+ "name": "موريتانيا"
+ },
+ "MU": {
+ "name": "موريشيوس"
+ },
+ "MZ": {
+ "name": "موزمبيق"
+ },
+ "MD": {
+ "name": "مولدافيا"
+ },
+ "MC": {
+ "name": "موناكو"
+ },
+ "MS": {
+ "name": "مونتسرات"
+ },
+ "MM": {
+ "name": "ميانمار -بورما"
+ },
+ "FM": {
+ "name": "ميكرونيزيا"
+ },
+ "NA": {
+ "name": "ناميبيا"
+ },
+ "NR": {
+ "name": "ناورو"
+ },
+ "NP": {
+ "name": "نيبال"
+ },
+ "NG": {
+ "name": "نيجيريا"
+ },
+ "NI": {
+ "name": "نيكاراغوا"
+ },
+ "NZ": {
+ "name": "نيوزيلاندا"
+ },
+ "NU": {
+ "name": "نيوي"
+ },
+ "HT": {
+ "name": "هايتي"
+ },
+ "HN": {
+ "name": "هندوراس"
+ },
+ "HU": {
+ "name": "هنغاريا"
+ },
+ "NL": {
+ "name": "هولندا"
+ },
+ "BQ": {
+ "name": "هولندا الكاريبية"
+ },
+ "HK": {
+ "name": "هونغ كونغ الصينية"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/asa.json b/library/intl/resources/country/asa.json
new file mode 100644
index 000000000..ef6acc8aa
--- /dev/null
+++ b/library/intl/resources/country/asa.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Adhabajani"
+ },
+ "ZA": {
+ "name": "Afrika Kuthini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aithlandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Authtralia"
+ },
+ "AT": {
+ "name": "Authtria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "BB": {
+ "name": "Babadothi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belaruthi"
+ },
+ "BZ": {
+ "name": "Belidhe"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bothnia na Hedhegovina"
+ },
+ "BW": {
+ "name": "Botthwana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafatho"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "ZM": {
+ "name": "Dhambia"
+ },
+ "ZW": {
+ "name": "Dhimbabwe"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Ethtonia"
+ },
+ "AE": {
+ "name": "Falme dha Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufarantha"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hithpania"
+ },
+ "HN": {
+ "name": "Hondurathi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IO": {
+ "name": "Ieneo la Uingeredha katika Bahari Hindi"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonethia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "IL": {
+ "name": "Ithraeli"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrathia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakithtani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizithtani"
+ },
+ "NF": {
+ "name": "Kithiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korathia"
+ },
+ "KP": {
+ "name": "Korea Kathkazini"
+ },
+ "KR": {
+ "name": "Korea Kuthini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kothtarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprothi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laothi"
+ },
+ "LU": {
+ "name": "Lathembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lethoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malethia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Mathedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekthiko"
+ },
+ "FM": {
+ "name": "Mikronethia"
+ },
+ "EG": {
+ "name": "Mithri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monttherrati"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MU": {
+ "name": "Morithi"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mthumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nyudhilandi"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakithtani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufarantha"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Tadhania"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikithtani"
+ },
+ "SM": {
+ "name": "Thamarino"
+ },
+ "WS": {
+ "name": "Thamoa"
+ },
+ "AS": {
+ "name": "Thamoa ya Marekani"
+ },
+ "SH": {
+ "name": "Thantahelena"
+ },
+ "KN": {
+ "name": "Thantakitdhi na Nevith"
+ },
+ "LC": {
+ "name": "Thantaluthia"
+ },
+ "PM": {
+ "name": "Thantapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Thantavithenti na Grenadini"
+ },
+ "ST": {
+ "name": "Thao Tome na Principe"
+ },
+ "SA": {
+ "name": "Thaudi"
+ },
+ "SN": {
+ "name": "Thenegali"
+ },
+ "SL": {
+ "name": "Thiera Leoni"
+ },
+ "SG": {
+ "name": "Thingapoo"
+ },
+ "SY": {
+ "name": "Thiria"
+ },
+ "LK": {
+ "name": "Thirilanka"
+ },
+ "SI": {
+ "name": "Thlovenia"
+ },
+ "SK": {
+ "name": "Tholvakia"
+ },
+ "SO": {
+ "name": "Thomalia"
+ },
+ "SD": {
+ "name": "Thudani"
+ },
+ "SR": {
+ "name": "Thurinamu"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunithia"
+ },
+ "TM": {
+ "name": "Turukimenithtani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "UZ": {
+ "name": "Udhibekithtani"
+ },
+ "FR": {
+ "name": "Ufarantha"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholandhi"
+ },
+ "GB": {
+ "name": "Uingeredha"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Uruthi"
+ },
+ "SZ": {
+ "name": "Uthwadhi"
+ },
+ "SE": {
+ "name": "Uthwidi"
+ },
+ "CH": {
+ "name": "Uthwithi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Vithiwa vya Cook"
+ },
+ "FK": {
+ "name": "Vithiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Vithiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Vithiwa vya Mariana vya Kathkazini"
+ },
+ "MH": {
+ "name": "Vithiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Vithiwa vya Tholomon"
+ },
+ "TC": {
+ "name": "Vithiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Vithiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Vithiwa vya Virgin vya Uingeredha"
+ },
+ "WF": {
+ "name": "Walith na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ast.json b/library/intl/resources/country/ast.json
new file mode 100644
index 000000000..ab9dc8b5d
--- /dev/null
+++ b/library/intl/resources/country/ast.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "HK": {
+ "name": "ARE China de Ḥong Kong"
+ },
+ "MO": {
+ "name": "ARE China de Macáu"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "DZ": {
+ "name": "Arxelia"
+ },
+ "AR": {
+ "name": "Arxentina"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaixán"
+ },
+ "BH": {
+ "name": "Baḥréin"
+ },
+ "BD": {
+ "name": "Bangladex"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Bélxica"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabu Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CZ": {
+ "name": "Chequia"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "VA": {
+ "name": "Ciudá del Vaticanu"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "NE": {
+ "name": "El Níxer"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Xuníos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estaos Xuníos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "EG": {
+ "name": "Exiptu"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "PH": {
+ "name": "Filipines"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Francesa"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Hondures"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AC": {
+ "name": "Islla Ascensión"
+ },
+ "CX": {
+ "name": "Islla Christmas"
+ },
+ "IM": {
+ "name": "Islla de Man"
+ },
+ "NF": {
+ "name": "Islla Norfolk"
+ },
+ "AX": {
+ "name": "Islles Aland"
+ },
+ "KY": {
+ "name": "Islles Caimán"
+ },
+ "IC": {
+ "name": "Islles Canaries"
+ },
+ "CC": {
+ "name": "Islles Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Islles Cook"
+ },
+ "FO": {
+ "name": "Islles Feroe"
+ },
+ "FJ": {
+ "name": "Islles Fixi"
+ },
+ "MP": {
+ "name": "Islles Marianes del Norte"
+ },
+ "MH": {
+ "name": "Islles Marshall"
+ },
+ "UM": {
+ "name": "Islles Perifériques Menores de los EE.XX."
+ },
+ "PN": {
+ "name": "Islles Pitcairn"
+ },
+ "SB": {
+ "name": "Islles Salomón"
+ },
+ "TC": {
+ "name": "Islles Turques y Caicos"
+ },
+ "VI": {
+ "name": "Islles Vírxenes Americanes"
+ },
+ "VG": {
+ "name": "Islles Vírxenes Britániques"
+ },
+ "GS": {
+ "name": "Islles Xeorxa del Sur y Sandwich del Sur"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakstán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "AQ": {
+ "name": "L’Antártida"
+ },
+ "MQ": {
+ "name": "La Martinica"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "BS": {
+ "name": "Les Bahames"
+ },
+ "BM": {
+ "name": "Les Bermudes"
+ },
+ "KM": {
+ "name": "Les Comores"
+ },
+ "MV": {
+ "name": "Les Maldives"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbanu"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgu"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MU": {
+ "name": "Mauriciu"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónacu"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegru"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NG": {
+ "name": "Nixeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Baxos"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Paláu"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puertu Ricu"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Reinu Xuníu"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáḥara Occidental"
+ },
+ "KN": {
+ "name": "Saint Kitts y Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre y Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "SM": {
+ "name": "San Marín"
+ },
+ "VC": {
+ "name": "San Vicente y Granadines"
+ },
+ "LC": {
+ "name": "Santa Llucía"
+ },
+ "ST": {
+ "name": "Santu Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard ya Islla Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Taxiquistán"
+ },
+ "IO": {
+ "name": "Territoriu Británicu del Océanu Índicu"
+ },
+ "TF": {
+ "name": "Tierres Australes Franceses"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokeláu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidá y Tobagu"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Tunicia"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraína"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbequistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "JM": {
+ "name": "Xamaica"
+ },
+ "JP": {
+ "name": "Xapón"
+ },
+ "GE": {
+ "name": "Xeorxa"
+ },
+ "GI": {
+ "name": "Xibraltar"
+ },
+ "CY": {
+ "name": "Xipre"
+ },
+ "JO": {
+ "name": "Xordania"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/az.json b/library/intl/resources/country/az.json
new file mode 100644
index 000000000..98906a92a
--- /dev/null
+++ b/library/intl/resources/country/az.json
@@ -0,0 +1,761 @@
+{
+ "VI": {
+ "name": "ABŞ Vircin Adaları"
+ },
+ "AX": {
+ "name": "Aland Adaları"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "DE": {
+ "name": "Almaniya"
+ },
+ "US": {
+ "name": "Amerika Birləşmiş Ştatları"
+ },
+ "AS": {
+ "name": "Amerika Samoası"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Anqola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antiqua və Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Avstraliya"
+ },
+ "AT": {
+ "name": "Avstriya"
+ },
+ "AZ": {
+ "name": "Azərbaycan"
+ },
+ "BS": {
+ "name": "Baham Adaları"
+ },
+ "BD": {
+ "name": "Banqladeş"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belçika"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BH": {
+ "name": "Bəhreyn"
+ },
+ "AE": {
+ "name": "Birləşmiş Ərəb Əmirlikləri"
+ },
+ "GB": {
+ "name": "Birləşmiş Krallıq"
+ },
+ "UM": {
+ "name": "Birləşmiş Ştatlar Uzaq Adalar"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BG": {
+ "name": "Bolqariya"
+ },
+ "BA": {
+ "name": "Bosniya və Hersoqovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Braziliya"
+ },
+ "IO": {
+ "name": "Britaniya Hind Okeanı Ərazisi"
+ },
+ "VG": {
+ "name": "Britaniya Vircin Adaları"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "JE": {
+ "name": "Cersi"
+ },
+ "ZA": {
+ "name": "Cənub Afrika"
+ },
+ "GS": {
+ "name": "Cənubi Corciya və Cənubi Sendviç Adaları"
+ },
+ "KR": {
+ "name": "Cənubi Koreya"
+ },
+ "SS": {
+ "name": "Cənubi Sudan"
+ },
+ "DJ": {
+ "name": "Cibuti"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "CZ": {
+ "name": "Çexiya"
+ },
+ "CL": {
+ "name": "Çili"
+ },
+ "CN": {
+ "name": "Çin"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Dieqo Qarsiya"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikan Respublikası"
+ },
+ "ET": {
+ "name": "Efiopiya"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorial Qvineya"
+ },
+ "ER": {
+ "name": "Eritreya"
+ },
+ "AM": {
+ "name": "Ermənistan"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "AF": {
+ "name": "Əfqanıstan"
+ },
+ "DZ": {
+ "name": "Əlcəzair"
+ },
+ "FO": {
+ "name": "Farer Adaları"
+ },
+ "PS": {
+ "name": "Fələstin Əraziləri"
+ },
+ "FJ": {
+ "name": "Fici"
+ },
+ "CI": {
+ "name": "Fil Dişi Sahili"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlandiya"
+ },
+ "FK": {
+ "name": "Folklend Adaları"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "TF": {
+ "name": "Fransa Cənub Əraziləri"
+ },
+ "GF": {
+ "name": "Fransız Qviyanası"
+ },
+ "PF": {
+ "name": "Fransız Polineziyası"
+ },
+ "GG": {
+ "name": "Gernsey"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GE": {
+ "name": "Gürcüstan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "IN": {
+ "name": "Hindistan"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Honq Konq Xüsusi İnzibati Ərazi Çin"
+ },
+ "HR": {
+ "name": "Xorvatiya"
+ },
+ "ID": {
+ "name": "İndoneziya"
+ },
+ "JO": {
+ "name": "İordaniya"
+ },
+ "IQ": {
+ "name": "İraq"
+ },
+ "IR": {
+ "name": "İran"
+ },
+ "IE": {
+ "name": "İrlandiya"
+ },
+ "IS": {
+ "name": "İslandiya"
+ },
+ "ES": {
+ "name": "İspaniya"
+ },
+ "IL": {
+ "name": "İsrail"
+ },
+ "SE": {
+ "name": "İsveç"
+ },
+ "CH": {
+ "name": "İsveçrə"
+ },
+ "IT": {
+ "name": "İtaliya"
+ },
+ "KH": {
+ "name": "Kamboca"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanar Adaları"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "BQ": {
+ "name": "Karib Niderlandı"
+ },
+ "KY": {
+ "name": "Kayman Adaları"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "CY": {
+ "name": "Kipr"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos Adaları"
+ },
+ "CO": {
+ "name": "Kolumbiya"
+ },
+ "KM": {
+ "name": "Komor Adaları"
+ },
+ "CG": {
+ "name": "Konqo - Brazzavil"
+ },
+ "CD": {
+ "name": "Konqo - Kinşasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuk Adaları"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Küveyt"
+ },
+ "GA": {
+ "name": "Qabon"
+ },
+ "GM": {
+ "name": "Qambiya"
+ },
+ "GH": {
+ "name": "Qana"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KZ": {
+ "name": "Qazaxıstan"
+ },
+ "EH": {
+ "name": "Qərbi Sahara"
+ },
+ "KG": {
+ "name": "Qırğızıstan"
+ },
+ "GD": {
+ "name": "Qrenada"
+ },
+ "GL": {
+ "name": "Qrenlandiya"
+ },
+ "GU": {
+ "name": "Quam"
+ },
+ "GP": {
+ "name": "Qvadelupa"
+ },
+ "GT": {
+ "name": "Qvatemala"
+ },
+ "GN": {
+ "name": "Qvineya"
+ },
+ "GW": {
+ "name": "Qvineya-Bisau"
+ },
+ "GY": {
+ "name": "Qviyana"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LI": {
+ "name": "Lixtenşteyn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LB": {
+ "name": "Livan"
+ },
+ "LY": {
+ "name": "Liviya"
+ },
+ "LU": {
+ "name": "Lüksemburq"
+ },
+ "HU": {
+ "name": "Macarıstan"
+ },
+ "MG": {
+ "name": "Madaqaskar"
+ },
+ "MO": {
+ "name": "Makao Xüsusi İnzibati Ərazi Çin"
+ },
+ "MK": {
+ "name": "Makedoniya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MY": {
+ "name": "Malayziya"
+ },
+ "MV": {
+ "name": "Maldiv Adaları"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marşal Adaları"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mavriki"
+ },
+ "MR": {
+ "name": "Mavritaniya"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Men Adası"
+ },
+ "MA": {
+ "name": "Mərakeş"
+ },
+ "CF": {
+ "name": "Mərkəzi Afrika Respublikası"
+ },
+ "FM": {
+ "name": "Mikroneziya"
+ },
+ "CX": {
+ "name": "Milad Adası"
+ },
+ "EG": {
+ "name": "Misir"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Monqoliya"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "ME": {
+ "name": "Monteneqro"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "SH": {
+ "name": "Müqəddəs Yelena"
+ },
+ "MM": {
+ "name": "Myanma"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niderland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaraqua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Adası"
+ },
+ "NO": {
+ "name": "Norveç"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UZ": {
+ "name": "Özbəkistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yeni Qvineya"
+ },
+ "PY": {
+ "name": "Paraqvay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern Adaları"
+ },
+ "PL": {
+ "name": "Polşa"
+ },
+ "PT": {
+ "name": "Portuqal"
+ },
+ "PR": {
+ "name": "Puerto Riko"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumıniya"
+ },
+ "RU": {
+ "name": "Rusiya"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "BL": {
+ "name": "San Bartolomey"
+ },
+ "KN": {
+ "name": "San Kits və Nevis"
+ },
+ "LC": {
+ "name": "San Lüsiya"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martin"
+ },
+ "PM": {
+ "name": "San Pier və Mikelon"
+ },
+ "VC": {
+ "name": "San Vinsent və Qrenada"
+ },
+ "ST": {
+ "name": "Sao Tome və Prinsip"
+ },
+ "SN": {
+ "name": "Seneqal"
+ },
+ "RS": {
+ "name": "Serbiya"
+ },
+ "EA": {
+ "name": "Seuta və Melilya"
+ },
+ "SC": {
+ "name": "Seyşel Adaları"
+ },
+ "SA": {
+ "name": "Səudiyyə Ərəbistanı"
+ },
+ "SL": {
+ "name": "Siera Leon"
+ },
+ "SG": {
+ "name": "Sinqapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SB": {
+ "name": "Solomon Adaları"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriya"
+ },
+ "SJ": {
+ "name": "Svalbard və Yan Mayen"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "TL": {
+ "name": "Şərqi Timor"
+ },
+ "KP": {
+ "name": "Şimali Koreya"
+ },
+ "MP": {
+ "name": "Şimali Mariana Adaları"
+ },
+ "LK": {
+ "name": "Şri Lanka"
+ },
+ "TJ": {
+ "name": "Tacikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TG": {
+ "name": "Toqo"
+ },
+ "TO": {
+ "name": "Tonqa"
+ },
+ "TT": {
+ "name": "Trinidad və Tobaqo"
+ },
+ "TA": {
+ "name": "Tristan da Kunya"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TC": {
+ "name": "Turks və Kaikos Adaları"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türkiya"
+ },
+ "TM": {
+ "name": "Türkmənistan"
+ },
+ "UA": {
+ "name": "Ukrayna"
+ },
+ "UG": {
+ "name": "Uqanda"
+ },
+ "WF": {
+ "name": "Uolis və Futuna"
+ },
+ "UY": {
+ "name": "Uruqvay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vyetnam"
+ },
+ "JM": {
+ "name": "Yamayka"
+ },
+ "JP": {
+ "name": "Yaponiya"
+ },
+ "NC": {
+ "name": "Yeni Kaledoniya"
+ },
+ "NZ": {
+ "name": "Yeni Zelandiya"
+ },
+ "YE": {
+ "name": "Yəmən"
+ },
+ "GR": {
+ "name": "Yunanıstan"
+ },
+ "AC": {
+ "name": "Yüksəliş Adası"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bas.json b/library/intl/resources/country/bas.json
new file mode 100644
index 000000000..4c7ff3212
--- /dev/null
+++ b/library/intl/resources/country/bas.json
@@ -0,0 +1,761 @@
+{
+ "US": {
+ "name": "Àdnà i Bilɔ̀ŋ bi Amerkà"
+ },
+ "AE": {
+ "name": "Àdnà i Bilɔ̀ŋ bi Arābìà"
+ },
+ "GB": {
+ "name": "Àdnà i Lɔ̂ŋ"
+ },
+ "AF": {
+ "name": "Àfgànìstâŋ"
+ },
+ "ZA": {
+ "name": "Àfrǐkà Sɔ̀"
+ },
+ "HT": {
+ "name": "Àitì"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Àlbanìà"
+ },
+ "DZ": {
+ "name": "Àlgerìà"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AD": {
+ "name": "Àŋdɔ̂r"
+ },
+ "AI": {
+ "name": "Àŋgiyà"
+ },
+ "AO": {
+ "name": "Àŋgolà"
+ },
+ "AG": {
+ "name": "Àŋtigà ɓɔ Bàrbudà"
+ },
+ "AR": {
+ "name": "Àrgàŋtinà"
+ },
+ "AM": {
+ "name": "Àrmenìà"
+ },
+ "AW": {
+ "name": "Àrubà"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Àzɛ̀rbajàŋ"
+ },
+ "BS": {
+ "name": "Bàhamàs"
+ },
+ "BD": {
+ "name": "Bàŋglàdɛ̂s"
+ },
+ "BH": {
+ "name": "Bàraìn"
+ },
+ "BB": {
+ "name": "Bàrbadò"
+ },
+ "BY": {
+ "name": "Bèlarùs"
+ },
+ "BZ": {
+ "name": "Bèlîs"
+ },
+ "BJ": {
+ "name": "Bènɛ̂ŋ"
+ },
+ "BE": {
+ "name": "Bɛlgyùm"
+ },
+ "BM": {
+ "name": "Bɛ̀rmudà"
+ },
+ "FK": {
+ "name": "Bìòn bi Falkland"
+ },
+ "KY": {
+ "name": "Bìòn bi Kaymàn"
+ },
+ "CK": {
+ "name": "Bìòn bi Kook"
+ },
+ "VG": {
+ "name": "Bìòn bi kɔnji bi Ŋgisì"
+ },
+ "VI": {
+ "name": "Bìòn bi kɔnji bi U.S."
+ },
+ "MH": {
+ "name": "Bìòn bi Marcàl"
+ },
+ "MP": {
+ "name": "Bìòn bi Marìanà ŋ̀ɔmbɔk"
+ },
+ "SB": {
+ "name": "Bìòn bi Salōmò"
+ },
+ "TC": {
+ "name": "Bìòn bi Tûrks nì Kalkòs"
+ },
+ "IO": {
+ "name": "Bìtèk bi Ŋgisì i Tūyɛ Īndìà"
+ },
+ "BW": {
+ "name": "Bòdsùanà"
+ },
+ "BA": {
+ "name": "Bòhnià Ɛrzègòvinà"
+ },
+ "BO": {
+ "name": "Bòlivìà"
+ },
+ "BR": {
+ "name": "Bràsîl"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bùlgarìà"
+ },
+ "BF": {
+ "name": "Bùrkìnà Fasò"
+ },
+ "BI": {
+ "name": "Bùrundì"
+ },
+ "BT": {
+ "name": "Bùtân"
+ },
+ "TD": {
+ "name": "Câd"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Dànmârk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dòmnîk"
+ },
+ "DO": {
+ "name": "Dòmnikà"
+ },
+ "EG": {
+ "name": "Ègîptò"
+ },
+ "EC": {
+ "name": "Èkwàtorìà"
+ },
+ "ER": {
+ "name": "Èrìtrěà"
+ },
+ "EE": {
+ "name": "Èstonìà"
+ },
+ "ET": {
+ "name": "Ètìopìà"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Fìlìpîn"
+ },
+ "FI": {
+ "name": "Fìnlând"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gàbɔ̂ŋ"
+ },
+ "GM": {
+ "name": "Gàmbià"
+ },
+ "GH": {
+ "name": "Ganà"
+ },
+ "GE": {
+ "name": "Gèɔrgìà"
+ },
+ "GI": {
+ "name": "Gìlbràtâr"
+ },
+ "GN": {
+ "name": "Gìnê"
+ },
+ "GW": {
+ "name": "Gìne Bìsàô"
+ },
+ "GQ": {
+ "name": "Gìne Èkwàtorìà"
+ },
+ "PG": {
+ "name": "Gìne ì Pàpu"
+ },
+ "GD": {
+ "name": "Grènadà"
+ },
+ "GR": {
+ "name": "Grǐkyà"
+ },
+ "GL": {
+ "name": "Grǐnlànd"
+ },
+ "GU": {
+ "name": "Gùâm"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gùyanà"
+ },
+ "GF": {
+ "name": "Gùyanà Pùlàsi"
+ },
+ "GP": {
+ "name": "Gwàdèlûp"
+ },
+ "GT": {
+ "name": "Gwàtèmalà"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "Indìà"
+ },
+ "ID": {
+ "name": "Indònèsià"
+ },
+ "IQ": {
+ "name": "Ìrâk"
+ },
+ "IR": {
+ "name": "Ìrâŋ"
+ },
+ "IE": {
+ "name": "Ìrlând"
+ },
+ "IS": {
+ "name": "Ìslandìà"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Isràɛ̂l"
+ },
+ "IT": {
+ "name": "Ìtalìà"
+ },
+ "JM": {
+ "name": "Jàmàikà"
+ },
+ "DE": {
+ "name": "Jamân"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jìbutì"
+ },
+ "CV": {
+ "name": "Kabwɛ᷆r"
+ },
+ "NC": {
+ "name": "Kàlèdonìà Yɔ̀ndɔ"
+ },
+ "KH": {
+ "name": "Kàmbodìà"
+ },
+ "CM": {
+ "name": "Kàmɛ̀rûn"
+ },
+ "CA": {
+ "name": "Kànadà"
+ },
+ "QA": {
+ "name": "Kàtâr"
+ },
+ "KZ": {
+ "name": "Kàzàkstâŋ"
+ },
+ "KE": {
+ "name": "Kenìà"
+ },
+ "CL": {
+ "name": "Kìlî"
+ },
+ "CN": {
+ "name": "Kinà"
+ },
+ "CY": {
+ "name": "Kiprò"
+ },
+ "KG": {
+ "name": "Kìrgìzìstàŋ"
+ },
+ "KI": {
+ "name": "Kìrìbatì"
+ },
+ "CG": {
+ "name": "Kòŋgo"
+ },
+ "CD": {
+ "name": "Kòŋgo ìkɛŋi"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kòstà Rikà"
+ },
+ "KW": {
+ "name": "Kòwêt"
+ },
+ "CO": {
+ "name": "Kɔ̀lɔmbìà"
+ },
+ "KM": {
+ "name": "Kɔ̀mɔ̂r"
+ },
+ "KP": {
+ "name": "Kɔ̀re ì Ŋ̀ɔmbɔk"
+ },
+ "KR": {
+ "name": "Kɔ̀re ì Ŋ̀wɛ̀lmbɔk"
+ },
+ "HR": {
+ "name": "Kròasìà"
+ },
+ "CU": {
+ "name": "Kubà"
+ },
+ "LV": {
+ "name": "Làdvià"
+ },
+ "LA": {
+ "name": "Làôs"
+ },
+ "LB": {
+ "name": "Lèbanòn"
+ },
+ "LS": {
+ "name": "Lesòtò"
+ },
+ "LR": {
+ "name": "Lìberìà"
+ },
+ "LY": {
+ "name": "Libìà"
+ },
+ "LI": {
+ "name": "Ligstɛntàn"
+ },
+ "LT": {
+ "name": "Lìtùanìà"
+ },
+ "LU": {
+ "name": "Lùgsàmbûr"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Màdàgàskâr"
+ },
+ "MW": {
+ "name": "Màlàwi"
+ },
+ "MV": {
+ "name": "Màldîf"
+ },
+ "MY": {
+ "name": "Màlɛ̀sìà"
+ },
+ "ML": {
+ "name": "Màli"
+ },
+ "MT": {
+ "name": "Maltà"
+ },
+ "CI": {
+ "name": "Màŋ mi Njɔ̂k"
+ },
+ "MA": {
+ "name": "Màrokò"
+ },
+ "MQ": {
+ "name": "Màrtìnîk"
+ },
+ "MK": {
+ "name": "Màsèdonìà"
+ },
+ "YT": {
+ "name": "Màyɔ̂t"
+ },
+ "MX": {
+ "name": "Mɛ̀gsîk"
+ },
+ "FM": {
+ "name": "Mìkrònesìà"
+ },
+ "MD": {
+ "name": "Moldavìà"
+ },
+ "MC": {
+ "name": "Mònakò"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MN": {
+ "name": "Mòŋgolìà"
+ },
+ "MU": {
+ "name": "Mòrîs"
+ },
+ "MR": {
+ "name": "Mòrìtanìà"
+ },
+ "MZ": {
+ "name": "Mòsàmbîk"
+ },
+ "MS": {
+ "name": "Mɔ̀ŋseràt"
+ },
+ "MM": {
+ "name": "Myànmâr"
+ },
+ "NA": {
+ "name": "Nàmibìà"
+ },
+ "NP": {
+ "name": "Nèpâl"
+ },
+ "NR": {
+ "name": "Nerù"
+ },
+ "NG": {
+ "name": "Nìgerìà"
+ },
+ "NE": {
+ "name": "Nìjɛ̂r"
+ },
+ "NI": {
+ "name": "Nìkàragwà"
+ },
+ "NU": {
+ "name": "Nìuɛ̀"
+ },
+ "NL": {
+ "name": "Ǹlɛndi"
+ },
+ "NO": {
+ "name": "Nɔ̀rvegìà"
+ },
+ "SH": {
+ "name": "Nûmpubi Ɛlēnà"
+ },
+ "KN": {
+ "name": "Nûmpubi Kîts nì Nevìs"
+ },
+ "LC": {
+ "name": "Nûmpubi Lusì"
+ },
+ "SM": {
+ "name": "Nûmpubi Māatìn"
+ },
+ "PM": {
+ "name": "Nûmpubi Petrò nì Mikèlôn"
+ },
+ "VC": {
+ "name": "Nûmpubi Vɛ̂ŋsâŋ nì grènàdîn"
+ },
+ "CF": {
+ "name": "Ŋ̀ɛm Afrīkà"
+ },
+ "OM": {
+ "name": "Òmân"
+ },
+ "NF": {
+ "name": "Òn i Nɔrfɔ̂k"
+ },
+ "AU": {
+ "name": "Òstralìà"
+ },
+ "AT": {
+ "name": "Òstrǐk"
+ },
+ "HN": {
+ "name": "Ɔ̀ŋduràs"
+ },
+ "HU": {
+ "name": "Ɔ̀ŋgriì"
+ },
+ "PK": {
+ "name": "Pàkìstân"
+ },
+ "PW": {
+ "name": "Pàlaù"
+ },
+ "PS": {
+ "name": "Pàlɛ̀htinà Hyɔ̀ŋg nì Gazà"
+ },
+ "PA": {
+ "name": "Pànàma"
+ },
+ "ES": {
+ "name": "Pànya"
+ },
+ "PY": {
+ "name": "Pàràgwê"
+ },
+ "PE": {
+ "name": "Pèrû"
+ },
+ "PN": {
+ "name": "Pìdkaìrn"
+ },
+ "PL": {
+ "name": "Pòlànd"
+ },
+ "PF": {
+ "name": "Pòlìnesìà Pùlàsi"
+ },
+ "PR": {
+ "name": "Pɔ̀rtò Rikò"
+ },
+ "PT": {
+ "name": "Pɔ̀tɔkì"
+ },
+ "FR": {
+ "name": "Pùlàsi \/ Fɛ̀lɛ̀nsi \/"
+ },
+ "RE": {
+ "name": "Rèunyɔ̂ŋ"
+ },
+ "RW": {
+ "name": "Rùandà"
+ },
+ "RO": {
+ "name": "Rùmanìà"
+ },
+ "RU": {
+ "name": "Ruslànd"
+ },
+ "SV": {
+ "name": "Sàlvàdɔ̂r"
+ },
+ "WS": {
+ "name": "Sàmoà"
+ },
+ "ST": {
+ "name": "Sào Tòme ɓɔ Prɛ̀ŋcipè"
+ },
+ "SA": {
+ "name": "Sàudi Àrabìà"
+ },
+ "SN": {
+ "name": "Sènègâl"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sèsɛ̂l"
+ },
+ "SL": {
+ "name": "Sièra Lèɔ̂n"
+ },
+ "NZ": {
+ "name": "Sìlând Yɔ̀ndɔ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Sìŋgàpûr"
+ },
+ "SY": {
+ "name": "Sirìà"
+ },
+ "SK": {
+ "name": "Slòvakìà"
+ },
+ "SI": {
+ "name": "Slòvanìà"
+ },
+ "SO": {
+ "name": "Sòmalìà"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srìlaŋkà"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sùdâŋ"
+ },
+ "SR": {
+ "name": "Sùrinâm"
+ },
+ "CH": {
+ "name": "Sùwîs"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swàzìlând"
+ },
+ "SE": {
+ "name": "Swedɛ̀n"
+ },
+ "TJ": {
+ "name": "Tàjìkìstaŋ"
+ },
+ "TZ": {
+ "name": "Tànzànià"
+ },
+ "TH": {
+ "name": "Taylànd"
+ },
+ "TW": {
+ "name": "Tàywân"
+ },
+ "TL": {
+ "name": "Tìmɔ̂r lìkòl"
+ },
+ "TG": {
+ "name": "Tògo"
+ },
+ "TK": {
+ "name": "Tòkèlaò"
+ },
+ "TO": {
+ "name": "Tɔŋgà"
+ },
+ "TT": {
+ "name": "Trìnidàd ɓɔ Tòbagò"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tùnisìà"
+ },
+ "TM": {
+ "name": "Tùrgmènìstân"
+ },
+ "TR": {
+ "name": "Tùrkây"
+ },
+ "TV": {
+ "name": "Tùvàlù"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ùgandà"
+ },
+ "UA": {
+ "name": "Ùkrɛ̌n"
+ },
+ "UY": {
+ "name": "Ùrùgwêy"
+ },
+ "UZ": {
+ "name": "Ùzbèkìstân"
+ },
+ "VU": {
+ "name": "Vànùatù"
+ },
+ "VA": {
+ "name": "Vàtìkâŋ"
+ },
+ "VE": {
+ "name": "Vènèzùelà"
+ },
+ "VN": {
+ "name": "Vìɛ̀dnâm"
+ },
+ "WF": {
+ "name": "Wàlîs nì Fùtunà"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yèmɛ̂n"
+ },
+ "JO": {
+ "name": "Yɔ̀rdanià"
+ },
+ "ZM": {
+ "name": "Zàmbià"
+ },
+ "ZW": {
+ "name": "Zìmbàbwê"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/base.json b/library/intl/resources/country/base.json
new file mode 100644
index 000000000..20100624b
--- /dev/null
+++ b/library/intl/resources/country/base.json
@@ -0,0 +1,1511 @@
+{
+ "AC": {
+ "code": "AC",
+ "three_letter_code": "ASC",
+ "telephone_code": "247"
+ },
+ "AD": {
+ "code": "AD",
+ "three_letter_code": "AND",
+ "numeric_code": "020",
+ "telephone_code": "376"
+ },
+ "AE": {
+ "code": "AE",
+ "three_letter_code": "ARE",
+ "numeric_code": "784",
+ "telephone_code": "971"
+ },
+ "AF": {
+ "code": "AF",
+ "three_letter_code": "AFG",
+ "numeric_code": "004",
+ "telephone_code": "93"
+ },
+ "AG": {
+ "code": "AG",
+ "three_letter_code": "ATG",
+ "numeric_code": "028",
+ "telephone_code": "1"
+ },
+ "AI": {
+ "code": "AI",
+ "three_letter_code": "AIA",
+ "numeric_code": "660",
+ "telephone_code": "1"
+ },
+ "AL": {
+ "code": "AL",
+ "three_letter_code": "ALB",
+ "numeric_code": "008",
+ "telephone_code": "355"
+ },
+ "AM": {
+ "code": "AM",
+ "three_letter_code": "ARM",
+ "numeric_code": "051",
+ "telephone_code": "374"
+ },
+ "AO": {
+ "code": "AO",
+ "three_letter_code": "AGO",
+ "numeric_code": "024",
+ "telephone_code": "244"
+ },
+ "AQ": {
+ "code": "AQ",
+ "three_letter_code": "ATA",
+ "numeric_code": "010",
+ "telephone_code": "672"
+ },
+ "AR": {
+ "code": "AR",
+ "three_letter_code": "ARG",
+ "numeric_code": "032",
+ "telephone_code": "54"
+ },
+ "AS": {
+ "code": "AS",
+ "three_letter_code": "ASM",
+ "numeric_code": "016",
+ "telephone_code": "1"
+ },
+ "AT": {
+ "code": "AT",
+ "three_letter_code": "AUT",
+ "numeric_code": "040",
+ "telephone_code": "43"
+ },
+ "AU": {
+ "code": "AU",
+ "three_letter_code": "AUS",
+ "numeric_code": "036",
+ "telephone_code": "61"
+ },
+ "AW": {
+ "code": "AW",
+ "three_letter_code": "ABW",
+ "numeric_code": "533",
+ "telephone_code": "297"
+ },
+ "AX": {
+ "code": "AX",
+ "three_letter_code": "ALA",
+ "numeric_code": "248",
+ "telephone_code": "358"
+ },
+ "AZ": {
+ "code": "AZ",
+ "three_letter_code": "AZE",
+ "numeric_code": "031",
+ "telephone_code": "994"
+ },
+ "BA": {
+ "code": "BA",
+ "three_letter_code": "BIH",
+ "numeric_code": "070",
+ "telephone_code": "387"
+ },
+ "BB": {
+ "code": "BB",
+ "three_letter_code": "BRB",
+ "numeric_code": "052",
+ "telephone_code": "1"
+ },
+ "BD": {
+ "code": "BD",
+ "three_letter_code": "BGD",
+ "numeric_code": "050",
+ "telephone_code": "880"
+ },
+ "BE": {
+ "code": "BE",
+ "three_letter_code": "BEL",
+ "numeric_code": "056",
+ "telephone_code": "32"
+ },
+ "BF": {
+ "code": "BF",
+ "three_letter_code": "BFA",
+ "numeric_code": "854",
+ "telephone_code": "226"
+ },
+ "BG": {
+ "code": "BG",
+ "three_letter_code": "BGR",
+ "numeric_code": "100",
+ "telephone_code": "359"
+ },
+ "BH": {
+ "code": "BH",
+ "three_letter_code": "BHR",
+ "numeric_code": "048",
+ "telephone_code": "973"
+ },
+ "BI": {
+ "code": "BI",
+ "three_letter_code": "BDI",
+ "numeric_code": "108",
+ "telephone_code": "257"
+ },
+ "BJ": {
+ "code": "BJ",
+ "three_letter_code": "BEN",
+ "numeric_code": "204",
+ "telephone_code": "229"
+ },
+ "BL": {
+ "code": "BL",
+ "three_letter_code": "BLM",
+ "numeric_code": "652",
+ "telephone_code": "590"
+ },
+ "BM": {
+ "code": "BM",
+ "three_letter_code": "BMU",
+ "numeric_code": "060",
+ "telephone_code": "1"
+ },
+ "BN": {
+ "code": "BN",
+ "three_letter_code": "BRN",
+ "numeric_code": "096",
+ "telephone_code": "673"
+ },
+ "BO": {
+ "code": "BO",
+ "three_letter_code": "BOL",
+ "numeric_code": "068",
+ "telephone_code": "591"
+ },
+ "BQ": {
+ "code": "BQ",
+ "three_letter_code": "BES",
+ "numeric_code": "535",
+ "telephone_code": "599"
+ },
+ "BR": {
+ "code": "BR",
+ "three_letter_code": "BRA",
+ "numeric_code": "076",
+ "telephone_code": "55"
+ },
+ "BS": {
+ "code": "BS",
+ "three_letter_code": "BHS",
+ "numeric_code": "044",
+ "telephone_code": "1"
+ },
+ "BT": {
+ "code": "BT",
+ "three_letter_code": "BTN",
+ "numeric_code": "064",
+ "telephone_code": "975"
+ },
+ "BW": {
+ "code": "BW",
+ "three_letter_code": "BWA",
+ "numeric_code": "072",
+ "telephone_code": "267"
+ },
+ "BY": {
+ "code": "BY",
+ "three_letter_code": "BLR",
+ "numeric_code": "112",
+ "telephone_code": "375"
+ },
+ "BZ": {
+ "code": "BZ",
+ "three_letter_code": "BLZ",
+ "numeric_code": "084",
+ "telephone_code": "501"
+ },
+ "CA": {
+ "code": "CA",
+ "three_letter_code": "CAN",
+ "numeric_code": "124",
+ "telephone_code": "1"
+ },
+ "CC": {
+ "code": "CC",
+ "three_letter_code": "CCK",
+ "numeric_code": "166",
+ "telephone_code": "61"
+ },
+ "CD": {
+ "code": "CD",
+ "three_letter_code": "COD",
+ "numeric_code": "180",
+ "telephone_code": "243"
+ },
+ "CF": {
+ "code": "CF",
+ "three_letter_code": "CAF",
+ "numeric_code": "140",
+ "telephone_code": "236"
+ },
+ "CG": {
+ "code": "CG",
+ "three_letter_code": "COG",
+ "numeric_code": "178",
+ "telephone_code": "242"
+ },
+ "CH": {
+ "code": "CH",
+ "three_letter_code": "CHE",
+ "numeric_code": "756",
+ "telephone_code": "41"
+ },
+ "CI": {
+ "code": "CI",
+ "three_letter_code": "CIV",
+ "numeric_code": "384",
+ "telephone_code": "225"
+ },
+ "CK": {
+ "code": "CK",
+ "three_letter_code": "COK",
+ "numeric_code": "184",
+ "telephone_code": "682"
+ },
+ "CL": {
+ "code": "CL",
+ "three_letter_code": "CHL",
+ "numeric_code": "152",
+ "telephone_code": "56"
+ },
+ "CM": {
+ "code": "CM",
+ "three_letter_code": "CMR",
+ "numeric_code": "120",
+ "telephone_code": "237"
+ },
+ "CN": {
+ "code": "CN",
+ "three_letter_code": "CHN",
+ "numeric_code": "156",
+ "telephone_code": "86"
+ },
+ "CO": {
+ "code": "CO",
+ "three_letter_code": "COL",
+ "numeric_code": "170",
+ "telephone_code": "57"
+ },
+ "CR": {
+ "code": "CR",
+ "three_letter_code": "CRI",
+ "numeric_code": "188",
+ "telephone_code": "506"
+ },
+ "CU": {
+ "code": "CU",
+ "three_letter_code": "CUB",
+ "numeric_code": "192",
+ "telephone_code": "53"
+ },
+ "CV": {
+ "code": "CV",
+ "three_letter_code": "CPV",
+ "numeric_code": "132",
+ "telephone_code": "238"
+ },
+ "CW": {
+ "code": "CW",
+ "three_letter_code": "CUW",
+ "numeric_code": "531",
+ "telephone_code": "599"
+ },
+ "CX": {
+ "code": "CX",
+ "three_letter_code": "CXR",
+ "numeric_code": "162",
+ "telephone_code": "61"
+ },
+ "CY": {
+ "code": "CY",
+ "three_letter_code": "CYP",
+ "numeric_code": "196",
+ "telephone_code": "357"
+ },
+ "CZ": {
+ "code": "CZ",
+ "three_letter_code": "CZE",
+ "numeric_code": "203",
+ "telephone_code": "420"
+ },
+ "DE": {
+ "code": "DE",
+ "three_letter_code": "DEU",
+ "numeric_code": "276",
+ "telephone_code": "49"
+ },
+ "DG": {
+ "code": "DG",
+ "three_letter_code": "DGA"
+ },
+ "DJ": {
+ "code": "DJ",
+ "three_letter_code": "DJI",
+ "numeric_code": "262",
+ "telephone_code": "253"
+ },
+ "DK": {
+ "code": "DK",
+ "three_letter_code": "DNK",
+ "numeric_code": "208",
+ "telephone_code": "45"
+ },
+ "DM": {
+ "code": "DM",
+ "three_letter_code": "DMA",
+ "numeric_code": "212",
+ "telephone_code": "1"
+ },
+ "DO": {
+ "code": "DO",
+ "three_letter_code": "DOM",
+ "numeric_code": "214",
+ "telephone_code": "1"
+ },
+ "DZ": {
+ "code": "DZ",
+ "three_letter_code": "DZA",
+ "numeric_code": "012",
+ "telephone_code": "213"
+ },
+ "EA": {
+ "code": "EA",
+ "telephone_code": "34"
+ },
+ "EC": {
+ "code": "EC",
+ "three_letter_code": "ECU",
+ "numeric_code": "218",
+ "telephone_code": "593"
+ },
+ "EE": {
+ "code": "EE",
+ "three_letter_code": "EST",
+ "numeric_code": "233",
+ "telephone_code": "372"
+ },
+ "EG": {
+ "code": "EG",
+ "three_letter_code": "EGY",
+ "numeric_code": "818",
+ "telephone_code": "20"
+ },
+ "EH": {
+ "code": "EH",
+ "three_letter_code": "ESH",
+ "numeric_code": "732",
+ "telephone_code": "212"
+ },
+ "ER": {
+ "code": "ER",
+ "three_letter_code": "ERI",
+ "numeric_code": "232",
+ "telephone_code": "291"
+ },
+ "ES": {
+ "code": "ES",
+ "three_letter_code": "ESP",
+ "numeric_code": "724",
+ "telephone_code": "34"
+ },
+ "ET": {
+ "code": "ET",
+ "three_letter_code": "ETH",
+ "numeric_code": "231",
+ "telephone_code": "251"
+ },
+ "FI": {
+ "code": "FI",
+ "three_letter_code": "FIN",
+ "numeric_code": "246",
+ "telephone_code": "358"
+ },
+ "FJ": {
+ "code": "FJ",
+ "three_letter_code": "FJI",
+ "numeric_code": "242",
+ "telephone_code": "679"
+ },
+ "FK": {
+ "code": "FK",
+ "three_letter_code": "FLK",
+ "numeric_code": "238",
+ "telephone_code": "500"
+ },
+ "FM": {
+ "code": "FM",
+ "three_letter_code": "FSM",
+ "numeric_code": "583",
+ "telephone_code": "691"
+ },
+ "FO": {
+ "code": "FO",
+ "three_letter_code": "FRO",
+ "numeric_code": "234",
+ "telephone_code": "298"
+ },
+ "FR": {
+ "code": "FR",
+ "three_letter_code": "FRA",
+ "numeric_code": "250",
+ "telephone_code": "33"
+ },
+ "GA": {
+ "code": "GA",
+ "three_letter_code": "GAB",
+ "numeric_code": "266",
+ "telephone_code": "241"
+ },
+ "GB": {
+ "code": "GB",
+ "three_letter_code": "GBR",
+ "numeric_code": "826",
+ "telephone_code": "44"
+ },
+ "GD": {
+ "code": "GD",
+ "three_letter_code": "GRD",
+ "numeric_code": "308",
+ "telephone_code": "1"
+ },
+ "GE": {
+ "code": "GE",
+ "three_letter_code": "GEO",
+ "numeric_code": "268",
+ "telephone_code": "995"
+ },
+ "GF": {
+ "code": "GF",
+ "three_letter_code": "GUF",
+ "numeric_code": "254",
+ "telephone_code": "594"
+ },
+ "GG": {
+ "code": "GG",
+ "three_letter_code": "GGY",
+ "numeric_code": "831",
+ "telephone_code": "44"
+ },
+ "GH": {
+ "code": "GH",
+ "three_letter_code": "GHA",
+ "numeric_code": "288",
+ "telephone_code": "233"
+ },
+ "GI": {
+ "code": "GI",
+ "three_letter_code": "GIB",
+ "numeric_code": "292",
+ "telephone_code": "350"
+ },
+ "GL": {
+ "code": "GL",
+ "three_letter_code": "GRL",
+ "numeric_code": "304",
+ "telephone_code": "299"
+ },
+ "GM": {
+ "code": "GM",
+ "three_letter_code": "GMB",
+ "numeric_code": "270",
+ "telephone_code": "220"
+ },
+ "GN": {
+ "code": "GN",
+ "three_letter_code": "GIN",
+ "numeric_code": "324",
+ "telephone_code": "224"
+ },
+ "GP": {
+ "code": "GP",
+ "three_letter_code": "GLP",
+ "numeric_code": "312",
+ "telephone_code": "590"
+ },
+ "GQ": {
+ "code": "GQ",
+ "three_letter_code": "GNQ",
+ "numeric_code": "226",
+ "telephone_code": "240"
+ },
+ "GR": {
+ "code": "GR",
+ "three_letter_code": "GRC",
+ "numeric_code": "300",
+ "telephone_code": "30"
+ },
+ "GS": {
+ "code": "GS",
+ "three_letter_code": "SGS",
+ "numeric_code": "239",
+ "telephone_code": "500"
+ },
+ "GT": {
+ "code": "GT",
+ "three_letter_code": "GTM",
+ "numeric_code": "320",
+ "telephone_code": "502"
+ },
+ "GU": {
+ "code": "GU",
+ "three_letter_code": "GUM",
+ "numeric_code": "316",
+ "telephone_code": "1"
+ },
+ "GW": {
+ "code": "GW",
+ "three_letter_code": "GNB",
+ "numeric_code": "624",
+ "telephone_code": "245"
+ },
+ "GY": {
+ "code": "GY",
+ "three_letter_code": "GUY",
+ "numeric_code": "328",
+ "telephone_code": "592"
+ },
+ "HK": {
+ "code": "HK",
+ "three_letter_code": "HKG",
+ "numeric_code": "344",
+ "telephone_code": "852"
+ },
+ "HN": {
+ "code": "HN",
+ "three_letter_code": "HND",
+ "numeric_code": "340",
+ "telephone_code": "504"
+ },
+ "HR": {
+ "code": "HR",
+ "three_letter_code": "HRV",
+ "numeric_code": "191",
+ "telephone_code": "385"
+ },
+ "HT": {
+ "code": "HT",
+ "three_letter_code": "HTI",
+ "numeric_code": "332",
+ "telephone_code": "509"
+ },
+ "HU": {
+ "code": "HU",
+ "three_letter_code": "HUN",
+ "numeric_code": "348",
+ "telephone_code": "36"
+ },
+ "IC": {
+ "code": "IC",
+ "telephone_code": "34"
+ },
+ "ID": {
+ "code": "ID",
+ "three_letter_code": "IDN",
+ "numeric_code": "360",
+ "telephone_code": "62"
+ },
+ "IE": {
+ "code": "IE",
+ "three_letter_code": "IRL",
+ "numeric_code": "372",
+ "telephone_code": "353"
+ },
+ "IL": {
+ "code": "IL",
+ "three_letter_code": "ISR",
+ "numeric_code": "376",
+ "telephone_code": "972"
+ },
+ "IM": {
+ "code": "IM",
+ "three_letter_code": "IMN",
+ "numeric_code": "833",
+ "telephone_code": "44"
+ },
+ "IN": {
+ "code": "IN",
+ "three_letter_code": "IND",
+ "numeric_code": "356",
+ "telephone_code": "91"
+ },
+ "IO": {
+ "code": "IO",
+ "three_letter_code": "IOT",
+ "numeric_code": "086",
+ "telephone_code": "246"
+ },
+ "IQ": {
+ "code": "IQ",
+ "three_letter_code": "IRQ",
+ "numeric_code": "368",
+ "telephone_code": "964"
+ },
+ "IR": {
+ "code": "IR",
+ "three_letter_code": "IRN",
+ "numeric_code": "364",
+ "telephone_code": "98"
+ },
+ "IS": {
+ "code": "IS",
+ "three_letter_code": "ISL",
+ "numeric_code": "352",
+ "telephone_code": "354"
+ },
+ "IT": {
+ "code": "IT",
+ "three_letter_code": "ITA",
+ "numeric_code": "380",
+ "telephone_code": "39"
+ },
+ "JE": {
+ "code": "JE",
+ "three_letter_code": "JEY",
+ "numeric_code": "832",
+ "telephone_code": "44"
+ },
+ "JM": {
+ "code": "JM",
+ "three_letter_code": "JAM",
+ "numeric_code": "388",
+ "telephone_code": "1"
+ },
+ "JO": {
+ "code": "JO",
+ "three_letter_code": "JOR",
+ "numeric_code": "400",
+ "telephone_code": "962"
+ },
+ "JP": {
+ "code": "JP",
+ "three_letter_code": "JPN",
+ "numeric_code": "392",
+ "telephone_code": "81"
+ },
+ "KE": {
+ "code": "KE",
+ "three_letter_code": "KEN",
+ "numeric_code": "404",
+ "telephone_code": "254"
+ },
+ "KG": {
+ "code": "KG",
+ "three_letter_code": "KGZ",
+ "numeric_code": "417",
+ "telephone_code": "996"
+ },
+ "KH": {
+ "code": "KH",
+ "three_letter_code": "KHM",
+ "numeric_code": "116",
+ "telephone_code": "855"
+ },
+ "KI": {
+ "code": "KI",
+ "three_letter_code": "KIR",
+ "numeric_code": "296",
+ "telephone_code": "686"
+ },
+ "KM": {
+ "code": "KM",
+ "three_letter_code": "COM",
+ "numeric_code": "174",
+ "telephone_code": "269"
+ },
+ "KN": {
+ "code": "KN",
+ "three_letter_code": "KNA",
+ "numeric_code": "659",
+ "telephone_code": "1"
+ },
+ "KP": {
+ "code": "KP",
+ "three_letter_code": "PRK",
+ "numeric_code": "408",
+ "telephone_code": "850"
+ },
+ "KR": {
+ "code": "KR",
+ "three_letter_code": "KOR",
+ "numeric_code": "410",
+ "telephone_code": "82"
+ },
+ "KW": {
+ "code": "KW",
+ "three_letter_code": "KWT",
+ "numeric_code": "414",
+ "telephone_code": "965"
+ },
+ "KY": {
+ "code": "KY",
+ "three_letter_code": "CYM",
+ "numeric_code": "136",
+ "telephone_code": "1"
+ },
+ "KZ": {
+ "code": "KZ",
+ "three_letter_code": "KAZ",
+ "numeric_code": "398",
+ "telephone_code": "7"
+ },
+ "LA": {
+ "code": "LA",
+ "three_letter_code": "LAO",
+ "numeric_code": "418",
+ "telephone_code": "856"
+ },
+ "LB": {
+ "code": "LB",
+ "three_letter_code": "LBN",
+ "numeric_code": "422",
+ "telephone_code": "961"
+ },
+ "LC": {
+ "code": "LC",
+ "three_letter_code": "LCA",
+ "numeric_code": "662",
+ "telephone_code": "1"
+ },
+ "LI": {
+ "code": "LI",
+ "three_letter_code": "LIE",
+ "numeric_code": "438",
+ "telephone_code": "423"
+ },
+ "LK": {
+ "code": "LK",
+ "three_letter_code": "LKA",
+ "numeric_code": "144",
+ "telephone_code": "94"
+ },
+ "LR": {
+ "code": "LR",
+ "three_letter_code": "LBR",
+ "numeric_code": "430",
+ "telephone_code": "231"
+ },
+ "LS": {
+ "code": "LS",
+ "three_letter_code": "LSO",
+ "numeric_code": "426",
+ "telephone_code": "266"
+ },
+ "LT": {
+ "code": "LT",
+ "three_letter_code": "LTU",
+ "numeric_code": "440",
+ "telephone_code": "370"
+ },
+ "LU": {
+ "code": "LU",
+ "three_letter_code": "LUX",
+ "numeric_code": "442",
+ "telephone_code": "352"
+ },
+ "LV": {
+ "code": "LV",
+ "three_letter_code": "LVA",
+ "numeric_code": "428",
+ "telephone_code": "371"
+ },
+ "LY": {
+ "code": "LY",
+ "three_letter_code": "LBY",
+ "numeric_code": "434",
+ "telephone_code": "218"
+ },
+ "MA": {
+ "code": "MA",
+ "three_letter_code": "MAR",
+ "numeric_code": "504",
+ "telephone_code": "212"
+ },
+ "MC": {
+ "code": "MC",
+ "three_letter_code": "MCO",
+ "numeric_code": "492",
+ "telephone_code": "377"
+ },
+ "MD": {
+ "code": "MD",
+ "three_letter_code": "MDA",
+ "numeric_code": "498",
+ "telephone_code": "373"
+ },
+ "ME": {
+ "code": "ME",
+ "three_letter_code": "MNE",
+ "numeric_code": "499",
+ "telephone_code": "382"
+ },
+ "MF": {
+ "code": "MF",
+ "three_letter_code": "MAF",
+ "numeric_code": "663",
+ "telephone_code": "590"
+ },
+ "MG": {
+ "code": "MG",
+ "three_letter_code": "MDG",
+ "numeric_code": "450",
+ "telephone_code": "261"
+ },
+ "MH": {
+ "code": "MH",
+ "three_letter_code": "MHL",
+ "numeric_code": "584",
+ "telephone_code": "692"
+ },
+ "MK": {
+ "code": "MK",
+ "three_letter_code": "MKD",
+ "numeric_code": "807",
+ "telephone_code": "389"
+ },
+ "ML": {
+ "code": "ML",
+ "three_letter_code": "MLI",
+ "numeric_code": "466",
+ "telephone_code": "223"
+ },
+ "MM": {
+ "code": "MM",
+ "three_letter_code": "MMR",
+ "numeric_code": "104",
+ "telephone_code": "95"
+ },
+ "MN": {
+ "code": "MN",
+ "three_letter_code": "MNG",
+ "numeric_code": "496",
+ "telephone_code": "976"
+ },
+ "MO": {
+ "code": "MO",
+ "three_letter_code": "MAC",
+ "numeric_code": "446",
+ "telephone_code": "853"
+ },
+ "MP": {
+ "code": "MP",
+ "three_letter_code": "MNP",
+ "numeric_code": "580",
+ "telephone_code": "1"
+ },
+ "MQ": {
+ "code": "MQ",
+ "three_letter_code": "MTQ",
+ "numeric_code": "474",
+ "telephone_code": "596"
+ },
+ "MR": {
+ "code": "MR",
+ "three_letter_code": "MRT",
+ "numeric_code": "478",
+ "telephone_code": "222"
+ },
+ "MS": {
+ "code": "MS",
+ "three_letter_code": "MSR",
+ "numeric_code": "500",
+ "telephone_code": "1"
+ },
+ "MT": {
+ "code": "MT",
+ "three_letter_code": "MLT",
+ "numeric_code": "470",
+ "telephone_code": "356"
+ },
+ "MU": {
+ "code": "MU",
+ "three_letter_code": "MUS",
+ "numeric_code": "480",
+ "telephone_code": "230"
+ },
+ "MV": {
+ "code": "MV",
+ "three_letter_code": "MDV",
+ "numeric_code": "462",
+ "telephone_code": "960"
+ },
+ "MW": {
+ "code": "MW",
+ "three_letter_code": "MWI",
+ "numeric_code": "454",
+ "telephone_code": "265"
+ },
+ "MX": {
+ "code": "MX",
+ "three_letter_code": "MEX",
+ "numeric_code": "484",
+ "telephone_code": "52"
+ },
+ "MY": {
+ "code": "MY",
+ "three_letter_code": "MYS",
+ "numeric_code": "458",
+ "telephone_code": "60"
+ },
+ "MZ": {
+ "code": "MZ",
+ "three_letter_code": "MOZ",
+ "numeric_code": "508",
+ "telephone_code": "258"
+ },
+ "NA": {
+ "code": "NA",
+ "three_letter_code": "NAM",
+ "numeric_code": "516",
+ "telephone_code": "264"
+ },
+ "NC": {
+ "code": "NC",
+ "three_letter_code": "NCL",
+ "numeric_code": "540",
+ "telephone_code": "687"
+ },
+ "NE": {
+ "code": "NE",
+ "three_letter_code": "NER",
+ "numeric_code": "562",
+ "telephone_code": "227"
+ },
+ "NF": {
+ "code": "NF",
+ "three_letter_code": "NFK",
+ "numeric_code": "574",
+ "telephone_code": "672"
+ },
+ "NG": {
+ "code": "NG",
+ "three_letter_code": "NGA",
+ "numeric_code": "566",
+ "telephone_code": "234"
+ },
+ "NI": {
+ "code": "NI",
+ "three_letter_code": "NIC",
+ "numeric_code": "558",
+ "telephone_code": "505"
+ },
+ "NL": {
+ "code": "NL",
+ "three_letter_code": "NLD",
+ "numeric_code": "528",
+ "telephone_code": "31"
+ },
+ "NO": {
+ "code": "NO",
+ "three_letter_code": "NOR",
+ "numeric_code": "578",
+ "telephone_code": "47"
+ },
+ "NP": {
+ "code": "NP",
+ "three_letter_code": "NPL",
+ "numeric_code": "524",
+ "telephone_code": "977"
+ },
+ "NR": {
+ "code": "NR",
+ "three_letter_code": "NRU",
+ "numeric_code": "520",
+ "telephone_code": "674"
+ },
+ "NU": {
+ "code": "NU",
+ "three_letter_code": "NIU",
+ "numeric_code": "570",
+ "telephone_code": "683"
+ },
+ "NZ": {
+ "code": "NZ",
+ "three_letter_code": "NZL",
+ "numeric_code": "554",
+ "telephone_code": "64"
+ },
+ "OM": {
+ "code": "OM",
+ "three_letter_code": "OMN",
+ "numeric_code": "512",
+ "telephone_code": "968"
+ },
+ "PA": {
+ "code": "PA",
+ "three_letter_code": "PAN",
+ "numeric_code": "591",
+ "telephone_code": "507"
+ },
+ "PE": {
+ "code": "PE",
+ "three_letter_code": "PER",
+ "numeric_code": "604",
+ "telephone_code": "51"
+ },
+ "PF": {
+ "code": "PF",
+ "three_letter_code": "PYF",
+ "numeric_code": "258",
+ "telephone_code": "689"
+ },
+ "PG": {
+ "code": "PG",
+ "three_letter_code": "PNG",
+ "numeric_code": "598",
+ "telephone_code": "675"
+ },
+ "PH": {
+ "code": "PH",
+ "three_letter_code": "PHL",
+ "numeric_code": "608",
+ "telephone_code": "63"
+ },
+ "PK": {
+ "code": "PK",
+ "three_letter_code": "PAK",
+ "numeric_code": "586",
+ "telephone_code": "92"
+ },
+ "PL": {
+ "code": "PL",
+ "three_letter_code": "POL",
+ "numeric_code": "616",
+ "telephone_code": "48"
+ },
+ "PM": {
+ "code": "PM",
+ "three_letter_code": "SPM",
+ "numeric_code": "666",
+ "telephone_code": "508"
+ },
+ "PN": {
+ "code": "PN",
+ "three_letter_code": "PCN",
+ "numeric_code": "612",
+ "telephone_code": "870"
+ },
+ "PR": {
+ "code": "PR",
+ "three_letter_code": "PRI",
+ "numeric_code": "630",
+ "telephone_code": "1"
+ },
+ "PS": {
+ "code": "PS",
+ "three_letter_code": "PSE",
+ "numeric_code": "275",
+ "telephone_code": "970"
+ },
+ "PT": {
+ "code": "PT",
+ "three_letter_code": "PRT",
+ "numeric_code": "620",
+ "telephone_code": "351"
+ },
+ "PW": {
+ "code": "PW",
+ "three_letter_code": "PLW",
+ "numeric_code": "585",
+ "telephone_code": "680"
+ },
+ "PY": {
+ "code": "PY",
+ "three_letter_code": "PRY",
+ "numeric_code": "600",
+ "telephone_code": "595"
+ },
+ "QA": {
+ "code": "QA",
+ "three_letter_code": "QAT",
+ "numeric_code": "634",
+ "telephone_code": "974"
+ },
+ "RE": {
+ "code": "RE",
+ "three_letter_code": "REU",
+ "numeric_code": "638",
+ "telephone_code": "262"
+ },
+ "RO": {
+ "code": "RO",
+ "three_letter_code": "ROU",
+ "numeric_code": "642",
+ "telephone_code": "40"
+ },
+ "RS": {
+ "code": "RS",
+ "three_letter_code": "SRB",
+ "numeric_code": "688",
+ "telephone_code": "381"
+ },
+ "RU": {
+ "code": "RU",
+ "three_letter_code": "RUS",
+ "numeric_code": "643",
+ "telephone_code": "7"
+ },
+ "RW": {
+ "code": "RW",
+ "three_letter_code": "RWA",
+ "numeric_code": "646",
+ "telephone_code": "250"
+ },
+ "SA": {
+ "code": "SA",
+ "three_letter_code": "SAU",
+ "numeric_code": "682",
+ "telephone_code": "966"
+ },
+ "SB": {
+ "code": "SB",
+ "three_letter_code": "SLB",
+ "numeric_code": "090",
+ "telephone_code": "677"
+ },
+ "SC": {
+ "code": "SC",
+ "three_letter_code": "SYC",
+ "numeric_code": "690",
+ "telephone_code": "248"
+ },
+ "SD": {
+ "code": "SD",
+ "three_letter_code": "SDN",
+ "numeric_code": "729",
+ "telephone_code": "249"
+ },
+ "SE": {
+ "code": "SE",
+ "three_letter_code": "SWE",
+ "numeric_code": "752",
+ "telephone_code": "46"
+ },
+ "SG": {
+ "code": "SG",
+ "three_letter_code": "SGP",
+ "numeric_code": "702",
+ "telephone_code": "65"
+ },
+ "SH": {
+ "code": "SH",
+ "three_letter_code": "SHN",
+ "numeric_code": "654",
+ "telephone_code": "290"
+ },
+ "SI": {
+ "code": "SI",
+ "three_letter_code": "SVN",
+ "numeric_code": "705",
+ "telephone_code": "386"
+ },
+ "SJ": {
+ "code": "SJ",
+ "three_letter_code": "SJM",
+ "numeric_code": "744",
+ "telephone_code": "47"
+ },
+ "SK": {
+ "code": "SK",
+ "three_letter_code": "SVK",
+ "numeric_code": "703",
+ "telephone_code": "421"
+ },
+ "SL": {
+ "code": "SL",
+ "three_letter_code": "SLE",
+ "numeric_code": "694",
+ "telephone_code": "232"
+ },
+ "SM": {
+ "code": "SM",
+ "three_letter_code": "SMR",
+ "numeric_code": "674",
+ "telephone_code": "378"
+ },
+ "SN": {
+ "code": "SN",
+ "three_letter_code": "SEN",
+ "numeric_code": "686",
+ "telephone_code": "221"
+ },
+ "SO": {
+ "code": "SO",
+ "three_letter_code": "SOM",
+ "numeric_code": "706",
+ "telephone_code": "252"
+ },
+ "SR": {
+ "code": "SR",
+ "three_letter_code": "SUR",
+ "numeric_code": "740",
+ "telephone_code": "597"
+ },
+ "SS": {
+ "code": "SS",
+ "three_letter_code": "SSD",
+ "numeric_code": "728",
+ "telephone_code": "211"
+ },
+ "ST": {
+ "code": "ST",
+ "three_letter_code": "STP",
+ "numeric_code": "678",
+ "telephone_code": "239"
+ },
+ "SV": {
+ "code": "SV",
+ "three_letter_code": "SLV",
+ "numeric_code": "222",
+ "telephone_code": "503"
+ },
+ "SX": {
+ "code": "SX",
+ "three_letter_code": "SXM",
+ "numeric_code": "534",
+ "telephone_code": "1"
+ },
+ "SY": {
+ "code": "SY",
+ "three_letter_code": "SYR",
+ "numeric_code": "760",
+ "telephone_code": "963"
+ },
+ "SZ": {
+ "code": "SZ",
+ "three_letter_code": "SWZ",
+ "numeric_code": "748",
+ "telephone_code": "268"
+ },
+ "TA": {
+ "code": "TA",
+ "three_letter_code": "TAA"
+ },
+ "TC": {
+ "code": "TC",
+ "three_letter_code": "TCA",
+ "numeric_code": "796",
+ "telephone_code": "1"
+ },
+ "TD": {
+ "code": "TD",
+ "three_letter_code": "TCD",
+ "numeric_code": "148",
+ "telephone_code": "235"
+ },
+ "TF": {
+ "code": "TF",
+ "three_letter_code": "ATF",
+ "numeric_code": "260",
+ "telephone_code": "262"
+ },
+ "TG": {
+ "code": "TG",
+ "three_letter_code": "TGO",
+ "numeric_code": "768",
+ "telephone_code": "228"
+ },
+ "TH": {
+ "code": "TH",
+ "three_letter_code": "THA",
+ "numeric_code": "764",
+ "telephone_code": "66"
+ },
+ "TJ": {
+ "code": "TJ",
+ "three_letter_code": "TJK",
+ "numeric_code": "762",
+ "telephone_code": "992"
+ },
+ "TK": {
+ "code": "TK",
+ "three_letter_code": "TKL",
+ "numeric_code": "772",
+ "telephone_code": "690"
+ },
+ "TL": {
+ "code": "TL",
+ "three_letter_code": "TLS",
+ "numeric_code": "626",
+ "telephone_code": "670"
+ },
+ "TM": {
+ "code": "TM",
+ "three_letter_code": "TKM",
+ "numeric_code": "795",
+ "telephone_code": "993"
+ },
+ "TN": {
+ "code": "TN",
+ "three_letter_code": "TUN",
+ "numeric_code": "788",
+ "telephone_code": "216"
+ },
+ "TO": {
+ "code": "TO",
+ "three_letter_code": "TON",
+ "numeric_code": "776",
+ "telephone_code": "676"
+ },
+ "TR": {
+ "code": "TR",
+ "three_letter_code": "TUR",
+ "numeric_code": "792",
+ "telephone_code": "90"
+ },
+ "TT": {
+ "code": "TT",
+ "three_letter_code": "TTO",
+ "numeric_code": "780",
+ "telephone_code": "1"
+ },
+ "TV": {
+ "code": "TV",
+ "three_letter_code": "TUV",
+ "numeric_code": "798",
+ "telephone_code": "688"
+ },
+ "TW": {
+ "code": "TW",
+ "three_letter_code": "TWN",
+ "numeric_code": "158",
+ "telephone_code": "886"
+ },
+ "TZ": {
+ "code": "TZ",
+ "three_letter_code": "TZA",
+ "numeric_code": "834",
+ "telephone_code": "255"
+ },
+ "UA": {
+ "code": "UA",
+ "three_letter_code": "UKR",
+ "numeric_code": "804",
+ "telephone_code": "380"
+ },
+ "UG": {
+ "code": "UG",
+ "three_letter_code": "UGA",
+ "numeric_code": "800",
+ "telephone_code": "256"
+ },
+ "UM": {
+ "code": "UM",
+ "three_letter_code": "UMI",
+ "numeric_code": "581",
+ "telephone_code": "1"
+ },
+ "US": {
+ "code": "US",
+ "three_letter_code": "USA",
+ "numeric_code": "840",
+ "telephone_code": "1"
+ },
+ "UY": {
+ "code": "UY",
+ "three_letter_code": "URY",
+ "numeric_code": "858",
+ "telephone_code": "598"
+ },
+ "UZ": {
+ "code": "UZ",
+ "three_letter_code": "UZB",
+ "numeric_code": "860",
+ "telephone_code": "998"
+ },
+ "VA": {
+ "code": "VA",
+ "three_letter_code": "VAT",
+ "numeric_code": "336",
+ "telephone_code": "39"
+ },
+ "VC": {
+ "code": "VC",
+ "three_letter_code": "VCT",
+ "numeric_code": "670",
+ "telephone_code": "1"
+ },
+ "VE": {
+ "code": "VE",
+ "three_letter_code": "VEN",
+ "numeric_code": "862",
+ "telephone_code": "58"
+ },
+ "VG": {
+ "code": "VG",
+ "three_letter_code": "VGB",
+ "numeric_code": "092",
+ "telephone_code": "1"
+ },
+ "VI": {
+ "code": "VI",
+ "three_letter_code": "VIR",
+ "numeric_code": "850",
+ "telephone_code": "1"
+ },
+ "VN": {
+ "code": "VN",
+ "three_letter_code": "VNM",
+ "numeric_code": "704",
+ "telephone_code": "84"
+ },
+ "VU": {
+ "code": "VU",
+ "three_letter_code": "VUT",
+ "numeric_code": "548",
+ "telephone_code": "678"
+ },
+ "WF": {
+ "code": "WF",
+ "three_letter_code": "WLF",
+ "numeric_code": "876",
+ "telephone_code": "681"
+ },
+ "WS": {
+ "code": "WS",
+ "three_letter_code": "WSM",
+ "numeric_code": "882",
+ "telephone_code": "685"
+ },
+ "XK": {
+ "code": "XK",
+ "three_letter_code": "XKK",
+ "numeric_code": "983",
+ "telephone_code": "381"
+ },
+ "YE": {
+ "code": "YE",
+ "three_letter_code": "YEM",
+ "numeric_code": "887",
+ "telephone_code": "967"
+ },
+ "YT": {
+ "code": "YT",
+ "three_letter_code": "MYT",
+ "numeric_code": "175",
+ "telephone_code": "262"
+ },
+ "ZA": {
+ "code": "ZA",
+ "three_letter_code": "ZAF",
+ "numeric_code": "710",
+ "telephone_code": "27"
+ },
+ "ZM": {
+ "code": "ZM",
+ "three_letter_code": "ZMB",
+ "numeric_code": "894",
+ "telephone_code": "260"
+ },
+ "ZW": {
+ "code": "ZW",
+ "three_letter_code": "ZWE",
+ "numeric_code": "716",
+ "telephone_code": "263"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/be.json b/library/intl/resources/country/be.json
new file mode 100644
index 000000000..ad9fe43c0
--- /dev/null
+++ b/library/intl/resources/country/be.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "AE": {
+ "name": "Аб’яднаныя Арабскія Эміраты"
+ },
+ "AZ": {
+ "name": "Азербайджан"
+ },
+ "AX": {
+ "name": "Аландскія астравы"
+ },
+ "AL": {
+ "name": "Албанія"
+ },
+ "DZ": {
+ "name": "Алжыр"
+ },
+ "OM": {
+ "name": "Аман"
+ },
+ "AS": {
+ "name": "Амерыканскае Самоа"
+ },
+ "VI": {
+ "name": "Амерыканскія Віргінскія астравы"
+ },
+ "AI": {
+ "name": "Ангілья"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андора"
+ },
+ "AQ": {
+ "name": "Антарктыка"
+ },
+ "AG": {
+ "name": "Антыгуа і Барбуда"
+ },
+ "AR": {
+ "name": "Аргенціна"
+ },
+ "AM": {
+ "name": "Арменія"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "CK": {
+ "name": "Астравы Кука"
+ },
+ "PN": {
+ "name": "Астравы Піткэрн"
+ },
+ "AU": {
+ "name": "Аўстралія"
+ },
+ "AT": {
+ "name": "Аўстрыя"
+ },
+ "AF": {
+ "name": "Афганістан"
+ },
+ "BS": {
+ "name": "Багамы"
+ },
+ "BG": {
+ "name": "Балгарыя"
+ },
+ "BO": {
+ "name": "Балівія"
+ },
+ "BD": {
+ "name": "Бангладэш"
+ },
+ "BB": {
+ "name": "Барбадас"
+ },
+ "BW": {
+ "name": "Батсвана"
+ },
+ "BH": {
+ "name": "Бахрэйн"
+ },
+ "BY": {
+ "name": "Беларусь"
+ },
+ "BZ": {
+ "name": "Беліз"
+ },
+ "BE": {
+ "name": "Бельгія"
+ },
+ "BJ": {
+ "name": "Бенін"
+ },
+ "BM": {
+ "name": "Бермудскія астравы"
+ },
+ "BA": {
+ "name": "Боснія і Герцагавіна"
+ },
+ "BR": {
+ "name": "Бразілія"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "IO": {
+ "name": "Брытанская тэрыторыя ў Індыйскім акіяне"
+ },
+ "VG": {
+ "name": "Брытанскія Віргінскія астравы"
+ },
+ "BF": {
+ "name": "Буркіна-Фасо"
+ },
+ "BI": {
+ "name": "Бурундзі"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VN": {
+ "name": "В’етнам"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватыкан"
+ },
+ "HU": {
+ "name": "Венгрыя"
+ },
+ "VE": {
+ "name": "Венесуэла"
+ },
+ "GG": {
+ "name": "Востраў Гернсі"
+ },
+ "JE": {
+ "name": "Востраў Джэрсі"
+ },
+ "CW": {
+ "name": "Востраў Кюрасаа"
+ },
+ "YT": {
+ "name": "Востраў Маёта"
+ },
+ "IM": {
+ "name": "Востраў Мэн"
+ },
+ "NF": {
+ "name": "Востраў Норфалк"
+ },
+ "CX": {
+ "name": "Востраў Ражства"
+ },
+ "GB": {
+ "name": "Вялікабрытанія"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаіці"
+ },
+ "GM": {
+ "name": "Гамбія"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "HN": {
+ "name": "Гандурас"
+ },
+ "GY": {
+ "name": "Гаяна"
+ },
+ "GP": {
+ "name": "Гвадэлупа"
+ },
+ "GT": {
+ "name": "Гватэмала"
+ },
+ "GN": {
+ "name": "Гвінея"
+ },
+ "GW": {
+ "name": "Гвінея-Бісау"
+ },
+ "DE": {
+ "name": "Германія"
+ },
+ "GI": {
+ "name": "Гібралтар"
+ },
+ "HK": {
+ "name": "Гон-Конг, Кітай (САР)"
+ },
+ "GE": {
+ "name": "Грузія"
+ },
+ "GD": {
+ "name": "Грэнада"
+ },
+ "GL": {
+ "name": "Грэнландыя"
+ },
+ "GR": {
+ "name": "Грэцыя"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DM": {
+ "name": "Дамініка"
+ },
+ "DO": {
+ "name": "Дамініканская Рэспубліка"
+ },
+ "DK": {
+ "name": "Данія"
+ },
+ "DJ": {
+ "name": "Джыбуці"
+ },
+ "EG": {
+ "name": "Егіпет"
+ },
+ "YE": {
+ "name": "Емен"
+ },
+ "ZM": {
+ "name": "Замбія"
+ },
+ "EH": {
+ "name": "Заходняя Сахара"
+ },
+ "ZW": {
+ "name": "Зімбабвэ"
+ },
+ "US": {
+ "name": "Злучаныя Штаты Амерыкі"
+ },
+ "JO": {
+ "name": "Іарданія"
+ },
+ "IL": {
+ "name": "Ізраіль"
+ },
+ "ID": {
+ "name": "Інданезія"
+ },
+ "IN": {
+ "name": "Індыя"
+ },
+ "IQ": {
+ "name": "Ірак"
+ },
+ "IR": {
+ "name": "Іран"
+ },
+ "IE": {
+ "name": "Ірландыя"
+ },
+ "IS": {
+ "name": "Ісландыя"
+ },
+ "ES": {
+ "name": "Іспанія"
+ },
+ "IT": {
+ "name": "Італія"
+ },
+ "CV": {
+ "name": "Каба-Вердэ"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кайманавы астравы"
+ },
+ "CC": {
+ "name": "Какосавыя астравы"
+ },
+ "CO": {
+ "name": "Калумбія"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "KM": {
+ "name": "Каморскія Астравы"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенія"
+ },
+ "CY": {
+ "name": "Кіпр"
+ },
+ "KI": {
+ "name": "Кірыбаці"
+ },
+ "CN": {
+ "name": "Кітай"
+ },
+ "CG": {
+ "name": "Конга"
+ },
+ "CD": {
+ "name": "Конга, Дэмакратычная Рэспубліка"
+ },
+ "CR": {
+ "name": "Коста-Рыка"
+ },
+ "CI": {
+ "name": "Кот-д’Івуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "KG": {
+ "name": "Кыргызстан"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвія"
+ },
+ "LS": {
+ "name": "Лесота"
+ },
+ "LR": {
+ "name": "Ліберыя"
+ },
+ "LB": {
+ "name": "Ліван"
+ },
+ "LY": {
+ "name": "Лівія"
+ },
+ "LT": {
+ "name": "Літва"
+ },
+ "LI": {
+ "name": "Ліхтэнштэйн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MM": {
+ "name": "М’янма"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "MZ": {
+ "name": "Мазамбік"
+ },
+ "MO": {
+ "name": "Макао, Кітай (САР)"
+ },
+ "MK": {
+ "name": "Македонія, БЮР"
+ },
+ "MW": {
+ "name": "Малаві"
+ },
+ "MY": {
+ "name": "Малайзія"
+ },
+ "MD": {
+ "name": "Малдова"
+ },
+ "ML": {
+ "name": "Малі"
+ },
+ "MV": {
+ "name": "Мальдывы"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MC": {
+ "name": "Манака"
+ },
+ "MN": {
+ "name": "Манголія"
+ },
+ "MS": {
+ "name": "Мантсерат"
+ },
+ "MA": {
+ "name": "Марока"
+ },
+ "MQ": {
+ "name": "Марцініка"
+ },
+ "MH": {
+ "name": "Маршалавы Астравы"
+ },
+ "MU": {
+ "name": "Маўрыкій"
+ },
+ "MR": {
+ "name": "Маўрытанія"
+ },
+ "MX": {
+ "name": "Мексіка"
+ },
+ "FM": {
+ "name": "Мікранезія"
+ },
+ "NA": {
+ "name": "Намібія"
+ },
+ "NO": {
+ "name": "Нарвегія"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нігер"
+ },
+ "NG": {
+ "name": "Нігерыя"
+ },
+ "NL": {
+ "name": "Нідэрланды"
+ },
+ "NI": {
+ "name": "Нікарагуа"
+ },
+ "NU": {
+ "name": "Ніуэ"
+ },
+ "NZ": {
+ "name": "Новая Зеландыя"
+ },
+ "NC": {
+ "name": "Новая Каледонія"
+ },
+ "PK": {
+ "name": "Пакістан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестынскія тэрыторыі"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа — Новая Гвінея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PT": {
+ "name": "Партугалія"
+ },
+ "ZA": {
+ "name": "Паўднёва-Афрыканская Рэспубліка"
+ },
+ "GS": {
+ "name": "Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы"
+ },
+ "KR": {
+ "name": "Паўднёвая Карэя"
+ },
+ "SS": {
+ "name": "Паўднёвы Судан"
+ },
+ "KP": {
+ "name": "Паўночная Карэя"
+ },
+ "MP": {
+ "name": "Паўночныя Марыянскія астравы"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PL": {
+ "name": "Польшча"
+ },
+ "PR": {
+ "name": "Пуэрта-Рыка"
+ },
+ "RU": {
+ "name": "Расія"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румынія"
+ },
+ "RE": {
+ "name": "Рэюньён"
+ },
+ "SB": {
+ "name": "Саламонавы Астравы"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "SO": {
+ "name": "Самалі"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марына"
+ },
+ "ST": {
+ "name": "Сан-Тамэ і Прынсіпі"
+ },
+ "SA": {
+ "name": "Саудаўская Аравія"
+ },
+ "SZ": {
+ "name": "Свазіленд"
+ },
+ "SJ": {
+ "name": "Свальбард (Паўночна-Усходняя Зямля) і Ян-Маен"
+ },
+ "SH": {
+ "name": "Святой Алены, Востраў"
+ },
+ "SC": {
+ "name": "Сейшэльскія Астравы"
+ },
+ "BL": {
+ "name": "Сен-Бартэльмі"
+ },
+ "PM": {
+ "name": "Сен-П’ер і Мікелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-Вінсент і Грэнадзіны"
+ },
+ "KN": {
+ "name": "Сент-Кітс і Невіс"
+ },
+ "LC": {
+ "name": "Сент-Люсія"
+ },
+ "RS": {
+ "name": "Сербія"
+ },
+ "SG": {
+ "name": "Сінгапур"
+ },
+ "SY": {
+ "name": "Сірыя"
+ },
+ "SK": {
+ "name": "Славакія"
+ },
+ "SI": {
+ "name": "Славенія"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Сурынам"
+ },
+ "SL": {
+ "name": "Сьера-Леонэ"
+ },
+ "TJ": {
+ "name": "Таджыкістан"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TK": {
+ "name": "Такелау"
+ },
+ "TZ": {
+ "name": "Танзанія"
+ },
+ "TG": {
+ "name": "Тога"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Трынідад і Табага"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Туніс"
+ },
+ "TM": {
+ "name": "Туркменістан"
+ },
+ "TR": {
+ "name": "Турцыя"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекістан"
+ },
+ "UA": {
+ "name": "Украіна"
+ },
+ "WF": {
+ "name": "Уоліс і Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "TL": {
+ "name": "Усходні Тымор"
+ },
+ "FO": {
+ "name": "Фарэрскія астравы"
+ },
+ "FJ": {
+ "name": "Фіджы"
+ },
+ "PH": {
+ "name": "Філіпіны"
+ },
+ "FI": {
+ "name": "Фінляндыя"
+ },
+ "FK": {
+ "name": "Фолклэндскія астравы"
+ },
+ "GF": {
+ "name": "Французская Гвіяна"
+ },
+ "PF": {
+ "name": "Французская Палінезія"
+ },
+ "TF": {
+ "name": "Французскія Паўднёвыя тэрыторыі"
+ },
+ "FR": {
+ "name": "Францыя"
+ },
+ "HR": {
+ "name": "Харватыя"
+ },
+ "TC": {
+ "name": "Цёркс і Кайкас"
+ },
+ "CF": {
+ "name": "Цэнтральна-Афрыканская Рэспубліка"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Чарнагорыя"
+ },
+ "CL": {
+ "name": "Чылі"
+ },
+ "CZ": {
+ "name": "Чэхія"
+ },
+ "CH": {
+ "name": "Швейцарыя"
+ },
+ "SE": {
+ "name": "Швецыя"
+ },
+ "LK": {
+ "name": "Шры-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экватарыяльная Гвінея"
+ },
+ "ER": {
+ "name": "Эрытрэя"
+ },
+ "EE": {
+ "name": "Эстонія"
+ },
+ "ET": {
+ "name": "Эфіопія"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "Японія"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bez.json b/library/intl/resources/country/bez.json
new file mode 100644
index 000000000..202b446f6
--- /dev/null
+++ b/library/intl/resources/country/bez.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "ZA": {
+ "name": "Huafrika iya Hukusini"
+ },
+ "AF": {
+ "name": "Huafuganistani"
+ },
+ "IS": {
+ "name": "Huaislandi"
+ },
+ "AR": {
+ "name": "Huajendina"
+ },
+ "AL": {
+ "name": "Hualbania"
+ },
+ "DZ": {
+ "name": "Hualjelia"
+ },
+ "AW": {
+ "name": "Hualuba"
+ },
+ "AM": {
+ "name": "Huamenia"
+ },
+ "AD": {
+ "name": "Huandola"
+ },
+ "AO": {
+ "name": "Huangola"
+ },
+ "AI": {
+ "name": "Huanguila"
+ },
+ "AG": {
+ "name": "Huantigua na Hubarubuda"
+ },
+ "AT": {
+ "name": "Huastlia"
+ },
+ "AU": {
+ "name": "Huaustlalia"
+ },
+ "IE": {
+ "name": "Huayalandi"
+ },
+ "AZ": {
+ "name": "Huazabajani"
+ },
+ "BB": {
+ "name": "Hubabadosi"
+ },
+ "BH": {
+ "name": "Hubahaleni"
+ },
+ "BS": {
+ "name": "Hubahama"
+ },
+ "BD": {
+ "name": "Hubangaladeshi"
+ },
+ "BY": {
+ "name": "Hubelalusi"
+ },
+ "BZ": {
+ "name": "Hubelize"
+ },
+ "BM": {
+ "name": "Hubelmuda"
+ },
+ "BJ": {
+ "name": "Hubenini"
+ },
+ "BR": {
+ "name": "Hublazili"
+ },
+ "BO": {
+ "name": "Hubolivia"
+ },
+ "BA": {
+ "name": "Hubosinia na Huhezegovina"
+ },
+ "BW": {
+ "name": "Hubotiswana"
+ },
+ "BN": {
+ "name": "Hubrunei"
+ },
+ "BF": {
+ "name": "Hubukinafaso"
+ },
+ "MG": {
+ "name": "Hubukini"
+ },
+ "BG": {
+ "name": "Hubulgaria"
+ },
+ "BI": {
+ "name": "Huburundi"
+ },
+ "BT": {
+ "name": "Hubutani"
+ },
+ "TD": {
+ "name": "Huchadi"
+ },
+ "CL": {
+ "name": "Huchile"
+ },
+ "CN": {
+ "name": "Huchina"
+ },
+ "DK": {
+ "name": "Hudenmaki"
+ },
+ "DM": {
+ "name": "Hudominika"
+ },
+ "EC": {
+ "name": "Huekwado"
+ },
+ "SV": {
+ "name": "Huelsavado"
+ },
+ "ER": {
+ "name": "Hueritrea"
+ },
+ "EE": {
+ "name": "Huestonia"
+ },
+ "AE": {
+ "name": "Hufalme dza Hihalabu"
+ },
+ "FJ": {
+ "name": "Hufiji"
+ },
+ "PH": {
+ "name": "Hufilipino"
+ },
+ "GA": {
+ "name": "Hugaboni"
+ },
+ "GM": {
+ "name": "Hugambia"
+ },
+ "GH": {
+ "name": "Hughana"
+ },
+ "GW": {
+ "name": "Huginebisau"
+ },
+ "GQ": {
+ "name": "Huginekweta"
+ },
+ "GD": {
+ "name": "Hugrenada"
+ },
+ "GY": {
+ "name": "Huguyana"
+ },
+ "GP": {
+ "name": "Hugwadelupe"
+ },
+ "GU": {
+ "name": "Hugwam"
+ },
+ "GT": {
+ "name": "Hugwatemala"
+ },
+ "GF": {
+ "name": "Hugwiyana ya Huufaransa"
+ },
+ "HT": {
+ "name": "Huhaiti"
+ },
+ "ES": {
+ "name": "Huhispania"
+ },
+ "HN": {
+ "name": "Huhondulasi"
+ },
+ "HU": {
+ "name": "Huhungalia"
+ },
+ "IQ": {
+ "name": "Huilaki"
+ },
+ "IN": {
+ "name": "Huindia"
+ },
+ "ID": {
+ "name": "Huindonesia"
+ },
+ "IL": {
+ "name": "Huislaheli"
+ },
+ "IT": {
+ "name": "Huitalia"
+ },
+ "JM": {
+ "name": "Hujamaika"
+ },
+ "JP": {
+ "name": "Hujapani"
+ },
+ "GI": {
+ "name": "Hujiblalta"
+ },
+ "DJ": {
+ "name": "Hujibuti"
+ },
+ "GN": {
+ "name": "Hujine"
+ },
+ "GL": {
+ "name": "Hujinlandi"
+ },
+ "GE": {
+ "name": "Hujojia"
+ },
+ "KH": {
+ "name": "Hukambodia"
+ },
+ "CM": {
+ "name": "Hukameruni"
+ },
+ "CA": {
+ "name": "Hukanada"
+ },
+ "QA": {
+ "name": "Hukatali"
+ },
+ "KZ": {
+ "name": "Hukazakistani"
+ },
+ "KE": {
+ "name": "Hukenya"
+ },
+ "CV": {
+ "name": "Hukepuvede"
+ },
+ "KI": {
+ "name": "Hukilibati"
+ },
+ "KG": {
+ "name": "Hukiligizistani"
+ },
+ "CI": {
+ "name": "Hukodivaa"
+ },
+ "KP": {
+ "name": "Hukolea Kaskazini"
+ },
+ "KR": {
+ "name": "Hukolea Kusini"
+ },
+ "CO": {
+ "name": "Hukolombia"
+ },
+ "KM": {
+ "name": "Hukomoro"
+ },
+ "CG": {
+ "name": "Hukongo"
+ },
+ "HR": {
+ "name": "Hukorasia"
+ },
+ "CR": {
+ "name": "Hukostarika"
+ },
+ "CU": {
+ "name": "Hukuba"
+ },
+ "CY": {
+ "name": "Hukuprosi"
+ },
+ "KW": {
+ "name": "Hukuwaiti"
+ },
+ "LA": {
+ "name": "Hulaosi"
+ },
+ "LU": {
+ "name": "Hulasembagi"
+ },
+ "LV": {
+ "name": "Hulativia"
+ },
+ "LB": {
+ "name": "Hulebanoni"
+ },
+ "LS": {
+ "name": "Hulesoto"
+ },
+ "LR": {
+ "name": "Hulibelia"
+ },
+ "LY": {
+ "name": "Hulibiya"
+ },
+ "LI": {
+ "name": "Hulishenteni"
+ },
+ "LT": {
+ "name": "Hulitwania"
+ },
+ "RE": {
+ "name": "Huliyunioni"
+ },
+ "RO": {
+ "name": "Hulomania"
+ },
+ "RW": {
+ "name": "Hulwanda"
+ },
+ "MW": {
+ "name": "Humalawi"
+ },
+ "US": {
+ "name": "Humalekani"
+ },
+ "MY": {
+ "name": "Humalesia"
+ },
+ "ML": {
+ "name": "Humali"
+ },
+ "MT": {
+ "name": "Humalta"
+ },
+ "MQ": {
+ "name": "Humartiniki"
+ },
+ "MK": {
+ "name": "Humasedonia"
+ },
+ "YT": {
+ "name": "Humayotte"
+ },
+ "MX": {
+ "name": "Humeksiko"
+ },
+ "FM": {
+ "name": "Humikronesia"
+ },
+ "EG": {
+ "name": "Humisri"
+ },
+ "MV": {
+ "name": "Humodivu"
+ },
+ "MD": {
+ "name": "Humoldova"
+ },
+ "MU": {
+ "name": "Humolisi"
+ },
+ "MR": {
+ "name": "Humolitania"
+ },
+ "MA": {
+ "name": "Humoloko"
+ },
+ "MC": {
+ "name": "Humonako"
+ },
+ "MN": {
+ "name": "Humongolia"
+ },
+ "MS": {
+ "name": "Humontserrati"
+ },
+ "MZ": {
+ "name": "Humusumbiji"
+ },
+ "MM": {
+ "name": "Humyama"
+ },
+ "NA": {
+ "name": "Hunamibia"
+ },
+ "NR": {
+ "name": "Hunauru"
+ },
+ "NP": {
+ "name": "Hunepali"
+ },
+ "NE": {
+ "name": "Hunijeli"
+ },
+ "NG": {
+ "name": "Hunijelia"
+ },
+ "NI": {
+ "name": "Hunikaragwa"
+ },
+ "NU": {
+ "name": "Huniue"
+ },
+ "NO": {
+ "name": "Hunolwe"
+ },
+ "NC": {
+ "name": "Hunyukaledonia"
+ },
+ "NZ": {
+ "name": "Hunyuzilandi"
+ },
+ "OM": {
+ "name": "Huomani"
+ },
+ "PK": {
+ "name": "Hupakistani"
+ },
+ "PY": {
+ "name": "Hupalagwai"
+ },
+ "PW": {
+ "name": "Hupalau"
+ },
+ "PA": {
+ "name": "Hupanama"
+ },
+ "PG": {
+ "name": "Hupapua"
+ },
+ "PE": {
+ "name": "Hupelu"
+ },
+ "PN": {
+ "name": "Hupitkaini"
+ },
+ "PL": {
+ "name": "Hupolandi"
+ },
+ "PF": {
+ "name": "Hupolinesia ya Huufaransa"
+ },
+ "PR": {
+ "name": "Hupwetoriko"
+ },
+ "SM": {
+ "name": "Husamalino"
+ },
+ "WS": {
+ "name": "Husamoa"
+ },
+ "AS": {
+ "name": "Husamoa ya Humalekani"
+ },
+ "SH": {
+ "name": "Husantahelena"
+ },
+ "KN": {
+ "name": "Husantakitzi na Hunevis"
+ },
+ "LC": {
+ "name": "Husantalusia"
+ },
+ "PM": {
+ "name": "Husantapieri na Humikeloni"
+ },
+ "VC": {
+ "name": "Husantavisenti na Hugrenadini"
+ },
+ "ST": {
+ "name": "Husaotome na Huprinsipe"
+ },
+ "SA": {
+ "name": "Husaudi"
+ },
+ "SN": {
+ "name": "Husenegali"
+ },
+ "SC": {
+ "name": "Hushelisheli"
+ },
+ "SL": {
+ "name": "Husiela Lioni"
+ },
+ "SY": {
+ "name": "Husilia"
+ },
+ "SG": {
+ "name": "Husingapoo"
+ },
+ "LK": {
+ "name": "Husirilanka"
+ },
+ "SK": {
+ "name": "Huslovakia"
+ },
+ "SI": {
+ "name": "Huslovenia"
+ },
+ "SO": {
+ "name": "Husomalia"
+ },
+ "SD": {
+ "name": "Husudani"
+ },
+ "SR": {
+ "name": "Husurinamu"
+ },
+ "TH": {
+ "name": "Hutailandi"
+ },
+ "TW": {
+ "name": "Hutaiwani"
+ },
+ "TJ": {
+ "name": "Hutajikistani"
+ },
+ "TZ": {
+ "name": "Hutanzania"
+ },
+ "TL": {
+ "name": "Hutimori ya Mashariki"
+ },
+ "TG": {
+ "name": "Hutogo"
+ },
+ "TK": {
+ "name": "Hutokelau"
+ },
+ "TO": {
+ "name": "Hutonga"
+ },
+ "TT": {
+ "name": "Hutrinad na Hutobago"
+ },
+ "TN": {
+ "name": "Hutunisia"
+ },
+ "TV": {
+ "name": "Hutuvalu"
+ },
+ "IR": {
+ "name": "Huuajemi"
+ },
+ "BE": {
+ "name": "Huubelgiji"
+ },
+ "FR": {
+ "name": "Huufaransa"
+ },
+ "FI": {
+ "name": "Huufini"
+ },
+ "UG": {
+ "name": "Huuganda"
+ },
+ "GR": {
+ "name": "Huugiliki"
+ },
+ "ET": {
+ "name": "Huuhabeshi"
+ },
+ "NL": {
+ "name": "Huuholanzi"
+ },
+ "GB": {
+ "name": "Huuingereza"
+ },
+ "DE": {
+ "name": "Huujerumani"
+ },
+ "UA": {
+ "name": "Huukraini"
+ },
+ "PT": {
+ "name": "Huuleno"
+ },
+ "UY": {
+ "name": "Huulugwai"
+ },
+ "RU": {
+ "name": "Huulusi"
+ },
+ "SZ": {
+ "name": "Huuswazi"
+ },
+ "SE": {
+ "name": "Huuswidi"
+ },
+ "CH": {
+ "name": "Huuswisi"
+ },
+ "TR": {
+ "name": "Huuturuki"
+ },
+ "TM": {
+ "name": "Huuturukimenistani"
+ },
+ "UZ": {
+ "name": "Huuzibekistani"
+ },
+ "VU": {
+ "name": "Huvanuatu"
+ },
+ "VA": {
+ "name": "Huvatikani"
+ },
+ "VE": {
+ "name": "Huvenezuela"
+ },
+ "VN": {
+ "name": "Huvietinamu"
+ },
+ "WF": {
+ "name": "Huwalis na Hufutuna"
+ },
+ "YE": {
+ "name": "Huyemeni"
+ },
+ "JO": {
+ "name": "Huyolodani"
+ },
+ "ZM": {
+ "name": "Huzambia"
+ },
+ "ZW": {
+ "name": "Huzimbabwe"
+ },
+ "FK": {
+ "name": "Ifisima fya Falkland"
+ },
+ "KY": {
+ "name": "Ifisima fya Kayman"
+ },
+ "CK": {
+ "name": "Ifisima fya Kook"
+ },
+ "MP": {
+ "name": "Ifisima fya Mariana fya Hukaskazini"
+ },
+ "MH": {
+ "name": "Ifisima fya Marshal"
+ },
+ "SB": {
+ "name": "Ifisima fya Solomon"
+ },
+ "TC": {
+ "name": "Ifisima fya Turki na Kaiko"
+ },
+ "VG": {
+ "name": "Ifisima fya Virgin fya Huingereza"
+ },
+ "VI": {
+ "name": "Ifisima fya Virgin fya Humelekani"
+ },
+ "NF": {
+ "name": "Ihisima sha Norfok"
+ },
+ "CF": {
+ "name": "Ijamhuri ya Afrika ya Pagati"
+ },
+ "CZ": {
+ "name": "Ijamhuri ya Cheki"
+ },
+ "CD": {
+ "name": "Ijamhuri ya Hidemokrasi ya Hukongo"
+ },
+ "DO": {
+ "name": "Ijamhuri ya Hudominika"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IO": {
+ "name": "Ulubali lwa Hubahari ya Hindi lwa Huingereza"
+ },
+ "PS": {
+ "name": "Ulubali lwa Magharibi nu Gaza wa Hupalestina"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bg.json b/library/intl/resources/country/bg.json
new file mode 100644
index 000000000..121709871
--- /dev/null
+++ b/library/intl/resources/country/bg.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралия"
+ },
+ "AT": {
+ "name": "Австрия"
+ },
+ "AZ": {
+ "name": "Азербайджан"
+ },
+ "AL": {
+ "name": "Албания"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Американска Самоа"
+ },
+ "VI": {
+ "name": "Американски Вирджински острови"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AI": {
+ "name": "Ангуила"
+ },
+ "AD": {
+ "name": "Андора"
+ },
+ "AQ": {
+ "name": "Антарктика"
+ },
+ "AG": {
+ "name": "Антигуа и Барбуда"
+ },
+ "AR": {
+ "name": "Аржентина"
+ },
+ "AM": {
+ "name": "Армения"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AF": {
+ "name": "Афганистан"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "Беларус"
+ },
+ "BE": {
+ "name": "Белгия"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "BO": {
+ "name": "Боливия"
+ },
+ "BA": {
+ "name": "Босна и Херцеговина"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразилия"
+ },
+ "IO": {
+ "name": "Британска територия в Индийския океан"
+ },
+ "VG": {
+ "name": "Британски Вирджински острови"
+ },
+ "BN": {
+ "name": "Бруней Дарусалам"
+ },
+ "BF": {
+ "name": "Буркина Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "BG": {
+ "name": "България"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Великобритания"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Виетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбия"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "Гаяна"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинея"
+ },
+ "GW": {
+ "name": "Гвинея-Бисау"
+ },
+ "DE": {
+ "name": "Германия"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландия"
+ },
+ "GE": {
+ "name": "Грузия"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "Гърнси"
+ },
+ "GR": {
+ "name": "Гърция"
+ },
+ "DK": {
+ "name": "Дания"
+ },
+ "CD": {
+ "name": "Демократична република Конго"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "JE": {
+ "name": "Джърси"
+ },
+ "DG": {
+ "name": "Диего Гарсия"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминиканска република"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваториална Гвинея"
+ },
+ "ER": {
+ "name": "Еритрея"
+ },
+ "EE": {
+ "name": "Естония"
+ },
+ "ET": {
+ "name": "Етиопия"
+ },
+ "ZM": {
+ "name": "Замбия"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "TL": {
+ "name": "Източен Тимор"
+ },
+ "IN": {
+ "name": "Индия"
+ },
+ "ID": {
+ "name": "Индонезия"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирландия"
+ },
+ "IS": {
+ "name": "Исландия"
+ },
+ "ES": {
+ "name": "Испания"
+ },
+ "IT": {
+ "name": "Италия"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "JO": {
+ "name": "Йордания"
+ },
+ "CV": {
+ "name": "Кабо Верде"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кайманови острови"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарски острови"
+ },
+ "BQ": {
+ "name": "Карибска Нидерландия"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кения"
+ },
+ "CY": {
+ "name": "Кипър"
+ },
+ "KG": {
+ "name": "Киргизстан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "CC": {
+ "name": "Кокосови острови (острови Кийлинг)"
+ },
+ "CO": {
+ "name": "Колумбия"
+ },
+ "KM": {
+ "name": "Коморски острови"
+ },
+ "CG": {
+ "name": "Конго"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста Рика"
+ },
+ "CI": {
+ "name": "Кот д’Ивоар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "Кюрасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвия"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либерия"
+ },
+ "LY": {
+ "name": "Либия"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенщайн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MR": {
+ "name": "Мавритания"
+ },
+ "MU": {
+ "name": "Мавриций"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майот"
+ },
+ "MO": {
+ "name": "Макао, САР на Китай"
+ },
+ "MK": {
+ "name": "Македония"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайзия"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалови острови"
+ },
+ "MX": {
+ "name": "Мексико"
+ },
+ "MM": {
+ "name": "Мианмар (Бирма)"
+ },
+ "FM": {
+ "name": "Микронезия"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголия"
+ },
+ "MS": {
+ "name": "Монтсерат"
+ },
+ "NA": {
+ "name": "Намибия"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерия"
+ },
+ "NL": {
+ "name": "Нидерландия"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуе"
+ },
+ "NZ": {
+ "name": "Нова Зеландия"
+ },
+ "NC": {
+ "name": "Нова Каледония"
+ },
+ "NO": {
+ "name": "Норвегия"
+ },
+ "AE": {
+ "name": "Обединени арабски емирства"
+ },
+ "AX": {
+ "name": "Оландски острови"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "остров Възнесение"
+ },
+ "IM": {
+ "name": "остров Ман"
+ },
+ "NF": {
+ "name": "остров Норфолк"
+ },
+ "CX": {
+ "name": "остров Рождество"
+ },
+ "CK": {
+ "name": "острови Кук"
+ },
+ "PN": {
+ "name": "Острови Питкерн"
+ },
+ "TC": {
+ "name": "острови Търкс и Кайкос"
+ },
+ "UM": {
+ "name": "Отдалечени острови на САЩ"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестински територии"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Нова Гвинея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PL": {
+ "name": "Полша"
+ },
+ "PT": {
+ "name": "Португалия"
+ },
+ "PR": {
+ "name": "Пуерто Рико"
+ },
+ "RE": {
+ "name": "Реюнион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румъния"
+ },
+ "RU": {
+ "name": "Русия"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принсипи"
+ },
+ "SA": {
+ "name": "Саудитска Арабия"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Ян Майен"
+ },
+ "SH": {
+ "name": "Света Елена"
+ },
+ "KP": {
+ "name": "Северна Корея"
+ },
+ "MP": {
+ "name": "Северни Мариански острови"
+ },
+ "VC": {
+ "name": "Сейнт Винсънт и Гренадини"
+ },
+ "KN": {
+ "name": "Сейнт Китс и Невис"
+ },
+ "LC": {
+ "name": "Сейнт Лусия"
+ },
+ "SC": {
+ "name": "Сейшели"
+ },
+ "BL": {
+ "name": "Сен Бартелеми"
+ },
+ "MF": {
+ "name": "Сен Мартен"
+ },
+ "PM": {
+ "name": "Сен Пиер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "EA": {
+ "name": "Сеута и Мелия"
+ },
+ "SL": {
+ "name": "Сиера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Мартен"
+ },
+ "SY": {
+ "name": "Сирия"
+ },
+ "SK": {
+ "name": "Словакия"
+ },
+ "SI": {
+ "name": "Словения"
+ },
+ "SB": {
+ "name": "Соломонови острови"
+ },
+ "SO": {
+ "name": "Сомалия"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "US": {
+ "name": "Съединени щати"
+ },
+ "RS": {
+ "name": "Сърбия"
+ },
+ "TJ": {
+ "name": "Таджикистан"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "Танзания"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Куня"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "TR": {
+ "name": "Турция"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "UA": {
+ "name": "Украйна"
+ },
+ "HU": {
+ "name": "Унгария"
+ },
+ "WF": {
+ "name": "Уолис и Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фарьорски острови"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "Финландия"
+ },
+ "FK": {
+ "name": "Фолклендски острови"
+ },
+ "FR": {
+ "name": "Франция"
+ },
+ "GF": {
+ "name": "Френска Гвиана"
+ },
+ "PF": {
+ "name": "Френска Полинезия"
+ },
+ "TF": {
+ "name": "Френски южни територии"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "HN": {
+ "name": "Хондурас"
+ },
+ "HK": {
+ "name": "Хонконг, САР на Китай"
+ },
+ "HR": {
+ "name": "Хърватия"
+ },
+ "CF": {
+ "name": "Централноафриканска република"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черна гора"
+ },
+ "CZ": {
+ "name": "Чехия"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "Швейцария"
+ },
+ "SE": {
+ "name": "Швеция"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ },
+ "SS": {
+ "name": "Южен Судан"
+ },
+ "ZA": {
+ "name": "Южна Африка"
+ },
+ "GS": {
+ "name": "Южна Джорджия и Южни Сандвичеви острови"
+ },
+ "KR": {
+ "name": "Южна Корея"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "Япония"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bm.json b/library/intl/resources/country/bm.json
new file mode 100644
index 000000000..9207ce667
--- /dev/null
+++ b/library/intl/resources/country/bm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afiganistaŋ"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Alibani"
+ },
+ "DE": {
+ "name": "Alimaɲi"
+ },
+ "DZ": {
+ "name": "Alizeri"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "VI": {
+ "name": "Ameriki ka Sungurunnin Gun"
+ },
+ "AD": {
+ "name": "Andɔr"
+ },
+ "IO": {
+ "name": "Angilɛ ka ɛndu dugukolo"
+ },
+ "VG": {
+ "name": "Angilɛ ka Sungurunnin Gun"
+ },
+ "GB": {
+ "name": "Angilɛtɛri"
+ },
+ "AI": {
+ "name": "Angiya"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga-ni-Barbuda"
+ },
+ "SA": {
+ "name": "Arabiya Sawudiya"
+ },
+ "AE": {
+ "name": "Arabu mara kafoli"
+ },
+ "AM": {
+ "name": "Arimeni"
+ },
+ "AR": {
+ "name": "Arizantin"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "AZ": {
+ "name": "Azɛrbayjaŋ"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "KY": {
+ "name": "Bama Gun"
+ },
+ "BB": {
+ "name": "Barbadi"
+ },
+ "BH": {
+ "name": "Bareyini"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belizi"
+ },
+ "BJ": {
+ "name": "Benɛn"
+ },
+ "BR": {
+ "name": "Berezili"
+ },
+ "BM": {
+ "name": "Bermudi"
+ },
+ "BE": {
+ "name": "Bɛliziki"
+ },
+ "BD": {
+ "name": "Bɛngiladɛsi"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bozni-Ɛrizigovini"
+ },
+ "BW": {
+ "name": "Bɔtisiwana"
+ },
+ "BG": {
+ "name": "Buligari"
+ },
+ "BN": {
+ "name": "Burinɛyi"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaŋ"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Capivɛrdi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Ceki republiki"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CY": {
+ "name": "Cipri"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dɔmimiki republiki"
+ },
+ "DM": {
+ "name": "Dɔminiki"
+ },
+ "EC": {
+ "name": "Ekwatɔr"
+ },
+ "ER": {
+ "name": "Eritere"
+ },
+ "EE": {
+ "name": "Esetoni"
+ },
+ "ES": {
+ "name": "Esipaɲi"
+ },
+ "ET": {
+ "name": "Etiopi"
+ },
+ "EG": {
+ "name": "Eziputi"
+ },
+ "SH": {
+ "name": "Ɛlɛni Senu"
+ },
+ "ID": {
+ "name": "Ɛndonezi"
+ },
+ "IN": {
+ "name": "Ɛndujamana"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi ka gwiyani"
+ },
+ "PF": {
+ "name": "Faransi ka polinezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabɔŋ"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GM": {
+ "name": "Ganbi"
+ },
+ "GR": {
+ "name": "Gɛrɛsi"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine Bisawo"
+ },
+ "GQ": {
+ "name": "Gine ekwatɔri"
+ },
+ "GL": {
+ "name": "Gɔrɔhenelandi"
+ },
+ "GD": {
+ "name": "Granadi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gwadelup"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GY": {
+ "name": "Gwiyana"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndirasi"
+ },
+ "HU": {
+ "name": "Hɔngri"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IE": {
+ "name": "Irilandi"
+ },
+ "RU": {
+ "name": "Irisi"
+ },
+ "IS": {
+ "name": "Isilandi"
+ },
+ "IL": {
+ "name": "Isirayeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "NC": {
+ "name": "Kaledoni Koura"
+ },
+ "KH": {
+ "name": "Kamboji"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistaŋ"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "KP": {
+ "name": "Kɛɲɛka Kore"
+ },
+ "MP": {
+ "name": "Kɛɲɛka Mariyani Gun"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaŋ"
+ },
+ "CI": {
+ "name": "Kodiwari"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komɔri"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo ka republiki demɔkratiki"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kowɛti"
+ },
+ "TL": {
+ "name": "Kɔrɔn Timɔr"
+ },
+ "CR": {
+ "name": "Kɔsitarika"
+ },
+ "KN": {
+ "name": "Kristɔfo-Senu-ni-Ɲevɛs"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuki Gun"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Likisanburu"
+ },
+ "LI": {
+ "name": "Lisɛnsitayini"
+ },
+ "LT": {
+ "name": "Lituyani"
+ },
+ "LC": {
+ "name": "Lusi-Senu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedɔni"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malɛzi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malti"
+ },
+ "FK": {
+ "name": "Maluwini Gun"
+ },
+ "SM": {
+ "name": "Marini-Senu"
+ },
+ "MH": {
+ "name": "Marisali Gun"
+ },
+ "MQ": {
+ "name": "Maritiniki"
+ },
+ "MA": {
+ "name": "Marɔku"
+ },
+ "YT": {
+ "name": "Mayoti"
+ },
+ "MX": {
+ "name": "Meksiki"
+ },
+ "FM": {
+ "name": "Mikironesi"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MN": {
+ "name": "Moŋoli"
+ },
+ "MS": {
+ "name": "Moŋsera"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MZ": {
+ "name": "Mozanbiki"
+ },
+ "MR": {
+ "name": "Mɔritani"
+ },
+ "MM": {
+ "name": "Myanimari"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NG": {
+ "name": "Nizeriya"
+ },
+ "NE": {
+ "name": "Nizɛri"
+ },
+ "NO": {
+ "name": "Nɔriwɛzi"
+ },
+ "NF": {
+ "name": "Nɔrofoliki Gun"
+ },
+ "NU": {
+ "name": "Nyuwe"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "AU": {
+ "name": "Ositirali"
+ },
+ "AT": {
+ "name": "Otirisi"
+ },
+ "PK": {
+ "name": "Pakisitaŋ"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitini"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwasi-Gine-Koura"
+ },
+ "PY": {
+ "name": "Paraguwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "NL": {
+ "name": "Peyiba"
+ },
+ "PN": {
+ "name": "Pitikarini"
+ },
+ "PM": {
+ "name": "Piyɛri-Senu-ni-Mikelɔŋ"
+ },
+ "PL": {
+ "name": "Poloɲi"
+ },
+ "PT": {
+ "name": "Pɔritigali"
+ },
+ "PR": {
+ "name": "Pɔrotoriko"
+ },
+ "RE": {
+ "name": "Reyuɲɔŋ"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SV": {
+ "name": "Salivadɔr"
+ },
+ "SB": {
+ "name": "Salomo Gun"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa amerikani"
+ },
+ "CF": {
+ "name": "Santarafiriki"
+ },
+ "ST": {
+ "name": "Sawo Tome-ni-Prinicipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesɛli"
+ },
+ "SG": {
+ "name": "Sɛngapuri"
+ },
+ "CL": {
+ "name": "Sili"
+ },
+ "CN": {
+ "name": "Siniwajamana"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SL": {
+ "name": "Siyera Lewɔni"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SK": {
+ "name": "Slowaki"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SE": {
+ "name": "Suwɛdi"
+ },
+ "CH": {
+ "name": "Suwisi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TH": {
+ "name": "Tayilandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinite-ni-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TR": {
+ "name": "Turiki"
+ },
+ "TC": {
+ "name": "Turiki Gun ni Kayiki"
+ },
+ "TM": {
+ "name": "Turikimenisitani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukɛrɛni"
+ },
+ "UY": {
+ "name": "Urugwayi"
+ },
+ "UZ": {
+ "name": "Uzebekisitani"
+ },
+ "VU": {
+ "name": "Vanuwatu"
+ },
+ "VA": {
+ "name": "Vatikaŋ"
+ },
+ "VE": {
+ "name": "Venezuwela"
+ },
+ "VC": {
+ "name": "Vinisɛn-Senu-ni-Grenadini"
+ },
+ "WF": {
+ "name": "Walisi-ni-Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VN": {
+ "name": "Wiyɛtinamu"
+ },
+ "ZA": {
+ "name": "Worodugu Afriki"
+ },
+ "KR": {
+ "name": "Worodugu Kore"
+ },
+ "YE": {
+ "name": "Yemɛni"
+ },
+ "JM": {
+ "name": "Zamayiki"
+ },
+ "ZM": {
+ "name": "Zanbi"
+ },
+ "JP": {
+ "name": "Zapɔn"
+ },
+ "NZ": {
+ "name": "Zelandi Koura"
+ },
+ "GE": {
+ "name": "Zeyɔrzi"
+ },
+ "GI": {
+ "name": "Zibralitari"
+ },
+ "ZW": {
+ "name": "Zimbabuwe"
+ },
+ "JO": {
+ "name": "Zɔrdani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bn-IN.json b/library/intl/resources/country/bn-IN.json
new file mode 100644
index 000000000..f6aacc74d
--- /dev/null
+++ b/library/intl/resources/country/bn-IN.json
@@ -0,0 +1,761 @@
+{
+ "AT": {
+ "name": "অস্ট্রিয়া"
+ },
+ "AU": {
+ "name": "অস্ট্রেলিয়া"
+ },
+ "AO": {
+ "name": "অ্যাঙ্গোলা"
+ },
+ "AQ": {
+ "name": "অ্যান্টার্কটিকা"
+ },
+ "AC": {
+ "name": "অ্যাসসেনশন আইল্যান্ড"
+ },
+ "CI": {
+ "name": "আইভরি কোস্ট"
+ },
+ "IM": {
+ "name": "আইল অফ ম্যান"
+ },
+ "IS": {
+ "name": "আইসল্যান্ড"
+ },
+ "AZ": {
+ "name": "আজারবাইজান"
+ },
+ "AF": {
+ "name": "আফগানিস্তান"
+ },
+ "AS": {
+ "name": "আমেরিকান সামোয়া"
+ },
+ "IE": {
+ "name": "আয়ারল্যান্ড"
+ },
+ "AW": {
+ "name": "আরুবা"
+ },
+ "AR": {
+ "name": "আর্জেন্টিনা"
+ },
+ "AM": {
+ "name": "আর্মেনিয়া"
+ },
+ "DZ": {
+ "name": "আলজেরিয়া"
+ },
+ "AL": {
+ "name": "আলব্যানিয়া"
+ },
+ "AX": {
+ "name": "আলান্ড দ্বীপপুঞ্জ"
+ },
+ "UA": {
+ "name": "ইউক্রেইন"
+ },
+ "EC": {
+ "name": "ইকুয়েডর"
+ },
+ "IT": {
+ "name": "ইতালী"
+ },
+ "ID": {
+ "name": "ইন্দোনেশিয়া"
+ },
+ "ET": {
+ "name": "ইফিওপিয়া"
+ },
+ "YE": {
+ "name": "ইয়েমেন"
+ },
+ "IQ": {
+ "name": "ইরাক"
+ },
+ "IR": {
+ "name": "ইরান"
+ },
+ "ER": {
+ "name": "ইরিত্রিয়া"
+ },
+ "IL": {
+ "name": "ইস্রায়েল"
+ },
+ "UG": {
+ "name": "উগান্ডা"
+ },
+ "UZ": {
+ "name": "উজবেকিস্তান"
+ },
+ "KP": {
+ "name": "উত্তর কোরিয়া"
+ },
+ "MP": {
+ "name": "উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ"
+ },
+ "UY": {
+ "name": "উরুগুয়ে"
+ },
+ "AG": {
+ "name": "এন্টিগুয়া ও বারবুডা"
+ },
+ "SV": {
+ "name": "এল সালভেদর"
+ },
+ "EE": {
+ "name": "এস্তোনিয়া"
+ },
+ "AI": {
+ "name": "এ্যাঙ্গুইলা"
+ },
+ "AD": {
+ "name": "এ্যান্ডোরা"
+ },
+ "OM": {
+ "name": "ওমান"
+ },
+ "WF": {
+ "name": "ওয়ালিস ও ফুটুনা"
+ },
+ "CG": {
+ "name": "কঙ্গো - ব্রাজাভিল"
+ },
+ "CD": {
+ "name": "কঙ্গো-কিনশাসা"
+ },
+ "KM": {
+ "name": "কমোরোস"
+ },
+ "KH": {
+ "name": "কম্বোডিয়া"
+ },
+ "XK": {
+ "name": "কসোভো"
+ },
+ "KZ": {
+ "name": "কাজাকস্থান"
+ },
+ "QA": {
+ "name": "কাতার"
+ },
+ "CA": {
+ "name": "কানাডা"
+ },
+ "CU": {
+ "name": "কিউবা"
+ },
+ "CW": {
+ "name": "কিউরাসাও"
+ },
+ "KI": {
+ "name": "কিরিবাতি"
+ },
+ "KG": {
+ "name": "কির্গিজিয়া"
+ },
+ "EA": {
+ "name": "কুউটা এবং মেলিলা"
+ },
+ "CK": {
+ "name": "কুক দ্বীপপুঞ্জ"
+ },
+ "KW": {
+ "name": "কুয়েত"
+ },
+ "KE": {
+ "name": "কেনিয়া"
+ },
+ "CV": {
+ "name": "কেপভার্দে"
+ },
+ "KY": {
+ "name": "কেম্যান দ্বীপপুঞ্জ"
+ },
+ "CC": {
+ "name": "কোকোস (কিলিং)দ্বীপপুঞ্জ"
+ },
+ "CO": {
+ "name": "কোলোম্বিয়া"
+ },
+ "CR": {
+ "name": "কোস্টারিকা"
+ },
+ "IC": {
+ "name": "ক্যানারি দ্বীপপুঞ্জ"
+ },
+ "CM": {
+ "name": "ক্যামেরুন"
+ },
+ "BQ": {
+ "name": "ক্যারিবিয়ান নেদারল্যান্ডস"
+ },
+ "CX": {
+ "name": "ক্রিসমাস দ্বীপ"
+ },
+ "HR": {
+ "name": "ক্রোয়েশিয়া"
+ },
+ "GM": {
+ "name": "গাম্বিয়া"
+ },
+ "GN": {
+ "name": "গিনি"
+ },
+ "GW": {
+ "name": "গিনি-বিসাউ"
+ },
+ "GY": {
+ "name": "গিয়ানা"
+ },
+ "GP": {
+ "name": "গুয়াদেলৌপ"
+ },
+ "GU": {
+ "name": "গুয়াম"
+ },
+ "GT": {
+ "name": "গোয়াতেমালা"
+ },
+ "GA": {
+ "name": "গ্যাবন"
+ },
+ "GG": {
+ "name": "গ্রাঞ্জি"
+ },
+ "GL": {
+ "name": "গ্রীনল্যান্ড"
+ },
+ "GR": {
+ "name": "গ্রীস"
+ },
+ "GD": {
+ "name": "গ্রেনেডা"
+ },
+ "GH": {
+ "name": "ঘানা"
+ },
+ "TD": {
+ "name": "চাদ"
+ },
+ "CL": {
+ "name": "চিলি"
+ },
+ "CN": {
+ "name": "চীন"
+ },
+ "CZ": {
+ "name": "চেক প্রজাতন্ত্র"
+ },
+ "GE": {
+ "name": "জর্জিয়া"
+ },
+ "JO": {
+ "name": "জর্ডন"
+ },
+ "JP": {
+ "name": "জাপান"
+ },
+ "JM": {
+ "name": "জামাইকা"
+ },
+ "ZM": {
+ "name": "জাম্বিয়া"
+ },
+ "DE": {
+ "name": "জার্মানি"
+ },
+ "JE": {
+ "name": "জার্সি"
+ },
+ "DJ": {
+ "name": "জিবুতি"
+ },
+ "GI": {
+ "name": "জিব্রাল্টার"
+ },
+ "ZW": {
+ "name": "জিম্বাবোয়ে"
+ },
+ "TV": {
+ "name": "টুভালু"
+ },
+ "TK": {
+ "name": "টোকেলাউ"
+ },
+ "TG": {
+ "name": "টোগো"
+ },
+ "TO": {
+ "name": "টোঙ্গা"
+ },
+ "TA": {
+ "name": "ট্রিস্টান ডা কুনহা"
+ },
+ "DK": {
+ "name": "ডেনমার্ক"
+ },
+ "DM": {
+ "name": "ডোমিনিকা"
+ },
+ "DO": {
+ "name": "ডোমেনিকান প্রজাতন্ত্র"
+ },
+ "TW": {
+ "name": "তাইওয়ান"
+ },
+ "TJ": {
+ "name": "তাজিকস্থান"
+ },
+ "TZ": {
+ "name": "তাঞ্জানিয়া"
+ },
+ "TN": {
+ "name": "তিউনিশিয়া"
+ },
+ "TL": {
+ "name": "তিমুর-লেস্তে"
+ },
+ "TR": {
+ "name": "তুরস্ক"
+ },
+ "TM": {
+ "name": "তুর্কমেনিস্তান"
+ },
+ "TC": {
+ "name": "তুর্কস ও কাইকোস দ্বীপপুঞ্জ"
+ },
+ "TT": {
+ "name": "ত্রিনিনাদ ও টোব্যাগো"
+ },
+ "TH": {
+ "name": "থাইল্যান্ড"
+ },
+ "ZA": {
+ "name": "দক্ষিণ আফ্রিকা"
+ },
+ "KR": {
+ "name": "দক্ষিণ কোরিয়া"
+ },
+ "GS": {
+ "name": "দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ"
+ },
+ "SS": {
+ "name": "দক্ষিন সুদান"
+ },
+ "DG": {
+ "name": "দিয়েগো গার্সিয়া"
+ },
+ "NO": {
+ "name": "নরওয়ে"
+ },
+ "NE": {
+ "name": "নাইজার"
+ },
+ "NG": {
+ "name": "নাইজেরিয়া"
+ },
+ "NR": {
+ "name": "নাউরু"
+ },
+ "NA": {
+ "name": "নামিবিয়া"
+ },
+ "NC": {
+ "name": "নিউ ক্যালেডোনিয়া"
+ },
+ "NZ": {
+ "name": "নিউজিল্যান্ড"
+ },
+ "NU": {
+ "name": "নিউয়ে"
+ },
+ "NI": {
+ "name": "নিকারাগুয়া"
+ },
+ "GQ": {
+ "name": "নিরক্ষীয় গিনি"
+ },
+ "NF": {
+ "name": "নিরফোক দ্বীপ"
+ },
+ "NL": {
+ "name": "নেদারল্যান্ডস"
+ },
+ "NP": {
+ "name": "নেপাল"
+ },
+ "PT": {
+ "name": "পর্তুগাল"
+ },
+ "EH": {
+ "name": "পশ্চিম সাহারা"
+ },
+ "PK": {
+ "name": "পাকিস্তান"
+ },
+ "PA": {
+ "name": "পানামা"
+ },
+ "PG": {
+ "name": "পাপুয়া নিউ গিনি"
+ },
+ "PW": {
+ "name": "পালাউ"
+ },
+ "PN": {
+ "name": "পিটকেয়ার্ন দ্বীপপুঞ্জ"
+ },
+ "PE": {
+ "name": "পিরু"
+ },
+ "PR": {
+ "name": "পুয়ের্তো রিকো"
+ },
+ "PL": {
+ "name": "পোল্যান্ড"
+ },
+ "PY": {
+ "name": "প্যারাগুয়ে"
+ },
+ "FK": {
+ "name": "ফকল্যান্ড দ্বীপপুঞ্জ"
+ },
+ "GF": {
+ "name": "ফরাসী গায়ানা"
+ },
+ "TF": {
+ "name": "ফরাসী দক্ষিণাঞ্চল"
+ },
+ "PF": {
+ "name": "ফরাসী পলিনেশিয়া"
+ },
+ "FJ": {
+ "name": "ফিজি"
+ },
+ "FI": {
+ "name": "ফিনল্যান্ড"
+ },
+ "PH": {
+ "name": "ফিলিপাইন"
+ },
+ "PS": {
+ "name": "ফিলিস্তিন অঞ্চলসমূহ"
+ },
+ "FO": {
+ "name": "ফ্যারও দ্বীপপুঞ্জ"
+ },
+ "FR": {
+ "name": "ফ্রান্স"
+ },
+ "BW": {
+ "name": "বতসোয়ানা"
+ },
+ "BA": {
+ "name": "বসনিয়া ও হার্জেগোভিনা"
+ },
+ "BD": {
+ "name": "বাংলাদেশ"
+ },
+ "BB": {
+ "name": "বারবাদোস"
+ },
+ "BM": {
+ "name": "বারমুডা"
+ },
+ "BH": {
+ "name": "বাহরাইন"
+ },
+ "BS": {
+ "name": "বাহামা দ্বীপপুঞ্জ"
+ },
+ "BF": {
+ "name": "বুরকিনা ফাসো"
+ },
+ "BI": {
+ "name": "বুরুন্ডি"
+ },
+ "BG": {
+ "name": "বুলগেরিয়া"
+ },
+ "BJ": {
+ "name": "বেনিন"
+ },
+ "BE": {
+ "name": "বেলজিয়াম"
+ },
+ "BZ": {
+ "name": "বেলিজ"
+ },
+ "BY": {
+ "name": "বেলোরুশিয়া"
+ },
+ "BO": {
+ "name": "বোলিভিয়া"
+ },
+ "BR": {
+ "name": "ব্রাজিল"
+ },
+ "IO": {
+ "name": "ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল"
+ },
+ "VG": {
+ "name": "ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ"
+ },
+ "BN": {
+ "name": "ব্রুনেই"
+ },
+ "VU": {
+ "name": "ভানুয়াটু"
+ },
+ "IN": {
+ "name": "ভারত"
+ },
+ "VN": {
+ "name": "ভিয়েতনাম"
+ },
+ "BT": {
+ "name": "ভুটান"
+ },
+ "VE": {
+ "name": "ভেনেজুয়েলা"
+ },
+ "VA": {
+ "name": "ভ্যাটিকান সিটি"
+ },
+ "MN": {
+ "name": "মঙ্গোলিয়া"
+ },
+ "CF": {
+ "name": "মধ্য আফ্রিকার প্রজাতন্ত্র"
+ },
+ "MS": {
+ "name": "মন্টসেরাট"
+ },
+ "ME": {
+ "name": "মন্টিনিগ্রো"
+ },
+ "MR": {
+ "name": "মরিতানিয়া"
+ },
+ "MU": {
+ "name": "মরিশাস"
+ },
+ "FM": {
+ "name": "মাইক্রোনেশিয়া"
+ },
+ "MG": {
+ "name": "মাদাগাস্কার"
+ },
+ "MM": {
+ "name": "মায়ানমার (বার্মা)"
+ },
+ "YT": {
+ "name": "মায়োত্তে"
+ },
+ "VI": {
+ "name": "মার্কিন ভার্জিন দ্বীপপুঞ্জ"
+ },
+ "US": {
+ "name": "মার্কিন যুক্তরাষ্ট্র"
+ },
+ "MQ": {
+ "name": "মার্টিনিক"
+ },
+ "MH": {
+ "name": "মার্শাল দ্বীপপুঞ্জ"
+ },
+ "MV": {
+ "name": "মালদ্বীপ"
+ },
+ "MY": {
+ "name": "মালয়েশিয়া"
+ },
+ "MW": {
+ "name": "মালাউই"
+ },
+ "ML": {
+ "name": "মালি"
+ },
+ "MT": {
+ "name": "মাল্টা"
+ },
+ "EG": {
+ "name": "মিশর"
+ },
+ "MX": {
+ "name": "মেক্সিকো"
+ },
+ "MZ": {
+ "name": "মোজাম্বিক"
+ },
+ "MC": {
+ "name": "মোনাকো"
+ },
+ "MA": {
+ "name": "মোরক্কো"
+ },
+ "MD": {
+ "name": "মোল্দাভিয়া"
+ },
+ "MO": {
+ "name": "ম্যাকাও এস এ আর চায়না"
+ },
+ "MK": {
+ "name": "ম্যাসাডোনিয়া"
+ },
+ "GB": {
+ "name": "যুক্তরাজ্য"
+ },
+ "UM": {
+ "name": "যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ"
+ },
+ "RU": {
+ "name": "রাশিয়া"
+ },
+ "RE": {
+ "name": "রিইউনিয়ন"
+ },
+ "RO": {
+ "name": "রুমানিয়া"
+ },
+ "RW": {
+ "name": "রুয়ান্ডা"
+ },
+ "LR": {
+ "name": "লাইবেরিয়া"
+ },
+ "LA": {
+ "name": "লাওস"
+ },
+ "LU": {
+ "name": "লাক্সেমবার্গ"
+ },
+ "LV": {
+ "name": "লাত্ভিয়া"
+ },
+ "LI": {
+ "name": "লিচেনস্টেইন"
+ },
+ "LT": {
+ "name": "লিথুয়ানিয়া"
+ },
+ "LY": {
+ "name": "লিবিয়া"
+ },
+ "LB": {
+ "name": "লেবানন"
+ },
+ "LS": {
+ "name": "লেসোথো"
+ },
+ "LK": {
+ "name": "শ্রীলঙ্কা"
+ },
+ "SK": {
+ "name": "শ্লোভাকিয়া"
+ },
+ "AE": {
+ "name": "সংযুক্ত আরব আমিরাত"
+ },
+ "SB": {
+ "name": "সলোমন দ্বীপপুঞ্জ"
+ },
+ "CY": {
+ "name": "সাইপ্রাস"
+ },
+ "ST": {
+ "name": "সাওটোমা ও প্রিন্সিপি"
+ },
+ "SM": {
+ "name": "সান মারিনো"
+ },
+ "WS": {
+ "name": "সামোয়া"
+ },
+ "RS": {
+ "name": "সার্বিয়া"
+ },
+ "SG": {
+ "name": "সিঙ্গাপুর"
+ },
+ "SX": {
+ "name": "সিন্ট মার্টেন"
+ },
+ "SL": {
+ "name": "সিয়েরালিওন"
+ },
+ "SY": {
+ "name": "সিরিয়া"
+ },
+ "SC": {
+ "name": "সিসিলি"
+ },
+ "CH": {
+ "name": "সুইজারল্যান্ড"
+ },
+ "SE": {
+ "name": "সুইডেন"
+ },
+ "SD": {
+ "name": "সুদান"
+ },
+ "SR": {
+ "name": "সুরিনাম"
+ },
+ "SN": {
+ "name": "সেনেগাল"
+ },
+ "KN": {
+ "name": "সেন্ট কিটস ও নেভিস"
+ },
+ "PM": {
+ "name": "সেন্ট পিয়ের ও মিকুয়েলন"
+ },
+ "BL": {
+ "name": "সেন্ট বারথেলিমি"
+ },
+ "VC": {
+ "name": "সেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনস"
+ },
+ "MF": {
+ "name": "সেন্ট মার্টিন"
+ },
+ "LC": {
+ "name": "সেন্ট লুসিয়া"
+ },
+ "SH": {
+ "name": "সেন্ট হেলেনা"
+ },
+ "SO": {
+ "name": "সোমালিয়া"
+ },
+ "SZ": {
+ "name": "সোয়াজিল্যান্ড"
+ },
+ "SA": {
+ "name": "সৌদি আরব"
+ },
+ "ES": {
+ "name": "স্পেন"
+ },
+ "SJ": {
+ "name": "স্বালবার্ড ও জান মেয়েন"
+ },
+ "SI": {
+ "name": "স্লোভানিয়া"
+ },
+ "HK": {
+ "name": "হংকং এসএআর চীনা"
+ },
+ "HN": {
+ "name": "হণ্ডুরাস"
+ },
+ "HT": {
+ "name": "হাইতি"
+ },
+ "HU": {
+ "name": "হাঙ্গেরি"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bn.json b/library/intl/resources/country/bn.json
new file mode 100644
index 000000000..b55778f7b
--- /dev/null
+++ b/library/intl/resources/country/bn.json
@@ -0,0 +1,761 @@
+{
+ "AT": {
+ "name": "অস্ট্রিয়া"
+ },
+ "AU": {
+ "name": "অস্ট্রেলিয়া"
+ },
+ "AO": {
+ "name": "অ্যাঙ্গোলা"
+ },
+ "AQ": {
+ "name": "অ্যান্টার্কটিকা"
+ },
+ "AC": {
+ "name": "অ্যাসসেনশন আইল্যান্ড"
+ },
+ "CI": {
+ "name": "আইভরি কোস্ট"
+ },
+ "IM": {
+ "name": "আইল অফ ম্যান"
+ },
+ "IS": {
+ "name": "আইসল্যান্ড"
+ },
+ "AZ": {
+ "name": "আজারবাইজান"
+ },
+ "AF": {
+ "name": "আফগানিস্তান"
+ },
+ "AS": {
+ "name": "আমেরিকান সামোয়া"
+ },
+ "IE": {
+ "name": "আয়ারল্যান্ড"
+ },
+ "AW": {
+ "name": "আরুবা"
+ },
+ "AR": {
+ "name": "আর্জেন্টিনা"
+ },
+ "AM": {
+ "name": "আর্মেনিয়া"
+ },
+ "DZ": {
+ "name": "আলজেরিয়া"
+ },
+ "AL": {
+ "name": "আলব্যানিয়া"
+ },
+ "AX": {
+ "name": "আলান্ড দ্বীপপুঞ্জ"
+ },
+ "UA": {
+ "name": "ইউক্রেইন"
+ },
+ "EC": {
+ "name": "ইকুয়েডর"
+ },
+ "IT": {
+ "name": "ইতালী"
+ },
+ "ID": {
+ "name": "ইন্দোনেশিয়া"
+ },
+ "ET": {
+ "name": "ইফিওপিয়া"
+ },
+ "YE": {
+ "name": "ইয়েমেন"
+ },
+ "IQ": {
+ "name": "ইরাক"
+ },
+ "IR": {
+ "name": "ইরান"
+ },
+ "ER": {
+ "name": "ইরিত্রিয়া"
+ },
+ "IL": {
+ "name": "ইস্রায়েল"
+ },
+ "UG": {
+ "name": "উগান্ডা"
+ },
+ "UZ": {
+ "name": "উজবেকিস্তান"
+ },
+ "KP": {
+ "name": "উত্তর কোরিয়া"
+ },
+ "MP": {
+ "name": "উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ"
+ },
+ "UY": {
+ "name": "উরুগুয়ে"
+ },
+ "AG": {
+ "name": "এন্টিগুয়া ও বারবুডা"
+ },
+ "SV": {
+ "name": "এল সালভেদর"
+ },
+ "EE": {
+ "name": "এস্তোনিয়া"
+ },
+ "AI": {
+ "name": "এ্যাঙ্গুইলা"
+ },
+ "AD": {
+ "name": "এ্যান্ডোরা"
+ },
+ "OM": {
+ "name": "ওমান"
+ },
+ "WF": {
+ "name": "ওয়ালিস ও ফুটুনা"
+ },
+ "CG": {
+ "name": "কঙ্গো - ব্রাজাভিল"
+ },
+ "CD": {
+ "name": "কঙ্গো-কিনশাসা"
+ },
+ "KM": {
+ "name": "কমোরোস"
+ },
+ "KH": {
+ "name": "কম্বোডিয়া"
+ },
+ "XK": {
+ "name": "কসোভো"
+ },
+ "KZ": {
+ "name": "কাজাকস্থান"
+ },
+ "QA": {
+ "name": "কাতার"
+ },
+ "CA": {
+ "name": "কানাডা"
+ },
+ "CU": {
+ "name": "কিউবা"
+ },
+ "CW": {
+ "name": "কিউরাসাও"
+ },
+ "KI": {
+ "name": "কিরিবাতি"
+ },
+ "KG": {
+ "name": "কির্গিজিয়া"
+ },
+ "EA": {
+ "name": "কুউটা এবং মেলিলা"
+ },
+ "CK": {
+ "name": "কুক দ্বীপপুঞ্জ"
+ },
+ "KW": {
+ "name": "কুয়েত"
+ },
+ "KE": {
+ "name": "কেনিয়া"
+ },
+ "CV": {
+ "name": "কেপভার্দে"
+ },
+ "KY": {
+ "name": "কেম্যান দ্বীপপুঞ্জ"
+ },
+ "CC": {
+ "name": "কোকোস (কিলিং)দ্বীপপুঞ্জ"
+ },
+ "CO": {
+ "name": "কোলোম্বিয়া"
+ },
+ "CR": {
+ "name": "কোস্টারিকা"
+ },
+ "IC": {
+ "name": "ক্যানারি দ্বীপপুঞ্জ"
+ },
+ "CM": {
+ "name": "ক্যামেরুন"
+ },
+ "BQ": {
+ "name": "ক্যারিবিয়ান নেদারল্যান্ডস"
+ },
+ "CX": {
+ "name": "ক্রিসমাস দ্বীপ"
+ },
+ "HR": {
+ "name": "ক্রোয়েশিয়া"
+ },
+ "GM": {
+ "name": "গাম্বিয়া"
+ },
+ "GN": {
+ "name": "গিনি"
+ },
+ "GW": {
+ "name": "গিনি-বিসাউ"
+ },
+ "GY": {
+ "name": "গিয়ানা"
+ },
+ "GP": {
+ "name": "গুয়াদেলৌপ"
+ },
+ "GU": {
+ "name": "গুয়াম"
+ },
+ "GT": {
+ "name": "গোয়াটিমালা"
+ },
+ "GA": {
+ "name": "গ্যাবন"
+ },
+ "GG": {
+ "name": "গ্রাঞ্জি"
+ },
+ "GL": {
+ "name": "গ্রীনল্যান্ড"
+ },
+ "GR": {
+ "name": "গ্রীস"
+ },
+ "GD": {
+ "name": "গ্রেনাডা"
+ },
+ "GH": {
+ "name": "ঘানা"
+ },
+ "TD": {
+ "name": "চাদ"
+ },
+ "CL": {
+ "name": "চিলি"
+ },
+ "CN": {
+ "name": "চীন"
+ },
+ "CZ": {
+ "name": "চেক প্রজাতন্ত্র"
+ },
+ "GE": {
+ "name": "জর্জিয়া"
+ },
+ "JO": {
+ "name": "জর্ডন"
+ },
+ "JP": {
+ "name": "জাপান"
+ },
+ "ZM": {
+ "name": "জাম্বিয়া"
+ },
+ "DE": {
+ "name": "জার্মানি"
+ },
+ "JE": {
+ "name": "জার্সি"
+ },
+ "DJ": {
+ "name": "জিবুতি"
+ },
+ "GI": {
+ "name": "জিব্রাল্টার"
+ },
+ "ZW": {
+ "name": "জিম্বাবোয়ে"
+ },
+ "JM": {
+ "name": "জ্যামাইকা"
+ },
+ "TV": {
+ "name": "টুভালু"
+ },
+ "TK": {
+ "name": "টোকেলাউ"
+ },
+ "TG": {
+ "name": "টোগো"
+ },
+ "TO": {
+ "name": "টোঙ্গা"
+ },
+ "TA": {
+ "name": "ট্রিস্টান ডা কুনহা"
+ },
+ "DK": {
+ "name": "ডেনমার্ক"
+ },
+ "DM": {
+ "name": "ডোমিনিকা"
+ },
+ "DO": {
+ "name": "ডোমেনিকান প্রজাতন্ত্র"
+ },
+ "TW": {
+ "name": "তাইওয়ান"
+ },
+ "TJ": {
+ "name": "তাজিকস্থান"
+ },
+ "TZ": {
+ "name": "তাঞ্জানিয়া"
+ },
+ "TN": {
+ "name": "তিউনিশিয়া"
+ },
+ "TL": {
+ "name": "তিমুর-লেস্তে"
+ },
+ "TR": {
+ "name": "তুরস্ক"
+ },
+ "TM": {
+ "name": "তুর্কমেনিস্তান"
+ },
+ "TC": {
+ "name": "তুর্কস ও কাইকোস দ্বীপপুঞ্জ"
+ },
+ "TT": {
+ "name": "ত্রিনিনাদ ও টোব্যাগো"
+ },
+ "TH": {
+ "name": "থাইল্যান্ড"
+ },
+ "ZA": {
+ "name": "দক্ষিণ আফ্রিকা"
+ },
+ "KR": {
+ "name": "দক্ষিণ কোরিয়া"
+ },
+ "GS": {
+ "name": "দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ"
+ },
+ "SS": {
+ "name": "দক্ষিন সুদান"
+ },
+ "DG": {
+ "name": "দিয়েগো গার্সিয়া"
+ },
+ "NO": {
+ "name": "নরওয়ে"
+ },
+ "NE": {
+ "name": "নাইজার"
+ },
+ "NG": {
+ "name": "নাইজেরিয়া"
+ },
+ "NR": {
+ "name": "নাউরু"
+ },
+ "NA": {
+ "name": "নামিবিয়া"
+ },
+ "NC": {
+ "name": "নিউ ক্যালেডোনিয়া"
+ },
+ "NZ": {
+ "name": "নিউজিল্যান্ড"
+ },
+ "NU": {
+ "name": "নিউয়ে"
+ },
+ "NI": {
+ "name": "নিকারাগুয়া"
+ },
+ "GQ": {
+ "name": "নিরক্ষীয় গিনি"
+ },
+ "NF": {
+ "name": "নিরফোক দ্বীপ"
+ },
+ "NL": {
+ "name": "নেদারল্যান্ডস"
+ },
+ "NP": {
+ "name": "নেপাল"
+ },
+ "PT": {
+ "name": "পর্তুগাল"
+ },
+ "EH": {
+ "name": "পশ্চিম সাহারা"
+ },
+ "PK": {
+ "name": "পাকিস্তান"
+ },
+ "PA": {
+ "name": "পানামা"
+ },
+ "PG": {
+ "name": "পাপুয়া নিউ গিনি"
+ },
+ "PW": {
+ "name": "পালাউ"
+ },
+ "PN": {
+ "name": "পিটকেয়ার্ন দ্বীপপুঞ্জ"
+ },
+ "PE": {
+ "name": "পিরু"
+ },
+ "PR": {
+ "name": "পুয়ের্তো রিকো"
+ },
+ "PL": {
+ "name": "পোল্যান্ড"
+ },
+ "PY": {
+ "name": "প্যারাগুয়ে"
+ },
+ "FK": {
+ "name": "ফকল্যান্ড দ্বীপপুঞ্জ"
+ },
+ "GF": {
+ "name": "ফরাসী গায়ানা"
+ },
+ "TF": {
+ "name": "ফরাসী দক্ষিণাঞ্চল"
+ },
+ "PF": {
+ "name": "ফরাসী পলিনেশিয়া"
+ },
+ "FJ": {
+ "name": "ফিজি"
+ },
+ "FI": {
+ "name": "ফিনল্যান্ড"
+ },
+ "PH": {
+ "name": "ফিলিপাইন"
+ },
+ "PS": {
+ "name": "ফিলিস্তিন অঞ্চলসমূহ"
+ },
+ "FO": {
+ "name": "ফ্যারও দ্বীপপুঞ্জ"
+ },
+ "FR": {
+ "name": "ফ্রান্স"
+ },
+ "BW": {
+ "name": "বতসোয়ানা"
+ },
+ "BA": {
+ "name": "বসনিয়া ও হার্জেগোভিনা"
+ },
+ "BD": {
+ "name": "বাংলাদেশ"
+ },
+ "BB": {
+ "name": "বারবাদোস"
+ },
+ "BM": {
+ "name": "বারমুডা"
+ },
+ "BH": {
+ "name": "বাহরাইন"
+ },
+ "BS": {
+ "name": "বাহামা দ্বীপপুঞ্জ"
+ },
+ "BF": {
+ "name": "বুরকিনা ফাসো"
+ },
+ "BI": {
+ "name": "বুরুন্ডি"
+ },
+ "BG": {
+ "name": "বুলগেরিয়া"
+ },
+ "BJ": {
+ "name": "বেনিন"
+ },
+ "BE": {
+ "name": "বেলজিয়াম"
+ },
+ "BZ": {
+ "name": "বেলিজ"
+ },
+ "BY": {
+ "name": "বেলোরুশিয়া"
+ },
+ "BO": {
+ "name": "বোলিভিয়া"
+ },
+ "BR": {
+ "name": "ব্রাজিল"
+ },
+ "IO": {
+ "name": "ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল"
+ },
+ "VG": {
+ "name": "ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ"
+ },
+ "BN": {
+ "name": "ব্রুনেই"
+ },
+ "VU": {
+ "name": "ভানুয়াটু"
+ },
+ "IN": {
+ "name": "ভারত"
+ },
+ "VN": {
+ "name": "ভিয়েতনাম"
+ },
+ "BT": {
+ "name": "ভুটান"
+ },
+ "VE": {
+ "name": "ভেনেজুয়েলা"
+ },
+ "VA": {
+ "name": "ভ্যাটিকান সিটি"
+ },
+ "MN": {
+ "name": "মঙ্গোলিয়া"
+ },
+ "CF": {
+ "name": "মধ্য আফ্রিকার প্রজাতন্ত্র"
+ },
+ "MS": {
+ "name": "মন্টসেরাট"
+ },
+ "ME": {
+ "name": "মন্টিনিগ্রো"
+ },
+ "MR": {
+ "name": "মরিতানিয়া"
+ },
+ "MU": {
+ "name": "মরিশাস"
+ },
+ "FM": {
+ "name": "মাইক্রোনেশিয়া"
+ },
+ "MG": {
+ "name": "মাদাগাস্কার"
+ },
+ "MM": {
+ "name": "মায়ানমার (বার্মা)"
+ },
+ "YT": {
+ "name": "মায়োত্তে"
+ },
+ "VI": {
+ "name": "মার্কিন ভার্জিন দ্বীপপুঞ্জ"
+ },
+ "US": {
+ "name": "মার্কিন যুক্তরাষ্ট্র"
+ },
+ "MQ": {
+ "name": "মার্টিনিক"
+ },
+ "MH": {
+ "name": "মার্শাল দ্বীপপুঞ্জ"
+ },
+ "MV": {
+ "name": "মালদ্বীপ"
+ },
+ "MY": {
+ "name": "মালয়েশিয়া"
+ },
+ "MW": {
+ "name": "মালাউই"
+ },
+ "ML": {
+ "name": "মালি"
+ },
+ "MT": {
+ "name": "মাল্টা"
+ },
+ "EG": {
+ "name": "মিশর"
+ },
+ "MX": {
+ "name": "মেক্সিকো"
+ },
+ "MZ": {
+ "name": "মোজাম্বিক"
+ },
+ "MC": {
+ "name": "মোনাকো"
+ },
+ "MA": {
+ "name": "মোরক্কো"
+ },
+ "MD": {
+ "name": "মোল্দাভিয়া"
+ },
+ "MO": {
+ "name": "ম্যাকাও এস এ আর চায়না"
+ },
+ "MK": {
+ "name": "ম্যাসাডোনিয়া"
+ },
+ "GB": {
+ "name": "যুক্তরাজ্য"
+ },
+ "UM": {
+ "name": "যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ"
+ },
+ "RU": {
+ "name": "রাশিয়া"
+ },
+ "RE": {
+ "name": "রিইউনিয়ন"
+ },
+ "RO": {
+ "name": "রুমানিয়া"
+ },
+ "RW": {
+ "name": "রুয়ান্ডা"
+ },
+ "LR": {
+ "name": "লাইবেরিয়া"
+ },
+ "LA": {
+ "name": "লাওস"
+ },
+ "LU": {
+ "name": "লাক্সেমবার্গ"
+ },
+ "LV": {
+ "name": "লাত্ভিয়া"
+ },
+ "LI": {
+ "name": "লিচেনস্টেইন"
+ },
+ "LT": {
+ "name": "লিথুয়ানিয়া"
+ },
+ "LY": {
+ "name": "লিবিয়া"
+ },
+ "LB": {
+ "name": "লেবানন"
+ },
+ "LS": {
+ "name": "লেসোথো"
+ },
+ "LK": {
+ "name": "শ্রীলঙ্কা"
+ },
+ "SK": {
+ "name": "শ্লোভাকিয়া"
+ },
+ "AE": {
+ "name": "সংযুক্ত আরব আমিরাত"
+ },
+ "SB": {
+ "name": "সলোমন দ্বীপপুঞ্জ"
+ },
+ "CY": {
+ "name": "সাইপ্রাস"
+ },
+ "ST": {
+ "name": "সাওটোমা ও প্রিন্সিপি"
+ },
+ "SM": {
+ "name": "সান মারিনো"
+ },
+ "WS": {
+ "name": "সামোয়া"
+ },
+ "RS": {
+ "name": "সার্বিয়া"
+ },
+ "SG": {
+ "name": "সিঙ্গাপুর"
+ },
+ "SX": {
+ "name": "সিন্ট মার্টেন"
+ },
+ "SL": {
+ "name": "সিয়েরালিওন"
+ },
+ "SY": {
+ "name": "সিরিয়া"
+ },
+ "SC": {
+ "name": "সিসিলি"
+ },
+ "CH": {
+ "name": "সুইজারল্যান্ড"
+ },
+ "SE": {
+ "name": "সুইডেন"
+ },
+ "SD": {
+ "name": "সুদান"
+ },
+ "SR": {
+ "name": "সুরিনাম"
+ },
+ "SN": {
+ "name": "সেনেগাল"
+ },
+ "KN": {
+ "name": "সেন্ট কিটস ও নেভিস"
+ },
+ "PM": {
+ "name": "সেন্ট পিয়ের ও মিকুয়েলন"
+ },
+ "BL": {
+ "name": "সেন্ট বারথেলিমি"
+ },
+ "VC": {
+ "name": "সেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনস"
+ },
+ "MF": {
+ "name": "সেন্ট মার্টিন"
+ },
+ "LC": {
+ "name": "সেন্ট লুসিয়া"
+ },
+ "SH": {
+ "name": "সেন্ট হেলেনা"
+ },
+ "SO": {
+ "name": "সোমালিয়া"
+ },
+ "SZ": {
+ "name": "সোয়াজিল্যান্ড"
+ },
+ "SA": {
+ "name": "সৌদি আরব"
+ },
+ "ES": {
+ "name": "স্পেন"
+ },
+ "SJ": {
+ "name": "স্বালবার্ড ও জান মেয়েন"
+ },
+ "SI": {
+ "name": "স্লোভানিয়া"
+ },
+ "HK": {
+ "name": "হংকং এসএআর চীনা"
+ },
+ "HN": {
+ "name": "হণ্ডুরাস"
+ },
+ "HT": {
+ "name": "হাইতি"
+ },
+ "HU": {
+ "name": "হাঙ্গেরি"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bo.json b/library/intl/resources/country/bo.json
new file mode 100644
index 000000000..99d61cd20
--- /dev/null
+++ b/library/intl/resources/country/bo.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "QA": {
+ "name": "ཀ་ཏཱར།"
+ },
+ "CM": {
+ "name": "ཀ་མེ་རུན།"
+ },
+ "KH": {
+ "name": "ཀམ་བོ་ཌི་ཡ།"
+ },
+ "KI": {
+ "name": "ཀི་རི་བཱ་ཏི།"
+ },
+ "KW": {
+ "name": "ཀུ་ཝེད་རྒྱལ་ཁབ།"
+ },
+ "HR": {
+ "name": "ཀུརོ་ཤི་ཡ།"
+ },
+ "CK": {
+ "name": "ཀཱུག གླིང་ཕྲེན་རྒྱལ་ཁབ།"
+ },
+ "CI": {
+ "name": "ཀོ་ཊེ་ཌི། ཨི་ཝོ་རེ།"
+ },
+ "KR": {
+ "name": "ཀོ་རི་ཡ། ལྷོ་མ།"
+ },
+ "CO": {
+ "name": "ཀོ་ལོམ་བི་ཡ།"
+ },
+ "CR": {
+ "name": "ཀོ་ས྄ཊ་རི་ཀ།"
+ },
+ "KZ": {
+ "name": "ཁ་ཛཱག་སྟཱན།"
+ },
+ "CU": {
+ "name": "ཁྱུའུ་བ།"
+ },
+ "KG": {
+ "name": "ཁིར་གིཛ་སྟཱན།"
+ },
+ "CA": {
+ "name": "ཁེ་ན་ཌ།"
+ },
+ "KY": {
+ "name": "ཁེ་མེན་གླིང་ཕྲན།"
+ },
+ "KE": {
+ "name": "ཁེན་ཉི་ཡ།"
+ },
+ "GH": {
+ "name": "གྷ་ན།"
+ },
+ "GD": {
+ "name": "གྷ་རི་ན་ཌ།"
+ },
+ "GM": {
+ "name": "གྷམ་བི་ཡ།"
+ },
+ "GW": {
+ "name": "གྷི་ནི་ཡ་བིས྄་སོ།"
+ },
+ "GN": {
+ "name": "གྷི་ནི་ཡ།"
+ },
+ "GR": {
+ "name": "གྷི་རཱི་སི།"
+ },
+ "GY": {
+ "name": "གྷུ་ཡཱ་ན།"
+ },
+ "GT": {
+ "name": "གྷོ་ཊེ་མ་ལ།"
+ },
+ "GA": {
+ "name": "གེ་བཽན།"
+ },
+ "CL": {
+ "name": "ཅི་ལི།"
+ },
+ "CZ": {
+ "name": "ཅཻག་སྤྱི་མཐུན་རྒྱལ་ཁབ།"
+ },
+ "TD": {
+ "name": "ཅཻཌ།"
+ },
+ "GI": {
+ "name": "ཇིབ་རཱལ་ཊར།"
+ },
+ "GE": {
+ "name": "ཇོར་ཇི་ཡ།"
+ },
+ "JO": {
+ "name": "ཇོར་ཌན།"
+ },
+ "DK": {
+ "name": "ཌེན་མཱརྐ།"
+ },
+ "DM": {
+ "name": "ཌོ་མིན་ནི་ཀ།"
+ },
+ "DO": {
+ "name": "ཌོ་མིནནི་ཀན་སྤྱི་མཐུན་རྒྱལ་ཁབ།"
+ },
+ "TR": {
+ "name": "ཏུརཀི།"
+ },
+ "TV": {
+ "name": "ཐུ་ཝ་ལུ།"
+ },
+ "GB": {
+ "name": "དབྱིན་ཇི་"
+ },
+ "NA": {
+ "name": "ན་མི་བི་ཡ།"
+ },
+ "NE": {
+ "name": "ནའི་ཇར།"
+ },
+ "NG": {
+ "name": "ནཱའི་ཇི་རི་ཡ།"
+ },
+ "NI": {
+ "name": "ནི་ཀ་ར་གུ་ཨ།"
+ },
+ "NZ": {
+ "name": "ནིའུ་ཛི་ལན྄ཌ།"
+ },
+ "NU": {
+ "name": "ནིའུ་ཝ།"
+ },
+ "WS": {
+ "name": "ནུ་བ་ས་མོ་འ།"
+ },
+ "NO": {
+ "name": "ནོར་ཝེ།"
+ },
+ "NR": {
+ "name": "ནཽ་རུ།"
+ },
+ "PA": {
+ "name": "པ་ནཱ་མ།"
+ },
+ "PG": {
+ "name": "པ་པུ་ཨ། ནིའུ། གྷི་ནི།"
+ },
+ "PW": {
+ "name": "པ་ལཽ།"
+ },
+ "PK": {
+ "name": "པཀི་སྟཱན།"
+ },
+ "PY": {
+ "name": "པཱ་ར་གེ།"
+ },
+ "PE": {
+ "name": "པེ་རུ།"
+ },
+ "PL": {
+ "name": "པོ་ལནྜ།"
+ },
+ "PT": {
+ "name": "པོར་ཏུ་གྷལ།"
+ },
+ "FR": {
+ "name": "ཕ་རཱན་སི།"
+ },
+ "FK": {
+ "name": "ཕལྐ་ལནྜ་གླིང་ཕྲན།"
+ },
+ "FJ": {
+ "name": "ཕི་ཇི།"
+ },
+ "PH": {
+ "name": "ཕི་ལི་པིནས྄།"
+ },
+ "FI": {
+ "name": "ཕིན་ལན྄ཌ།"
+ },
+ "BR": {
+ "name": "བ་རཱ་ཛིལ།"
+ },
+ "BD": {
+ "name": "བངྒ་ལ་དེཤ།"
+ },
+ "BM": {
+ "name": "བར་མུ་ཌ།"
+ },
+ "NP": {
+ "name": "བར་ཡུལ་"
+ },
+ "BF": {
+ "name": "བརཀི་ན། ཕསོ།"
+ },
+ "BS": {
+ "name": "བྷཱ་མས྄།"
+ },
+ "BH": {
+ "name": "བྷཱ་རེན།"
+ },
+ "BB": {
+ "name": "བཱརྦ་ཌོས྄།"
+ },
+ "BJ": {
+ "name": "བཱེ་ནིན།"
+ },
+ "VN": {
+ "name": "བི་དི་ནམ།"
+ },
+ "BN": {
+ "name": "བུ་རུ་ནེ།"
+ },
+ "BI": {
+ "name": "བུ་རུན་ཌི།"
+ },
+ "BG": {
+ "name": "བུལ་ག་རི་ཡ།"
+ },
+ "BZ": {
+ "name": "བེ་ལིཛ།"
+ },
+ "BY": {
+ "name": "བེ་ལུ་རུ་སུ།"
+ },
+ "BE": {
+ "name": "བེལ་ཇི་ཡམ།"
+ },
+ "BO": {
+ "name": "བོ་ལི་ཝིཡ།"
+ },
+ "BW": {
+ "name": "བོཙ་ཝ་ན།"
+ },
+ "BA": {
+ "name": "བོསྣི་ཡ་དང་ཧརྫོ་གོ་ཝི་ན།"
+ },
+ "MG": {
+ "name": "མ་དཱ་གྷསྐཱར།"
+ },
+ "ML": {
+ "name": "མ་ལི།"
+ },
+ "MY": {
+ "name": "མ་ལེ་ཤི་ཡ།"
+ },
+ "MT": {
+ "name": "མལ་ཊ།"
+ },
+ "MV": {
+ "name": "མལ་དྭིབ།"
+ },
+ "MW": {
+ "name": "མཱ་ལཱ་ཝི།"
+ },
+ "MH": {
+ "name": "མཱར་ཤལ་གླིང་ཕྲེན།"
+ },
+ "MX": {
+ "name": "མེཀ་སི་ཀོ།"
+ },
+ "MC": {
+ "name": "མོ་ན་ཀོ།"
+ },
+ "MZ": {
+ "name": "མོ་ཛམ་བིག།"
+ },
+ "MA": {
+ "name": "མོ་རོ་ཀྐོ།"
+ },
+ "MR": {
+ "name": "མཽ་རི་ཏ་ནི་ཡ།"
+ },
+ "MU": {
+ "name": "མཽ་རིཤས྄།"
+ },
+ "JM": {
+ "name": "ཛ་མེ་ཀ།"
+ },
+ "ZM": {
+ "name": "ཛམ་བི་ཡ།"
+ },
+ "DJ": {
+ "name": "ཛི་བུ་ཏི།"
+ },
+ "ZW": {
+ "name": "ཛིམ་བྷཱ་བེ།"
+ },
+ "VU": {
+ "name": "ཝ་ནུ་ཨ་ཐུ།"
+ },
+ "VA": {
+ "name": "ཝེ་ཊི་ཀན།"
+ },
+ "VE": {
+ "name": "ཝེ་ནི་ཛུའེ་ལ།"
+ },
+ "DE": {
+ "name": "འཇར་མན་"
+ },
+ "MM": {
+ "name": "འབར་མ།"
+ },
+ "BT": {
+ "name": "འབྲུག་ཡུལ།"
+ },
+ "UA": {
+ "name": "ཡུ་ཀྲན།"
+ },
+ "UG": {
+ "name": "ཡུ་གན་ཌ།"
+ },
+ "YE": {
+ "name": "ཡེ་མེན།"
+ },
+ "IN": {
+ "name": "རྒྱ་གར་"
+ },
+ "CN": {
+ "name": "རྒྱ་ནག"
+ },
+ "JP": {
+ "name": "རི་པིན་"
+ },
+ "RW": {
+ "name": "རུ་ཝན་ཌ།"
+ },
+ "RO": {
+ "name": "རོ་མཱ་ནིཡ།"
+ },
+ "LU": {
+ "name": "ལཀ་ཛམ་བོརྒ།"
+ },
+ "LV": {
+ "name": "ལཏ་བི་ཡ།"
+ },
+ "ZA": {
+ "name": "ལྷོ་ ཨཕྲི་ཀ།"
+ },
+ "AQ": {
+ "name": "ལྷོ་རྩེའི་མཐའ་གླིང་།"
+ },
+ "LA": {
+ "name": "ལཱ་འོས།"
+ },
+ "LT": {
+ "name": "ལི་ཐུ་ཨེ་ནི་ཡ།"
+ },
+ "LY": {
+ "name": "ལི་བི་ཡ།"
+ },
+ "LR": {
+ "name": "ལི་བེ་རི་ཡ།"
+ },
+ "LS": {
+ "name": "ལེ་སོ་ཐོ།"
+ },
+ "LI": {
+ "name": "ལེག་ཏེན་ཚིན།"
+ },
+ "LB": {
+ "name": "ལེབ་ནོན།"
+ },
+ "LK": {
+ "name": "ཤྲཱི་ལངྐ་།"
+ },
+ "ST": {
+ "name": "ས་འོ་ཏོད་མད། དང༌། པ྄རིན་སི་པེ།"
+ },
+ "SK": {
+ "name": "ས་ལཽ་ཝཀྱ།"
+ },
+ "SI": {
+ "name": "ས་ལཽ་ཝེ་ནི་ཡ།"
+ },
+ "SM": {
+ "name": "སན་མེ་རི་ནོ།"
+ },
+ "SC": {
+ "name": "སཱ་ཤཻལ།"
+ },
+ "CY": {
+ "name": "སཱཡེ་པ་རས྄།"
+ },
+ "ES": {
+ "name": "སི་པན།"
+ },
+ "SG": {
+ "name": "སིངྒ་པུར།"
+ },
+ "SD": {
+ "name": "སུ་དཱན།"
+ },
+ "SR": {
+ "name": "སུ་རི་ནཱམ།"
+ },
+ "SN": {
+ "name": "སེ་ནི་གྷལ།"
+ },
+ "SL": {
+ "name": "སེ་ཡར་ར། ལིའོན།"
+ },
+ "KN": {
+ "name": "སེནྚ། ཀིཊྚས྄། དང༌། ནེ་བིས྄།"
+ },
+ "VC": {
+ "name": "སེནྚ། ཝིན་སན། དང༌། གྷིརིན་ཌིན།"
+ },
+ "LC": {
+ "name": "སེནྚ། ལུ་ཤི་ཡ།"
+ },
+ "SH": {
+ "name": "སེནྚ། ཧེ་ལི་ན།"
+ },
+ "RS": {
+ "name": "སེར་བི་ཡ།"
+ },
+ "SO": {
+ "name": "སོ་མཱལི་ཡ།"
+ },
+ "SB": {
+ "name": "སོ་ལོ་མོན། གླིང་ཕྲན་ཚོ་ཁག།"
+ },
+ "MN": {
+ "name": "སོག་ཡུལ།"
+ },
+ "SA": {
+ "name": "སཽ་དྷི་ཨ་རཱ་བི་ཡ།"
+ },
+ "HU": {
+ "name": "ཧངྒ་རི།"
+ },
+ "NL": {
+ "name": "ཧའོ་ལན།"
+ },
+ "CH": {
+ "name": "ཧྲུད་ཧྲི།"
+ },
+ "SE": {
+ "name": "ཧྲུའི་ཏན།"
+ },
+ "HT": {
+ "name": "ཧེ་ཏི།"
+ },
+ "HN": {
+ "name": "ཧོན་དུ་རས྄།"
+ },
+ "US": {
+ "name": "ཨ་མེ་རི་ཀ།"
+ },
+ "IE": {
+ "name": "ཨ་ཡར་ལནཌ།"
+ },
+ "AE": {
+ "name": "ཨ་རབ། ཨི་མི་རཊ྄། ཆིག་སྒྲིལ་རྒྱལ་ཁབ།"
+ },
+ "AW": {
+ "name": "ཨ་རུ་བ།"
+ },
+ "IS": {
+ "name": "ཨ་ཨི་སི་ལནད།"
+ },
+ "AI": {
+ "name": "ཨང་གུའི་ལ།"
+ },
+ "AO": {
+ "name": "ཨང་གཽ་ལ།"
+ },
+ "AF": {
+ "name": "ཨཕ་ག་ནི་སྟཱན།"
+ },
+ "AZ": {
+ "name": "ཨཛར་བཡེ་ཇན།"
+ },
+ "AR": {
+ "name": "ཨར་ཇེན་ཊི་ན།"
+ },
+ "AM": {
+ "name": "ཨར་མེ་ནི་ཡ།"
+ },
+ "DZ": {
+ "name": "ཨལ་ཇི་རི་ཡ།"
+ },
+ "AL": {
+ "name": "ཨལ་བཱ་ནི་ཡ།"
+ },
+ "AT": {
+ "name": "ཨསྟྲི་ཡ།"
+ },
+ "AU": {
+ "name": "ཨསྟྲེ་ལི་ཡ།"
+ },
+ "IT": {
+ "name": "ཨི་ཀྲར་ལི་"
+ },
+ "EC": {
+ "name": "ཨི་ཁྭ་ཌོར།"
+ },
+ "EG": {
+ "name": "ཨི་ཇིབྚ།"
+ },
+ "ET": {
+ "name": "ཨི་ཐིའོ་པི་ཡ།"
+ },
+ "IL": {
+ "name": "ཨི་ཛ྄་རེལ།"
+ },
+ "IQ": {
+ "name": "ཨི་རག།"
+ },
+ "IR": {
+ "name": "ཨི་རཱན།"
+ },
+ "ID": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡ།"
+ },
+ "EE": {
+ "name": "ཨིསྟོ་ནི་ཡ།"
+ },
+ "UY": {
+ "name": "ཨུ་རུ་གྷེ།"
+ },
+ "RU": {
+ "name": "ཨུ་རུ་སུ་"
+ },
+ "UZ": {
+ "name": "ཨུཛ་བེ་ཀིསྟཱན།"
+ },
+ "ER": {
+ "name": "ཨེ་རི་ཏྲེ་ཨ།"
+ },
+ "AG": {
+ "name": "ཨེན་ཊི་གུ་དང་། བྷར་བུ་ཌ།"
+ },
+ "AD": {
+ "name": "ཨེན་ཌོ་ར།"
+ },
+ "SV": {
+ "name": "ཨེལ། སཱལ་ཝ་ཌོར།"
+ },
+ "OM": {
+ "name": "ཨོ་མན།"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/br.json b/library/intl/resources/country/br.json
new file mode 100644
index 000000000..7bdcdbde5
--- /dev/null
+++ b/library/intl/resources/country/br.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "DE": {
+ "name": "Alamagn"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua ha Barbuda"
+ },
+ "CI": {
+ "name": "Aod an Olifant"
+ },
+ "AU": {
+ "name": "Aostralia"
+ },
+ "AT": {
+ "name": "Aostria"
+ },
+ "SA": {
+ "name": "Arabia Saoudat"
+ },
+ "AR": {
+ "name": "Arcʼhantina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ha Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta ha Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "TF": {
+ "name": "Douaroù aostral Frañs"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "AE": {
+ "name": "Emirelezhioù Arab Unanet"
+ },
+ "AC": {
+ "name": "Enez Ascension"
+ },
+ "CX": {
+ "name": "Enez Christmas"
+ },
+ "NF": {
+ "name": "Enez Norfolk"
+ },
+ "PN": {
+ "name": "Enez Pitcairn"
+ },
+ "IM": {
+ "name": "Enez Vanav"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinez"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frañs"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GQ": {
+ "name": "Ginea ar Cʼheheder"
+ },
+ "GW": {
+ "name": "Ginea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GL": {
+ "name": "Greunland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadeloup"
+ },
+ "GG": {
+ "name": "Gwernenez"
+ },
+ "GF": {
+ "name": "Gwiana cʼhall"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong RMD Sina"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "AX": {
+ "name": "Inizi Åland"
+ },
+ "KY": {
+ "name": "Inizi Cayman"
+ },
+ "CK": {
+ "name": "Inizi Cook"
+ },
+ "UM": {
+ "name": "Inizi diabell ar Stadoù-Unanet"
+ },
+ "FO": {
+ "name": "Inizi Faero"
+ },
+ "FK": {
+ "name": "Inizi Falkland"
+ },
+ "GS": {
+ "name": "Inizi Georgia ar Su hag Inizi Sandwich ar Su"
+ },
+ "VI": {
+ "name": "Inizi Gwercʼh ar Stadoù-Unanet"
+ },
+ "VG": {
+ "name": "Inizi Gwercʼh Breizh-Veur"
+ },
+ "IC": {
+ "name": "Inizi Kanariez"
+ },
+ "CC": {
+ "name": "Inizi Kokoz"
+ },
+ "MP": {
+ "name": "Inizi Mariana an Norzh"
+ },
+ "MH": {
+ "name": "Inizi Marshall"
+ },
+ "TC": {
+ "name": "Inizi Turks ha Caicos"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "IE": {
+ "name": "Iwerzhon"
+ },
+ "NL": {
+ "name": "Izelvroioù"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jerzenez"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "GE": {
+ "name": "Jorjia"
+ },
+ "CV": {
+ "name": "Kab Glas"
+ },
+ "NC": {
+ "name": "Kaledonia Nevez"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kameroun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CY": {
+ "name": "Kiprenez"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komorez"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "KP": {
+ "name": "Korea an Norzh"
+ },
+ "KR": {
+ "name": "Korea ar Su"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweit"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luksembourg"
+ },
+ "MO": {
+ "name": "Macau RMD Sina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivez"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MR": {
+ "name": "Maouritania"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mecʼhiko"
+ },
+ "FM": {
+ "name": "Mikronezia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Moris"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "BQ": {
+ "name": "Nederlandat Karib"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papoua Ginea-Nevez"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perou"
+ },
+ "PF": {
+ "name": "Polinezia Cʼhall"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "DO": {
+ "name": "Republik Dominikan"
+ },
+ "CF": {
+ "name": "Republik Kreizafrikan"
+ },
+ "CZ": {
+ "name": "Republik Tchek"
+ },
+ "RE": {
+ "name": "Reünion"
+ },
+ "GB": {
+ "name": "Rouantelezh-Unanet"
+ },
+ "RO": {
+ "name": "Roumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara ar Cʼhornôg"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts ha Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SH": {
+ "name": "Saint-Helena"
+ },
+ "SB": {
+ "name": "Salomon"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikan"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "VC": {
+ "name": "Sant Visant hag ar Grenadinez"
+ },
+ "PM": {
+ "name": "Sant-Pêr-ha-Mikelon"
+ },
+ "ST": {
+ "name": "São Tomé ha Príncipe"
+ },
+ "SC": {
+ "name": "Sechelez"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "ES": {
+ "name": "Spagn"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadoù-Unanet"
+ },
+ "ZA": {
+ "name": "Suafrika"
+ },
+ "CH": {
+ "name": "Suis"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SS": {
+ "name": "Susoudan"
+ },
+ "SJ": {
+ "name": "Svalbard"
+ },
+ "SE": {
+ "name": "Sveden"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "IO": {
+ "name": "Tiriad breizhveurat Meurvor Indez"
+ },
+ "PS": {
+ "name": "Tiriadoù Palestina"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ha Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viêt Nam"
+ },
+ "WF": {
+ "name": "Wallis ha Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeland-Nevez"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/brx.json b/library/intl/resources/country/brx.json
new file mode 100644
index 000000000..772221ec7
--- /dev/null
+++ b/library/intl/resources/country/brx.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AZ": {
+ "name": "अज़रबैजान"
+ },
+ "AQ": {
+ "name": "अंटार्कटिका"
+ },
+ "AF": {
+ "name": "अफ़ग़ानिस्तान"
+ },
+ "AS": {
+ "name": "अमरिकी समोआ"
+ },
+ "AW": {
+ "name": "अरूबा"
+ },
+ "AR": {
+ "name": "अर्जेण्टिना"
+ },
+ "DZ": {
+ "name": "अल्जीरिया"
+ },
+ "AL": {
+ "name": "अल्बानिया"
+ },
+ "IS": {
+ "name": "आइसलैंड"
+ },
+ "IM": {
+ "name": "आईल ऑफ़ मैन"
+ },
+ "CI": {
+ "name": "आईवरी कोस्ट"
+ },
+ "IE": {
+ "name": "आयरलैंड"
+ },
+ "AM": {
+ "name": "आर्मेनिया"
+ },
+ "AX": {
+ "name": "आलाँड द्वीप"
+ },
+ "GQ": {
+ "name": "इक्वेटोरियल गिनी"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "ET": {
+ "name": "इथिओपिया"
+ },
+ "IL": {
+ "name": "इस्राइल"
+ },
+ "IQ": {
+ "name": "ईराक़"
+ },
+ "IR": {
+ "name": "ईरान"
+ },
+ "UZ": {
+ "name": "उज़बेकिस्तान"
+ },
+ "KP": {
+ "name": "उत्तर कोरिया"
+ },
+ "MP": {
+ "name": "उत्तरी मारियाना द्वीप"
+ },
+ "AD": {
+ "name": "ऍन्डोरा"
+ },
+ "SV": {
+ "name": "ऍल साल्वाडोर"
+ },
+ "EC": {
+ "name": "एक्वाडोर"
+ },
+ "AI": {
+ "name": "एंगीला"
+ },
+ "AG": {
+ "name": "एन्टिगुआ एवं बारबूडा"
+ },
+ "ER": {
+ "name": "एरिट्रिया"
+ },
+ "EE": {
+ "name": "एस्टोनिया"
+ },
+ "AT": {
+ "name": "ऑस्ट्रिया"
+ },
+ "AU": {
+ "name": "ऑस्ट्रेलिया"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KZ": {
+ "name": "कज़ाखस्तान"
+ },
+ "QA": {
+ "name": "क़तार"
+ },
+ "KH": {
+ "name": "कम्बोडिया"
+ },
+ "KI": {
+ "name": "किरिबाती"
+ },
+ "KG": {
+ "name": "किर्गिज़"
+ },
+ "CK": {
+ "name": "कुक द्वीप"
+ },
+ "KW": {
+ "name": "कुवैत"
+ },
+ "KE": {
+ "name": "केन्या"
+ },
+ "KY": {
+ "name": "केमैन द्वीप"
+ },
+ "CA": {
+ "name": "कैनाडा"
+ },
+ "CV": {
+ "name": "कैप वेर्दे"
+ },
+ "CD": {
+ "name": "कॉंगो किनशासा"
+ },
+ "CG": {
+ "name": "कॉंगो ब्राज़्ज़ावील"
+ },
+ "CC": {
+ "name": "कोकोस द्वीप"
+ },
+ "CM": {
+ "name": "कोमेरान"
+ },
+ "KM": {
+ "name": "कोमोरोज़"
+ },
+ "CO": {
+ "name": "कोलम्बिया"
+ },
+ "CR": {
+ "name": "कोस्टारीका"
+ },
+ "CU": {
+ "name": "क्यूबा"
+ },
+ "CX": {
+ "name": "क्रिस्मस द्वीप"
+ },
+ "HR": {
+ "name": "क्रोएशिया"
+ },
+ "GM": {
+ "name": "गाम्बिया"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गीनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गुआम"
+ },
+ "GY": {
+ "name": "गुयाना"
+ },
+ "GG": {
+ "name": "गेर्नसे"
+ },
+ "GA": {
+ "name": "गैबॉन"
+ },
+ "GT": {
+ "name": "गोतेदाला"
+ },
+ "GL": {
+ "name": "ग्रीनलैण्ड"
+ },
+ "GR": {
+ "name": "ग्रीस"
+ },
+ "GD": {
+ "name": "ग्रेनडा"
+ },
+ "GP": {
+ "name": "ग्वादलुप"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणराज्य"
+ },
+ "JM": {
+ "name": "जमाइका"
+ },
+ "DE": {
+ "name": "जर्मनी"
+ },
+ "JE": {
+ "name": "जर्सी"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "ज़ाम्बिया"
+ },
+ "GI": {
+ "name": "जिब्राल्टर"
+ },
+ "ZW": {
+ "name": "ज़ीम्बाब्वे"
+ },
+ "GE": {
+ "name": "जॉर्जिया"
+ },
+ "JO": {
+ "name": "जॉर्डन"
+ },
+ "TO": {
+ "name": "टॉंगा"
+ },
+ "TK": {
+ "name": "टोकेलौ"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TT": {
+ "name": "ट्रिनिडाड एवं टोबैगो"
+ },
+ "DK": {
+ "name": "डेनमार्क"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणराज्य"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TZ": {
+ "name": "तंज़ानिया"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिस्तान"
+ },
+ "TM": {
+ "name": "तुर्कमेनीस्तान"
+ },
+ "TR": {
+ "name": "तुर्की"
+ },
+ "TC": {
+ "name": "तुर्की एवं कैकोज़ द्वीप"
+ },
+ "TV": {
+ "name": "तुवालु"
+ },
+ "TN": {
+ "name": "त्युनिशिया"
+ },
+ "TH": {
+ "name": "थाइलैण्ड"
+ },
+ "ZA": {
+ "name": "दक्षिण अफ्रीका"
+ },
+ "KR": {
+ "name": "दक्षिण कोरिया"
+ },
+ "GS": {
+ "name": "दक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीप"
+ },
+ "DJ": {
+ "name": "द्जिबूती"
+ },
+ "NG": {
+ "name": "नाइजीरिया"
+ },
+ "NE": {
+ "name": "नाइजेर"
+ },
+ "NR": {
+ "name": "नाउरू"
+ },
+ "NA": {
+ "name": "नामीबिया"
+ },
+ "NI": {
+ "name": "निकारागुआ"
+ },
+ "NU": {
+ "name": "नीयूए"
+ },
+ "NL": {
+ "name": "नेदरलैण्ड"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नॉरफ़ॉक द्वीप"
+ },
+ "NO": {
+ "name": "नॉर्वे"
+ },
+ "NC": {
+ "name": "न्यू कैलेडोनिया"
+ },
+ "NZ": {
+ "name": "न्यूज़ीलैंड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पश्चिमी सहारा"
+ },
+ "PK": {
+ "name": "पाकिस्तान"
+ },
+ "PG": {
+ "name": "पापुआ न्यू गिनी"
+ },
+ "PY": {
+ "name": "पारागुए"
+ },
+ "PN": {
+ "name": "पिटकेर्न"
+ },
+ "PR": {
+ "name": "पुएर्टो रीको"
+ },
+ "PT": {
+ "name": "पुर्तगाल"
+ },
+ "TL": {
+ "name": "पूर्वी तिमोर"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PL": {
+ "name": "पोलैण्ड"
+ },
+ "FO": {
+ "name": "फरो द्वीप"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिनलैंड"
+ },
+ "PS": {
+ "name": "फ़िलिस्तीन"
+ },
+ "PH": {
+ "name": "फिलीपिन्स"
+ },
+ "FK": {
+ "name": "फ़ॉल्कलैंड द्वीप"
+ },
+ "FR": {
+ "name": "फ्राँस"
+ },
+ "TF": {
+ "name": "फ्राँसीसी उत्तरी क्षेत्रों"
+ },
+ "GF": {
+ "name": "फ्राँसीसी गिआना"
+ },
+ "PF": {
+ "name": "फ्राँसीसी पॉलिनीशिया"
+ },
+ "BD": {
+ "name": "बंगलादेश"
+ },
+ "BM": {
+ "name": "बरमूडा"
+ },
+ "BG": {
+ "name": "बल्गैरिया"
+ },
+ "BH": {
+ "name": "बहरैन"
+ },
+ "BS": {
+ "name": "बहामा"
+ },
+ "BB": {
+ "name": "बारबाडोस"
+ },
+ "BI": {
+ "name": "बुरुंडी"
+ },
+ "BF": {
+ "name": "बुर्किना फासो"
+ },
+ "BJ": {
+ "name": "बेनेँ"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलिज़"
+ },
+ "BE": {
+ "name": "बेल्जियम"
+ },
+ "BW": {
+ "name": "बोत्स्वाना"
+ },
+ "BO": {
+ "name": "बोलीविया"
+ },
+ "BA": {
+ "name": "बोसनिया हर्ज़ेगोविना"
+ },
+ "BR": {
+ "name": "ब्राज़ील"
+ },
+ "VG": {
+ "name": "ब्रिटिश वर्जीन आईलंड्स"
+ },
+ "IO": {
+ "name": "ब्रिटिश हिंद महासागरिय क्षेत्र"
+ },
+ "GB": {
+ "name": "ब्रितन"
+ },
+ "BN": {
+ "name": "ब्रूनइ"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूटान"
+ },
+ "MO": {
+ "name": "मकाओ विशेष प्रशासनिक क्षेत्र (चीन)"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MG": {
+ "name": "मदागास्कर"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "FM": {
+ "name": "माइक्रोनेशिया"
+ },
+ "MQ": {
+ "name": "मार्टीनिक"
+ },
+ "MH": {
+ "name": "मार्शल द्वीप"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "माल्टा"
+ },
+ "EG": {
+ "name": "मिस्र"
+ },
+ "MX": {
+ "name": "मैक्सिको"
+ },
+ "YT": {
+ "name": "मैयौट"
+ },
+ "MK": {
+ "name": "मैसेडोनिया"
+ },
+ "MR": {
+ "name": "मॉरिटेनिया"
+ },
+ "MU": {
+ "name": "मॉरिस"
+ },
+ "MS": {
+ "name": "मॉंसेरा"
+ },
+ "MZ": {
+ "name": "मोज़ाम्बिक"
+ },
+ "ME": {
+ "name": "मोंटेनेग्रो"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MA": {
+ "name": "मोरोक्को"
+ },
+ "MD": {
+ "name": "मोल्डेविया"
+ },
+ "MM": {
+ "name": "म्यानमार"
+ },
+ "YE": {
+ "name": "यमन"
+ },
+ "VI": {
+ "name": "यु.एस. वर्जीन आईलंड्स"
+ },
+ "UG": {
+ "name": "युगाँडा"
+ },
+ "UM": {
+ "name": "युनाइटेड स्टेट्स के छोटे बाहरिय द्वीप"
+ },
+ "UY": {
+ "name": "युरूगुए"
+ },
+ "UA": {
+ "name": "यूक्रेन"
+ },
+ "RW": {
+ "name": "रूआण्डा"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RE": {
+ "name": "रेयूनियॉं"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लक्समबर्ग"
+ },
+ "LS": {
+ "name": "लसोथो"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लाट्वीया"
+ },
+ "LI": {
+ "name": "लिक्टैनस्टाईन"
+ },
+ "LT": {
+ "name": "लिथुआनिया"
+ },
+ "LY": {
+ "name": "लीबिया"
+ },
+ "LB": {
+ "name": "लेबनोन"
+ },
+ "VU": {
+ "name": "वानाऊटु"
+ },
+ "VN": {
+ "name": "वियतनाम"
+ },
+ "VE": {
+ "name": "वेनेज़ुएला"
+ },
+ "VA": {
+ "name": "वैटिकन"
+ },
+ "WF": {
+ "name": "वॉलेस एवं फ़्यूचूना"
+ },
+ "LK": {
+ "name": "श्री लँका"
+ },
+ "SA": {
+ "name": "सऊदी अरब"
+ },
+ "WS": {
+ "name": "समोआ"
+ },
+ "AE": {
+ "name": "संयुक्त अरब अमीरात"
+ },
+ "US": {
+ "name": "संयुक्त राज्य अमरिका"
+ },
+ "RS": {
+ "name": "सर्बिया"
+ },
+ "CY": {
+ "name": "साइप्रस"
+ },
+ "ST": {
+ "name": "साउँ-तोमे एवं प्रिंसिप"
+ },
+ "SG": {
+ "name": "सिंगापुर"
+ },
+ "SL": {
+ "name": "सियेरा लेओन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SR": {
+ "name": "सुरिनाम"
+ },
+ "SD": {
+ "name": "सूदान"
+ },
+ "PM": {
+ "name": "सेँ पीएर एवं मि‍केलॉं"
+ },
+ "BL": {
+ "name": "सेँ बार्थेलेमी"
+ },
+ "MF": {
+ "name": "सेँ मार्टेँ"
+ },
+ "KN": {
+ "name": "सेंट किट्स एवं नेविस"
+ },
+ "LC": {
+ "name": "सेंट लूसिया"
+ },
+ "VC": {
+ "name": "सेंट विंसंट एवं दी ग्रनाडीन्स्"
+ },
+ "CF": {
+ "name": "सेंट्रल अफ्रीकन रिपब्लिक"
+ },
+ "SH": {
+ "name": "सेण्‍ट हेलेना"
+ },
+ "SN": {
+ "name": "सेनेगाल"
+ },
+ "SC": {
+ "name": "सेशेल्स"
+ },
+ "SM": {
+ "name": "सैन मरीनो"
+ },
+ "SB": {
+ "name": "सॉलोमन द्वीप"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "ES": {
+ "name": "स्पेन"
+ },
+ "SK": {
+ "name": "स्लोवाकिया"
+ },
+ "SI": {
+ "name": "स्लोवेनिया"
+ },
+ "SZ": {
+ "name": "स्वाज़ीलैंड"
+ },
+ "SJ": {
+ "name": "स्वाल्बार्ड एवं यान मायेन"
+ },
+ "CH": {
+ "name": "स्वित्ज़रलैंड"
+ },
+ "SE": {
+ "name": "स्वीडन"
+ },
+ "HU": {
+ "name": "हंगरी"
+ },
+ "HT": {
+ "name": "हाइती"
+ },
+ "HK": {
+ "name": "हाँगकाँग विशेष प्रशासनिक क्षेत्र चीन"
+ },
+ "HN": {
+ "name": "हौण्डूरास"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bs-Cyrl.json b/library/intl/resources/country/bs-Cyrl.json
new file mode 100644
index 000000000..70810fd3c
--- /dev/null
+++ b/library/intl/resources/country/bs-Cyrl.json
@@ -0,0 +1,761 @@
+{
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "AF": {
+ "name": "Авганистан"
+ },
+ "AZ": {
+ "name": "Азербејџан"
+ },
+ "AX": {
+ "name": "Аландска острва"
+ },
+ "AL": {
+ "name": "Албанија"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Америчка Самоа"
+ },
+ "AI": {
+ "name": "Ангвила"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андора"
+ },
+ "AQ": {
+ "name": "Антарктик"
+ },
+ "AG": {
+ "name": "Антигве и Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AM": {
+ "name": "Арменија"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AU": {
+ "name": "Аустралија"
+ },
+ "AT": {
+ "name": "Аустрија"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "Белорусија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "CX": {
+ "name": "Божићна острва"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "Босна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "Британска Девичанска Острва"
+ },
+ "IO": {
+ "name": "Британска територија у Индијском океану"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "Бугарска"
+ },
+ "BF": {
+ "name": "Буркина Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "WF": {
+ "name": "Валис и Футуна Острва"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика Британија"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Вијетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-Бисао"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грчка"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "Гурнси"
+ },
+ "DK": {
+ "name": "Данска"
+ },
+ "DG": {
+ "name": "Дијего Гарсија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминиканска Република"
+ },
+ "EG": {
+ "name": "Египат"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторијална Гвинеја"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "EE": {
+ "name": "Естонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирска"
+ },
+ "IS": {
+ "name": "Исланд"
+ },
+ "TL": {
+ "name": "Источни Тимор"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапан"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Џорџија и Јужна Сендвич Острва"
+ },
+ "SS": {
+ "name": "Јужни Судан"
+ },
+ "ZA": {
+ "name": "Јужноафричка Република"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кајманска Острва"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарска острва"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "Киргизстан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос (Келинг) Острва"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "Коморска Острва"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - Киншаса"
+ },
+ "CR": {
+ "name": "Костарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукова Острва"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LV": {
+ "name": "Летонија"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "Луксембург"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "HU": {
+ "name": "Мађарска"
+ },
+ "YT": {
+ "name": "Мајоте"
+ },
+ "MO": {
+ "name": "Макао С. А. Р. Кина"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "UM": {
+ "name": "Мања удаљена острва САД"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "Маршалска Острва"
+ },
+ "MR": {
+ "name": "Мауританија"
+ },
+ "MU": {
+ "name": "Маурицијус"
+ },
+ "MX": {
+ "name": "Мексико"
+ },
+ "MM": {
+ "name": "Мијанмар (Бурма)"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "Монсерат"
+ },
+ "NA": {
+ "name": "Намибија"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "DE": {
+ "name": "Немачка"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерија"
+ },
+ "NI": {
+ "name": "Никарагва"
+ },
+ "NU": {
+ "name": "Ниуе"
+ },
+ "NC": {
+ "name": "Нова Каледонија"
+ },
+ "NZ": {
+ "name": "Нови Зеланд"
+ },
+ "NO": {
+ "name": "Норвешка"
+ },
+ "NF": {
+ "name": "Норфолк Острво"
+ },
+ "CI": {
+ "name": "Обала Слоноваче"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "Острво Асенсион"
+ },
+ "IM": {
+ "name": "Острво Ман"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестинске територије"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Нова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкерн"
+ },
+ "PL": {
+ "name": "Пољска"
+ },
+ "PR": {
+ "name": "Порто Рико"
+ },
+ "PT": {
+ "name": "Португалија"
+ },
+ "RE": {
+ "name": "Реинион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румунија"
+ },
+ "RU": {
+ "name": "Русија"
+ },
+ "VI": {
+ "name": "С.А.Д. Девичанска Острва"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принципе"
+ },
+ "SA": {
+ "name": "Саудијска Арабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Јанмајен Острва"
+ },
+ "SH": {
+ "name": "Света Јелена"
+ },
+ "BL": {
+ "name": "Свети Бартоломеј"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северна Маријанска Острва"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "PM": {
+ "name": "Сен Пјер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент Винсент и Гренадини"
+ },
+ "KN": {
+ "name": "Сент Китс и Невис"
+ },
+ "LC": {
+ "name": "Сент Луција"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сијера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "US": {
+ "name": "Сједињене Америчке Државе"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "SB": {
+ "name": "Соломонска Острва"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "Таџикистан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "TC": {
+ "name": "Туркс и Кајкос Острва"
+ },
+ "TR": {
+ "name": "Турска"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "AE": {
+ "name": "Уједињени Арапски Емирати"
+ },
+ "UA": {
+ "name": "Украјина"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "Фарска Острва"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "Финска"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "Фокландска острва"
+ },
+ "FR": {
+ "name": "Француска"
+ },
+ "GF": {
+ "name": "Француска Гвајана"
+ },
+ "PF": {
+ "name": "Француска Полинезија"
+ },
+ "TF": {
+ "name": "Француске Јужне Територије"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С. А. Р. Кина"
+ },
+ "HN": {
+ "name": "Хондурас"
+ },
+ "HR": {
+ "name": "Хрватска"
+ },
+ "CF": {
+ "name": "Централно Афричка Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "Чешка"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "Џерси"
+ },
+ "DJ": {
+ "name": "Џибути"
+ },
+ "CH": {
+ "name": "Швајцарска"
+ },
+ "SE": {
+ "name": "Шведска"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bs.json b/library/intl/resources/country/bs.json
new file mode 100644
index 000000000..7b76f80cc
--- /dev/null
+++ b/library/intl/resources/country/bs.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Alandska Ostrva"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "AS": {
+ "name": "Američka Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbejdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorusija"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićna Ostrva"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanska Djevičanska Ostrva"
+ },
+ "IO": {
+ "name": "Britanska Territorija u Indijskom Okeanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "Centralnoafrička Republika"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "Čile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "CD": {
+ "name": "Demokratska Republika Kongo"
+ },
+ "DG": {
+ "name": "Dijego Garsija"
+ },
+ "VI": {
+ "name": "Djevičanska Ostrva SAD"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "JE": {
+ "name": "Džersi"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorijalna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farska Ostrva"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FK": {
+ "name": "Folklandska Ostrva"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne Teritorije"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernzi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grčka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisao"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandija"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong (S. A. R. Kina)"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "AM": {
+ "name": "Jermenija"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Džordžija i Južna Sendvič Ostrva"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "Južnoafrička Republika"
+ },
+ "KY": {
+ "name": "Kajmanska Ostrva"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarska ostrva"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "BQ": {
+ "name": "Karipska Holandija"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "CY": {
+ "name": "Kipar"
+ },
+ "KG": {
+ "name": "Kirgizstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Keling) Ostrva"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorska Ostrva"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kukova Ostrva"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonija"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litvanija"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "YT": {
+ "name": "Majote"
+ },
+ "MO": {
+ "name": "Makao (S. A. R. Kina)"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "UM": {
+ "name": "Manja Udaljena Ostrva SAD"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalska Ostrva"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricius"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Ostrvo"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "DE": {
+ "name": "Njemačka"
+ },
+ "CI": {
+ "name": "Obala Slonovače"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AC": {
+ "name": "Ostrvo Asension"
+ },
+ "IM": {
+ "name": "Ostrvo Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska Teritorija"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Rejunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome i Principe"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "PM": {
+ "name": "Sen Pjer i Mikelon"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent Kits i Nevis"
+ },
+ "LC": {
+ "name": "Sent Lucija"
+ },
+ "VC": {
+ "name": "Sent Vinsent i Grenadini"
+ },
+ "EA": {
+ "name": "Seuta i Melilja"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Marten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene Američke Države"
+ },
+ "KP": {
+ "name": "Sjeverna Koreja"
+ },
+ "MP": {
+ "name": "Sjeverna Marijanska Ostrva"
+ },
+ "SK": {
+ "name": "Slovačka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SB": {
+ "name": "Solomonska Ostrva"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "BL": {
+ "name": "Sv. Bartolomej"
+ },
+ "MF": {
+ "name": "Sv. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard i Janmajen Ostrva"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "ES": {
+ "name": "Španija"
+ },
+ "LK": {
+ "name": "Šri Lanka"
+ },
+ "SE": {
+ "name": "Švedska"
+ },
+ "CH": {
+ "name": "Švicarska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kunja"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks i Kajkos Ostrva"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "WF": {
+ "name": "Valis i Futuna Ostrva"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venecuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ca.json b/library/intl/resources/country/ca.json
new file mode 100644
index 000000000..862cc0125
--- /dev/null
+++ b/library/intl/resources/country/ca.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albània"
+ },
+ "DE": {
+ "name": "Alemanya"
+ },
+ "DZ": {
+ "name": "Algèria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antàrtida"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Aràbia Saudita"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armènia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austràlia"
+ },
+ "AT": {
+ "name": "Àustria"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahames"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangla Desh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Bèlgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bòsnia i Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgària"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canadà"
+ },
+ "CV": {
+ "name": "Cap Verd"
+ },
+ "BQ": {
+ "name": "Carib Neerlandès"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "VA": {
+ "name": "Ciutat del Vaticà"
+ },
+ "CO": {
+ "name": "Colòmbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Corea del Nord"
+ },
+ "KR": {
+ "name": "Corea del Sud"
+ },
+ "CI": {
+ "name": "Costa d’Ivori"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croàcia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egipte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirats Àrabs Units"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovàquia"
+ },
+ "SI": {
+ "name": "Eslovènia"
+ },
+ "ES": {
+ "name": "Espanya"
+ },
+ "US": {
+ "name": "Estats Units"
+ },
+ "EE": {
+ "name": "Estònia"
+ },
+ "ET": {
+ "name": "Etiòpia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipines"
+ },
+ "FI": {
+ "name": "Finlàndia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gàmbia"
+ },
+ "GE": {
+ "name": "Geòrgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grècia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlàndia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GF": {
+ "name": "Guaiana Francesa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Equatorial"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Hondures"
+ },
+ "HK": {
+ "name": "Hong Kong (RAE Xina)"
+ },
+ "HU": {
+ "name": "Hongria"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "CX": {
+ "name": "illa Christmas"
+ },
+ "AC": {
+ "name": "illa de l’Ascensió"
+ },
+ "RE": {
+ "name": "Illa de la Reunió"
+ },
+ "IM": {
+ "name": "illa de Man"
+ },
+ "AX": {
+ "name": "illes Åland"
+ },
+ "KY": {
+ "name": "Illes Caiman"
+ },
+ "IC": {
+ "name": "illes Canàries"
+ },
+ "CC": {
+ "name": "illes Cocos"
+ },
+ "CK": {
+ "name": "illes Cook"
+ },
+ "FO": {
+ "name": "illes Fèroe"
+ },
+ "GS": {
+ "name": "illes Geòrgia del Sud i Sandwich del Sud"
+ },
+ "FK": {
+ "name": "Illes Malvines"
+ },
+ "MP": {
+ "name": "illes Mariannes del Nord"
+ },
+ "MH": {
+ "name": "illes Marshall"
+ },
+ "UM": {
+ "name": "illes Perifèriques Menors dels EUA"
+ },
+ "PN": {
+ "name": "illes Pitcairn"
+ },
+ "SB": {
+ "name": "illes Salomó"
+ },
+ "TC": {
+ "name": "Illes Turks i Caicos"
+ },
+ "VG": {
+ "name": "Illes Verges Britàniques"
+ },
+ "VI": {
+ "name": "Illes Verges Nord-americanes"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonèsia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islàndia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itàlia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japó"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordània"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirguizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letònia"
+ },
+ "LB": {
+ "name": "Líban"
+ },
+ "LR": {
+ "name": "Libèria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituània"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau (RAE Xina)"
+ },
+ "MK": {
+ "name": "Macedònia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malàisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marroc"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurici"
+ },
+ "MR": {
+ "name": "Mauritània"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mèxic"
+ },
+ "FM": {
+ "name": "Micronèsia"
+ },
+ "MZ": {
+ "name": "Moçambic"
+ },
+ "MD": {
+ "name": "Moldàvia"
+ },
+ "MC": {
+ "name": "Mònaco"
+ },
+ "MN": {
+ "name": "Mongòlia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MM": {
+ "name": "Myanmar (Birmània)"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigèria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledònia"
+ },
+ "NZ": {
+ "name": "Nova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Països Baixos"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panamà"
+ },
+ "PG": {
+ "name": "Papua Nova Guinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinèsia Francesa"
+ },
+ "PL": {
+ "name": "Polònia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Regne Unit"
+ },
+ "CF": {
+ "name": "República Centreafricana"
+ },
+ "ZA": {
+ "name": "República de Sud-àfrica"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CZ": {
+ "name": "República Txeca"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Sàhara Occidental"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Christopher i Nevis"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent i les Grenadines"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Nord-americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé i Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Sèrbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somàlia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan del Sud"
+ },
+ "SE": {
+ "name": "Suècia"
+ },
+ "CH": {
+ "name": "Suïssa"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilàndia"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TH": {
+ "name": "Tailàndia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzània"
+ },
+ "IO": {
+ "name": "Territori Britànic de l’Oceà Índic"
+ },
+ "TF": {
+ "name": "Territoris Francesos del Sud"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinitat i Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txad"
+ },
+ "UA": {
+ "name": "Ucraïna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Veneçuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "CL": {
+ "name": "Xile"
+ },
+ "CN": {
+ "name": "Xina"
+ },
+ "CY": {
+ "name": "Xipre"
+ },
+ "ZM": {
+ "name": "Zàmbia"
+ },
+ "ZW": {
+ "name": "Zimbàbue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cgg.json b/library/intl/resources/country/cgg.json
new file mode 100644
index 000000000..7d1d151c7
--- /dev/null
+++ b/library/intl/resources/country/cgg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "CI": {
+ "name": "Aivore Kositi"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AE": {
+ "name": "Amahanga ga Buharabu ageeteereine"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AG": {
+ "name": "Angiguwa na Babuda"
+ },
+ "AO": {
+ "name": "Angora"
+ },
+ "AI": {
+ "name": "Angwira"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "DZ": {
+ "name": "Arigyeriya"
+ },
+ "AM": {
+ "name": "Arimeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AL": {
+ "name": "Arubania"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azabagyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangaradeshi"
+ },
+ "BY": {
+ "name": "Bararusi"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "BZ": {
+ "name": "Berize"
+ },
+ "BF": {
+ "name": "Bokina Faso"
+ },
+ "BO": {
+ "name": "Boriiviya"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boziniya na Hezegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "FR": {
+ "name": "Bufaransa"
+ },
+ "FI": {
+ "name": "Bufini"
+ },
+ "DE": {
+ "name": "Bugirimaani"
+ },
+ "GB": {
+ "name": "Bungyereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BG": {
+ "name": "Burugariya"
+ },
+ "TL": {
+ "name": "Burugweizooba bwa Timori"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TR": {
+ "name": "Buturuki \/Take"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Deenimaaka"
+ },
+ "CD": {
+ "name": "Demokoratika Ripaaburika ya Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "MP": {
+ "name": "Ebizinga by’amatemba ga Mariana"
+ },
+ "TC": {
+ "name": "Ebizinga bya Buturuki na Kaiko"
+ },
+ "FK": {
+ "name": "Ebizinga bya Faakilanda"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepuvade"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kuuku"
+ },
+ "MH": {
+ "name": "Ebizinga bya Marshaa"
+ },
+ "SB": {
+ "name": "Ebizinga bya Surimaani"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini ebya Amerika"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebya Bungyereza"
+ },
+ "CF": {
+ "name": "Eihanga rya Rwagati ya Afirika"
+ },
+ "NF": {
+ "name": "Ekizinga Norifoko"
+ },
+ "SV": {
+ "name": "Eri Salivado"
+ },
+ "ER": {
+ "name": "Eriteriya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Ethiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "PH": {
+ "name": "Firipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabooni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Giburaata"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guni"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Guriinirandi"
+ },
+ "GR": {
+ "name": "Guriisi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana ya Bufaransa"
+ },
+ "GP": {
+ "name": "Gwaderupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemara"
+ },
+ "JM": {
+ "name": "Gyamaika"
+ },
+ "JP": {
+ "name": "Gyapaani"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "GE": {
+ "name": "Gyogiya"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hoorandi"
+ },
+ "EC": {
+ "name": "Ikweda"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indoneeziya"
+ },
+ "IQ": {
+ "name": "Iraaka"
+ },
+ "IR": {
+ "name": "Iraani"
+ },
+ "IE": {
+ "name": "Irerandi"
+ },
+ "IL": {
+ "name": "Isirairi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itare"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasiya"
+ },
+ "KR": {
+ "name": "Koreya Amashuuma"
+ },
+ "KP": {
+ "name": "Koreya Amatemba"
+ },
+ "CO": {
+ "name": "Korombiya"
+ },
+ "KM": {
+ "name": "Koromo"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweiti"
+ },
+ "LU": {
+ "name": "Lakizembaaga"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Marawi"
+ },
+ "MY": {
+ "name": "marayizia"
+ },
+ "ML": {
+ "name": "Mari"
+ },
+ "MV": {
+ "name": "Maridives"
+ },
+ "MT": {
+ "name": "Marita"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MK": {
+ "name": "Masedoonia"
+ },
+ "MU": {
+ "name": "Maurishiasi"
+ },
+ "MR": {
+ "name": "Mauriteeniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikironesiya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoria"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MD": {
+ "name": "Moridova"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanamar"
+ },
+ "NE": {
+ "name": "Naigya"
+ },
+ "NG": {
+ "name": "Naigyeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepo"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niukaredonia"
+ },
+ "NZ": {
+ "name": "Niuzirandi"
+ },
+ "NO": {
+ "name": "Noorwe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "AU": {
+ "name": "Ositureeriya"
+ },
+ "AT": {
+ "name": "Osituria"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palaawu"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkaini"
+ },
+ "PT": {
+ "name": "Pocugo"
+ },
+ "PF": {
+ "name": "Polinesia ya Bufaransa"
+ },
+ "PL": {
+ "name": "Poorandi"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "DO": {
+ "name": "Ripaaburika ya Dominica"
+ },
+ "CZ": {
+ "name": "Ripaaburika ya Zeeki"
+ },
+ "RE": {
+ "name": "Riyuniyoni"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Rrasha"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saipurasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa ya Ameerika"
+ },
+ "SA": {
+ "name": "Saudi Areebiya"
+ },
+ "ZA": {
+ "name": "Sausi Afirika"
+ },
+ "ST": {
+ "name": "Sawo Tome na Purinsipo"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kittis na Nevisi"
+ },
+ "PM": {
+ "name": "Senti Piyerre na Mikweron"
+ },
+ "LC": {
+ "name": "Senti Rusiya"
+ },
+ "VC": {
+ "name": "Senti Vinsent na Gurenadini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shesheresi"
+ },
+ "SG": {
+ "name": "Singapo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "LK": {
+ "name": "Siriranka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovaakiya"
+ },
+ "SI": {
+ "name": "Sirovaaniya"
+ },
+ "SL": {
+ "name": "Sirra Riyooni"
+ },
+ "SO": {
+ "name": "Somaariya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swisi"
+ },
+ "TH": {
+ "name": "Tairandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TW": {
+ "name": "Tayiwaani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokerawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TT": {
+ "name": "Turinidad na Tobago"
+ },
+ "TM": {
+ "name": "Turukimenisitani"
+ },
+ "TV": {
+ "name": "Tuvaru"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukureini"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzibekisitani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuwera"
+ },
+ "VN": {
+ "name": "Viyetinaamu"
+ },
+ "WF": {
+ "name": "Warris na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/chr.json b/library/intl/resources/country/chr.json
new file mode 100644
index 000000000..a42342766
--- /dev/null
+++ b/library/intl/resources/country/chr.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "IE": {
+ "name": "ᎠᎢᎴᏂᏗ"
+ },
+ "AM": {
+ "name": "ᎠᎵᎻᏂᎠ"
+ },
+ "AL": {
+ "name": "ᎠᎵᏇᏂᏯ"
+ },
+ "DZ": {
+ "name": "ᎠᎵᏥᎵᏯ"
+ },
+ "AW": {
+ "name": "ᎠᎷᏆ"
+ },
+ "US": {
+ "name": "ᎠᎹᏰᏟ"
+ },
+ "AS": {
+ "name": "ᎠᎺᎵᎧ ᏌᎼᎠ"
+ },
+ "PF": {
+ "name": "ᎠᏂᎦᎸᏣ ᏆᎵᏂᏏᎠ"
+ },
+ "GF": {
+ "name": "ᎠᏂᎦᎸᏥ ᎩᎠ"
+ },
+ "AI": {
+ "name": "ᎠᏂᎩᎳ"
+ },
+ "AO": {
+ "name": "ᎠᏂᎪᎳ"
+ },
+ "PH": {
+ "name": "ᎠᏂᏈᎵᎩᏃ"
+ },
+ "ES": {
+ "name": "ᎠᏂᏍᏆᏂᏱ"
+ },
+ "AD": {
+ "name": "ᎠᏂᏙᎳ"
+ },
+ "DE": {
+ "name": "ᎠᏂᏛᏥ"
+ },
+ "AT": {
+ "name": "ᎠᏍᏟᏯ"
+ },
+ "AZ": {
+ "name": "ᎠᏏᎵᏆᏌᏂ"
+ },
+ "CK": {
+ "name": "ᎠᏓᏍᏓᏴᎲᏍᎩ ᎤᎦᏚᏛ"
+ },
+ "SH": {
+ "name": "ᎠᏥᎸᏉᏗ ᎮᎵᎾ"
+ },
+ "BL": {
+ "name": "ᎠᏥᎸᏉᏗ ᏆᏕᎳᎻ"
+ },
+ "MF": {
+ "name": "ᎠᏥᎸᏉᏗ ᏡᏡ"
+ },
+ "AR": {
+ "name": "ᎠᏥᏂᏘᏂᎠ"
+ },
+ "AF": {
+ "name": "ᎠᏫᎨᏂᏍᏖᏂ"
+ },
+ "KN": {
+ "name": "ᎠᏰᏟ ᎾᎿ ᎨᏥᎸᏉᏗ ᎠᏂᏪᏌ ᎠᎴ ᎠᏂᏁᏫᏍ"
+ },
+ "FM": {
+ "name": "ᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯ"
+ },
+ "AU": {
+ "name": "ᎡᎳᏗᏜ"
+ },
+ "ER": {
+ "name": "ᎡᎵᏟᏯ"
+ },
+ "EC": {
+ "name": "ᎡᏆᏙᎵ"
+ },
+ "GQ": {
+ "name": "ᎡᏆᏙᎵᎠᎵ ᎩᎢᏂ"
+ },
+ "EE": {
+ "name": "ᎡᏍᏙᏂᏯ"
+ },
+ "CV": {
+ "name": "ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ"
+ },
+ "IQ": {
+ "name": "ᎢᎳᎩ"
+ },
+ "IR": {
+ "name": "ᎢᎴᏂ"
+ },
+ "ID": {
+ "name": "ᎢᏂᏙᏂᏍᏯ"
+ },
+ "IN": {
+ "name": "ᎢᏅᏗᎾ"
+ },
+ "IL": {
+ "name": "ᎢᏏᎵᏱ"
+ },
+ "NC": {
+ "name": "ᎢᏤ ᎧᎵᏙᏂᎠᏂ"
+ },
+ "NZ": {
+ "name": "ᎢᏤ ᏏᎢᎴᏂᏗ"
+ },
+ "GL": {
+ "name": "ᎢᏤᏍᏛᏱ"
+ },
+ "EG": {
+ "name": "ᎢᏥᏈᎢ"
+ },
+ "CI": {
+ "name": "ᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗ"
+ },
+ "AX": {
+ "name": "ᎣᎴᏅᏓ ᏚᎦᏚᏛ"
+ },
+ "OM": {
+ "name": "ᎣᎺᏂ"
+ },
+ "IM": {
+ "name": "ᎤᏍᏗ ᎤᎦᏚᏛ ᎾᎿ ᎠᏍᎦᏯ"
+ },
+ "AG": {
+ "name": "ᎤᏪᏘ ᎠᎴ ᏆᏊᏓ"
+ },
+ "GH": {
+ "name": "ᎦᎠᎾ"
+ },
+ "FR": {
+ "name": "ᎦᎸᏥᏱ"
+ },
+ "GM": {
+ "name": "ᎦᎹᏈᎢᎠ"
+ },
+ "GA": {
+ "name": "ᎦᏉᏂ"
+ },
+ "GY": {
+ "name": "ᎦᏯᎾ"
+ },
+ "KI": {
+ "name": "ᎧᎵᏆᏘ"
+ },
+ "HR": {
+ "name": "ᎧᎶᎡᏏᎠ"
+ },
+ "CM": {
+ "name": "ᎧᎹᎷᏂ"
+ },
+ "KH": {
+ "name": "ᎧᎹᏉᏗᎠᏂ"
+ },
+ "CD": {
+ "name": "ᎧᏂᎪ"
+ },
+ "CG": {
+ "name": "ᎧᏂᎪ (ᏍᎦᏚᎩ)"
+ },
+ "KZ": {
+ "name": "ᎧᏎᎧᏍᏕᏂ"
+ },
+ "QA": {
+ "name": "ᎧᏔᎵ"
+ },
+ "KY": {
+ "name": "ᎨᎢᎹᏂ ᏚᎦᏚᏛᎢ"
+ },
+ "CA": {
+ "name": "ᎨᎾᏓ"
+ },
+ "KE": {
+ "name": "ᎨᏂᏯ"
+ },
+ "GB": {
+ "name": "ᎩᎵᏏᏲ"
+ },
+ "KG": {
+ "name": "ᎩᎵᏣᎢᏍ"
+ },
+ "GR": {
+ "name": "ᎪᎢᎯ"
+ },
+ "CC": {
+ "name": "ᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛ"
+ },
+ "CO": {
+ "name": "ᎪᎸᎻᏈᎢᎠ"
+ },
+ "KM": {
+ "name": "ᎪᎼᎳᏍ"
+ },
+ "CR": {
+ "name": "ᎪᏍᏓ ᎵᎧ"
+ },
+ "CU": {
+ "name": "ᎫᏆ"
+ },
+ "GN": {
+ "name": "ᎫᏇ"
+ },
+ "GW": {
+ "name": "ᎫᏇ-ᏈᏌᎤᏫ"
+ },
+ "KW": {
+ "name": "ᎫᏪᎢᏘ"
+ },
+ "CF": {
+ "name": "ᎬᎿᎨᏍᏛ ᎠᏰᏟ ᏍᎦᏚᎩ"
+ },
+ "GG": {
+ "name": "ᎬᏂᏏ"
+ },
+ "HT": {
+ "name": "ᎮᎢᏘ"
+ },
+ "HK": {
+ "name": "ᎰᏂᎩ ᎪᏂᎩ"
+ },
+ "HU": {
+ "name": "ᎲᏂᎦᎵ"
+ },
+ "LR": {
+ "name": "ᎳᏈᎵᏯ"
+ },
+ "LV": {
+ "name": "ᎳᏘᏫᎠ"
+ },
+ "LA": {
+ "name": "ᎴᎣᏍ"
+ },
+ "LB": {
+ "name": "ᎴᏆᎾᏂ"
+ },
+ "LS": {
+ "name": "ᎴᏐᏙ"
+ },
+ "LI": {
+ "name": "ᎵᎦᏗᏂᏍᏓᏂ"
+ },
+ "LY": {
+ "name": "ᎵᏈᏯ"
+ },
+ "LT": {
+ "name": "ᎵᏗᏪᏂᎠ"
+ },
+ "RO": {
+ "name": "ᎶᎹᏂᏯ"
+ },
+ "RW": {
+ "name": "ᎶᏩᏂᏓ"
+ },
+ "LU": {
+ "name": "ᎸᎧᏎᏋᎩ"
+ },
+ "MO": {
+ "name": "ᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢ"
+ },
+ "MW": {
+ "name": "ᎹᎳᏫ"
+ },
+ "MY": {
+ "name": "ᎹᎴᏏᎢᎠ"
+ },
+ "ML": {
+ "name": "ᎹᎵ"
+ },
+ "MT": {
+ "name": "ᎹᎵᏔ"
+ },
+ "MV": {
+ "name": "ᎹᎵᏗᏫᏍ"
+ },
+ "MD": {
+ "name": "ᎹᎵᏙᏫᎠ"
+ },
+ "MC": {
+ "name": "ᎹᎾᎪ"
+ },
+ "MN": {
+ "name": "ᎹᏂᎪᎵᎠ"
+ },
+ "MS": {
+ "name": "ᎹᏂᏘᏌᎳᏗ"
+ },
+ "MH": {
+ "name": "ᎹᏌᎵ ᏚᎪᏚᏛ"
+ },
+ "MK": {
+ "name": "ᎹᏏᏙᏂᎢᎠ"
+ },
+ "MG": {
+ "name": "ᎹᏓᎦᏍᎧᎵ"
+ },
+ "MR": {
+ "name": "ᎹᏘᎢᏯ"
+ },
+ "MQ": {
+ "name": "ᎹᏘᏂᎨ"
+ },
+ "MM": {
+ "name": "ᎹᏯᎹᎵ"
+ },
+ "MU": {
+ "name": "ᎼᎵᏏᎥᏍ"
+ },
+ "MA": {
+ "name": "ᎼᎶᎪ"
+ },
+ "ME": {
+ "name": "ᎼᏂᏔᏁᎦᎶ"
+ },
+ "MZ": {
+ "name": "ᎼᏎᎻᏇᎩ"
+ },
+ "NA": {
+ "name": "ᎾᎻᏈᎢᏯ"
+ },
+ "MP": {
+ "name": "ᎾᏍᎩ ᎤᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛ"
+ },
+ "BS": {
+ "name": "ᎾᏍᎩ ᏆᎭᎹᏍ"
+ },
+ "NP": {
+ "name": "ᏁᏆᎵ"
+ },
+ "NL": {
+ "name": "ᏁᏛᎳᏂ"
+ },
+ "CW": {
+ "name": "ᏂᎦᏓ ᎤᏂᎲ ᎾᎿ ᎫᎳᎨᎣ"
+ },
+ "NI": {
+ "name": "ᏂᎧᎳᏆ"
+ },
+ "NG": {
+ "name": "ᏂᏥᎵᏯ"
+ },
+ "NU": {
+ "name": "ᏂᏳ"
+ },
+ "NR": {
+ "name": "ᏃᎤᎷ"
+ },
+ "NF": {
+ "name": "ᏃᎵᏬᎵᎩ ᎤᎦᏚᏛ"
+ },
+ "NO": {
+ "name": "ᏃᏪ"
+ },
+ "PK": {
+ "name": "ᏆᎩᏍᏖᏂ"
+ },
+ "BH": {
+ "name": "ᏆᎭᎴᎢᏂ"
+ },
+ "PY": {
+ "name": "ᏆᎳᏇᎢᏯ"
+ },
+ "PW": {
+ "name": "ᏆᎴᎠᏫ"
+ },
+ "PS": {
+ "name": "ᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩ"
+ },
+ "GU": {
+ "name": "ᏆᎻ"
+ },
+ "PA": {
+ "name": "ᏆᎾᎹ"
+ },
+ "BJ": {
+ "name": "ᏆᏂᎢᏂ"
+ },
+ "BD": {
+ "name": "ᏆᏂᎦᎵᏕᏍ"
+ },
+ "PG": {
+ "name": "ᏆᏇ ᎢᏤ ᎩᏂ"
+ },
+ "BB": {
+ "name": "ᏆᏇᏙᏍ"
+ },
+ "BM": {
+ "name": "ᏆᏊᏓ"
+ },
+ "BR": {
+ "name": "ᏆᏏᎵᎢ"
+ },
+ "BW": {
+ "name": "ᏆᏣᏩᎾ"
+ },
+ "PR": {
+ "name": "ᏇᎡᏙ ᎵᎢᎪ"
+ },
+ "BY": {
+ "name": "ᏇᎳᎷᏍ"
+ },
+ "BZ": {
+ "name": "ᏇᎵᏍ"
+ },
+ "BE": {
+ "name": "ᏇᎵᏥᎥᎻ"
+ },
+ "PE": {
+ "name": "ᏇᎷ"
+ },
+ "PN": {
+ "name": "ᏈᎧᎵᏂ ᎤᎦᏚᏛᎢ"
+ },
+ "IO": {
+ "name": "ᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅ"
+ },
+ "PL": {
+ "name": "ᏉᎳᏂ"
+ },
+ "BO": {
+ "name": "ᏉᎵᏫᎠ"
+ },
+ "BA": {
+ "name": "ᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫ"
+ },
+ "PT": {
+ "name": "ᏉᏥᎦᎳ"
+ },
+ "BG": {
+ "name": "ᏊᎵᎨᎵᎠ"
+ },
+ "BN": {
+ "name": "ᏊᎾᎢ"
+ },
+ "BT": {
+ "name": "ᏊᏔᏂ"
+ },
+ "BF": {
+ "name": "ᏋᎩᎾ ᏩᏐ"
+ },
+ "BI": {
+ "name": "ᏋᎷᏂᏗ"
+ },
+ "GD": {
+ "name": "ᏋᎾᏓ"
+ },
+ "CY": {
+ "name": "ᏌᎢᏆᏍ"
+ },
+ "SA": {
+ "name": "ᏌᎤᏗ ᎡᎴᏈᎠ"
+ },
+ "AE": {
+ "name": "ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏ"
+ },
+ "LK": {
+ "name": "ᏍᎵ ᎳᏂᎧ"
+ },
+ "SK": {
+ "name": "ᏍᎶᏩᎩᎠ"
+ },
+ "SI": {
+ "name": "ᏍᎶᏫᏂᎠ"
+ },
+ "MX": {
+ "name": "ᏍᏆᏂᏱ"
+ },
+ "CH": {
+ "name": "ᏍᏫᏍ"
+ },
+ "SE": {
+ "name": "ᏍᏫᏕᏂ"
+ },
+ "PM": {
+ "name": "ᏎᏂᏘ ᏈᏓ ᎠᎴ ᎻᏇᎶᏂ"
+ },
+ "SL": {
+ "name": "ᏏᎡᎳ ᎴᎣᏂ"
+ },
+ "SC": {
+ "name": "ᏏᎡᏥᎵᏍ"
+ },
+ "SG": {
+ "name": "ᏏᏂᎦᏉᎵ"
+ },
+ "SB": {
+ "name": "ᏐᎶᎹᏂ ᏚᎦᏚᏛ"
+ },
+ "SD": {
+ "name": "ᏑᏕᏂ"
+ },
+ "RS": {
+ "name": "ᏒᏈᏯ"
+ },
+ "CN": {
+ "name": "ᏓᎶᏂᎨᏍᏛ"
+ },
+ "CX": {
+ "name": "ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛ"
+ },
+ "DK": {
+ "name": "ᏗᏂᎹᎦ"
+ },
+ "DM": {
+ "name": "ᏙᎻᏂᎧ"
+ },
+ "DO": {
+ "name": "ᏙᎻᏂᎧᏂ ᏍᎦᏚᎩ"
+ },
+ "GE": {
+ "name": "ᏣᎠᏥᎢ"
+ },
+ "JM": {
+ "name": "ᏣᎺᎢᎧ"
+ },
+ "JP": {
+ "name": "ᏣᏩᏂᏏ"
+ },
+ "CZ": {
+ "name": "ᏤᎩ ᏍᎦᏚᎩ"
+ },
+ "CL": {
+ "name": "ᏥᎵ"
+ },
+ "GI": {
+ "name": "ᏥᏆᎵᏓ"
+ },
+ "DJ": {
+ "name": "ᏥᏊᏗ"
+ },
+ "JO": {
+ "name": "ᏦᏓᏂ"
+ },
+ "KR": {
+ "name": "ᏧᎦᏃᏮ ᎪᎵᎠ"
+ },
+ "GS": {
+ "name": "ᏧᎦᏃᏮ ᏣᏥᏱ ᎠᎴ ᎾᏍᎩ ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛ"
+ },
+ "AQ": {
+ "name": "ᏧᏁᏍᏓᎸ"
+ },
+ "IS": {
+ "name": "ᏧᏁᏍᏓᎸᎯ"
+ },
+ "KP": {
+ "name": "ᏧᏴᏢ ᎪᎵᎠ"
+ },
+ "JE": {
+ "name": "ᏨᎵᏏ"
+ },
+ "FK": {
+ "name": "ᏩᎩ ᎤᎦᏚᏛ"
+ },
+ "GP": {
+ "name": "ᏩᏓᎷᏇ"
+ },
+ "GT": {
+ "name": "ᏩᏔᎹᎳ"
+ },
+ "FO": {
+ "name": "ᏪᎶ ᏚᎦᏚᏛ"
+ },
+ "FI": {
+ "name": "ᏫᏂᎦᏙᎯ"
+ },
+ "FJ": {
+ "name": "ᏫᏥ"
+ },
+ "IT": {
+ "name": "ᏲᎶ"
+ },
+ "RU": {
+ "name": "ᏲᏂᎢ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cs.json b/library/intl/resources/country/cs.json
new file mode 100644
index 000000000..d7a21b6fa
--- /dev/null
+++ b/library/intl/resources/country/cs.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghánistán"
+ },
+ "AX": {
+ "name": "Ålandy"
+ },
+ "AL": {
+ "name": "Albánie"
+ },
+ "DZ": {
+ "name": "Alžírsko"
+ },
+ "AS": {
+ "name": "Americká Samoa"
+ },
+ "VI": {
+ "name": "Americké Panenské ostrovy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktida"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Austrálie"
+ },
+ "AZ": {
+ "name": "Ázerbájdžán"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladéš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Bělorusko"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhútán"
+ },
+ "BO": {
+ "name": "Bolívie"
+ },
+ "BA": {
+ "name": "Bosna a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazílie"
+ },
+ "IO": {
+ "name": "Britské indickooceánské území"
+ },
+ "VG": {
+ "name": "Britské Panenské ostrovy"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulharsko"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CK": {
+ "name": "Cookovy ostrovy"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "ME": {
+ "name": "Černá Hora"
+ },
+ "CZ": {
+ "name": "Česká republika"
+ },
+ "CN": {
+ "name": "Čína"
+ },
+ "DK": {
+ "name": "Dánsko"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikánská republika"
+ },
+ "DJ": {
+ "name": "Džibutsko"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "EC": {
+ "name": "Ekvádor"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonsko"
+ },
+ "ET": {
+ "name": "Etiopie"
+ },
+ "FO": {
+ "name": "Faerské ostrovy"
+ },
+ "FK": {
+ "name": "Falklandské ostrovy"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipíny"
+ },
+ "FI": {
+ "name": "Finsko"
+ },
+ "FR": {
+ "name": "Francie"
+ },
+ "GF": {
+ "name": "Francouzská Guyana"
+ },
+ "TF": {
+ "name": "Francouzská jižní území"
+ },
+ "PF": {
+ "name": "Francouzská Polynésie"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grónsko"
+ },
+ "GE": {
+ "name": "Gruzie"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – ZAO Číny"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "HR": {
+ "name": "Chorvatsko"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irák"
+ },
+ "IR": {
+ "name": "Írán"
+ },
+ "IE": {
+ "name": "Irsko"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Itálie"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonsko"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "ZA": {
+ "name": "Jihoafrická republika"
+ },
+ "GS": {
+ "name": "Jižní Georgie a Jižní Sandwichovy ostrovy"
+ },
+ "KR": {
+ "name": "Jižní Korea"
+ },
+ "SS": {
+ "name": "Jižní Súdán"
+ },
+ "JO": {
+ "name": "Jordánsko"
+ },
+ "KY": {
+ "name": "Kajmanské ostrovy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanárské ostrovy"
+ },
+ "CV": {
+ "name": "Kapverdy"
+ },
+ "BQ": {
+ "name": "Karibské Nizozemsko"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstán"
+ },
+ "KE": {
+ "name": "Keňa"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosové ostrovy"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo – Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo – Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "CY": {
+ "name": "Kypr"
+ },
+ "KG": {
+ "name": "Kyrgyzstán"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libérie"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Lichtenštejnsko"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LV": {
+ "name": "Lotyšsko"
+ },
+ "LU": {
+ "name": "Lucembursko"
+ },
+ "MO": {
+ "name": "Macao – ZAO Číny"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Maďarsko"
+ },
+ "MK": {
+ "name": "Makedonie"
+ },
+ "MY": {
+ "name": "Malajsie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maledivy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallovy ostrovy"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricius"
+ },
+ "MR": {
+ "name": "Mauritánie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "UM": {
+ "name": "Menší odlehlé ostrovy USA"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronésie"
+ },
+ "MD": {
+ "name": "Moldavsko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolsko"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Barma)"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Německo"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigérie"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemsko"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norsko"
+ },
+ "NC": {
+ "name": "Nová Kaledonie"
+ },
+ "NZ": {
+ "name": "Nový Zéland"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "IM": {
+ "name": "Ostrov Man"
+ },
+ "PK": {
+ "name": "Pákistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinská území"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nová Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnovy ostrovy"
+ },
+ "CI": {
+ "name": "Pobřeží slonoviny"
+ },
+ "PL": {
+ "name": "Polsko"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalsko"
+ },
+ "AT": {
+ "name": "Rakousko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "GQ": {
+ "name": "Rovníková Guinea"
+ },
+ "RO": {
+ "name": "Rumunsko"
+ },
+ "RU": {
+ "name": "Rusko"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "GR": {
+ "name": "Řecko"
+ },
+ "PM": {
+ "name": "Saint-Pierre a Miquelon"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saúdská Arábie"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severní Korea"
+ },
+ "MP": {
+ "name": "Severní Mariany"
+ },
+ "SC": {
+ "name": "Seychely"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SK": {
+ "name": "Slovensko"
+ },
+ "SI": {
+ "name": "Slovinsko"
+ },
+ "SO": {
+ "name": "Somálsko"
+ },
+ "AE": {
+ "name": "Spojené arabské emiráty"
+ },
+ "US": {
+ "name": "Spojené státy"
+ },
+ "RS": {
+ "name": "Srbsko"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "CF": {
+ "name": "Středoafrická republika"
+ },
+ "SD": {
+ "name": "Súdán"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SH": {
+ "name": "Svatá Helena"
+ },
+ "LC": {
+ "name": "Svatá Lucie"
+ },
+ "BL": {
+ "name": "Svatý Bartoloměj"
+ },
+ "KN": {
+ "name": "Svatý Kryštof a Nevis"
+ },
+ "MF": {
+ "name": "Svatý Martin (Francie)"
+ },
+ "SX": {
+ "name": "Svatý Martin (Nizozemsko)"
+ },
+ "ST": {
+ "name": "Svatý Tomáš a Princův ostrov"
+ },
+ "VC": {
+ "name": "Svatý Vincenc a Grenadiny"
+ },
+ "SZ": {
+ "name": "Svazijsko"
+ },
+ "SY": {
+ "name": "Sýrie"
+ },
+ "SB": {
+ "name": "Šalamounovy ostrovy"
+ },
+ "ES": {
+ "name": "Španělsko"
+ },
+ "SJ": {
+ "name": "Špicberky a Jan Mayen"
+ },
+ "SE": {
+ "name": "Švédsko"
+ },
+ "CH": {
+ "name": "Švýcarsko"
+ },
+ "TJ": {
+ "name": "Tádžikistán"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TH": {
+ "name": "Thajsko"
+ },
+ "TW": {
+ "name": "Tchaj-wan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisko"
+ },
+ "TR": {
+ "name": "Turecko"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TC": {
+ "name": "Turks a Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "CX": {
+ "name": "Vánoční ostrov"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "GB": {
+ "name": "Velká Británie"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Východní Timor"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "EH": {
+ "name": "Západní Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cy.json b/library/intl/resources/country/cy.json
new file mode 100644
index 000000000..d89800008
--- /dev/null
+++ b/library/intl/resources/country/cy.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "BQ": {
+ "name": "Antilles yr Iseldiroedd"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Awstralia"
+ },
+ "AT": {
+ "name": "Awstria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarws"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolifia"
+ },
+ "BA": {
+ "name": "Bosnia a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BG": {
+ "name": "Bwlgaria"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "NC": {
+ "name": "Caledonia Newydd"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Camerŵn"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CU": {
+ "name": "Ciwba"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "ZA": {
+ "name": "De Affrica"
+ },
+ "GS": {
+ "name": "De Georgia ac Ynysoedd Sandwich y De"
+ },
+ "KR": {
+ "name": "De Korea"
+ },
+ "SS": {
+ "name": "De Swdan"
+ },
+ "DK": {
+ "name": "Denmarc"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiradau Arabaidd Unedig"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "VN": {
+ "name": "Fietnam"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FO": {
+ "name": "Føroyar"
+ },
+ "FR": {
+ "name": "Ffrainc"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "KP": {
+ "name": "Gogledd Korea"
+ },
+ "EH": {
+ "name": "Gorllewin Sahara"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Gyhydeddol"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane Ffrengig"
+ },
+ "CF": {
+ "name": "Gweriniaeth Canolbarth Affrica"
+ },
+ "DO": {
+ "name": "Gweriniaeth Dominica"
+ },
+ "CZ": {
+ "name": "Gweriniaeth Tsiec"
+ },
+ "BE": {
+ "name": "Gwlad Belg"
+ },
+ "GR": {
+ "name": "Gwlad Groeg"
+ },
+ "JO": {
+ "name": "Gwlad Iorddonen"
+ },
+ "PL": {
+ "name": "Gwlad Pwyl"
+ },
+ "SZ": {
+ "name": "Gwlad Swazi"
+ },
+ "TH": {
+ "name": "Gwlad Thai"
+ },
+ "IS": {
+ "name": "Gwlad yr Iâ"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HK": {
+ "name": "Hong Kong RhGA Tsieina"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hwngari"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irac"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IE": {
+ "name": "Iwerddon"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latfia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanus"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Lwcsembwrg"
+ },
+ "MO": {
+ "name": "Macau RhGA Tsieina"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mecsico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MD": {
+ "name": "Moldofa"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Moroco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwy"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guinea Newydd"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Periw"
+ },
+ "PH": {
+ "name": "Pilipinas"
+ },
+ "PF": {
+ "name": "Polynesia Ffrengig"
+ },
+ "PT": {
+ "name": "Portiwgal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RO": {
+ "name": "Rwmania"
+ },
+ "RU": {
+ "name": "Rwsia"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts a Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent a’r Grenadines"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa America"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "ES": {
+ "name": "Sbaen"
+ },
+ "NZ": {
+ "name": "Seland Newydd"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slofacia"
+ },
+ "SI": {
+ "name": "Slofenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SD": {
+ "name": "Swdan"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "IO": {
+ "name": "Tiriogaeth Brydeinig Cefnfor India"
+ },
+ "PS": {
+ "name": "Tiriogaethau Palesteinaidd"
+ },
+ "TF": {
+ "name": "Tiroedd Deheuol ac Antarctig Ffrainc"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CN": {
+ "name": "Tsieina"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Twrci"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "UA": {
+ "name": "Wcráin"
+ },
+ "BS": {
+ "name": "Y Bahamas"
+ },
+ "CG": {
+ "name": "Y Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Y Congo - Kinshasa"
+ },
+ "GB": {
+ "name": "Y Deyrnas Unedig"
+ },
+ "VA": {
+ "name": "Y Fatican"
+ },
+ "FI": {
+ "name": "Y Ffindir"
+ },
+ "MV": {
+ "name": "Y Maldives"
+ },
+ "CH": {
+ "name": "Y Swistir"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "AC": {
+ "name": "Ynys Ascension"
+ },
+ "IM": {
+ "name": "Ynys Manaw"
+ },
+ "NF": {
+ "name": "Ynys Norfolk"
+ },
+ "GG": {
+ "name": "Ynys y Garn"
+ },
+ "CX": {
+ "name": "Ynys y Nadolig"
+ },
+ "AX": {
+ "name": "Ynysoedd Åland"
+ },
+ "KY": {
+ "name": "Ynysoedd Cayman"
+ },
+ "CC": {
+ "name": "Ynysoedd Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Ynysoedd Cook"
+ },
+ "MP": {
+ "name": "Ynysoedd Gogledd Mariana"
+ },
+ "VG": {
+ "name": "Ynysoedd Gwyryf Prydain"
+ },
+ "VI": {
+ "name": "Ynysoedd Gwyryf yr Unol Daleithiau"
+ },
+ "MH": {
+ "name": "Ynysoedd Marshall"
+ },
+ "UM": {
+ "name": "Ynysoedd Pellennig UDA"
+ },
+ "PN": {
+ "name": "Ynysoedd Pitcairn"
+ },
+ "SB": {
+ "name": "Ynysoedd Solomon"
+ },
+ "TC": {
+ "name": "Ynysoedd Turks a Caicos"
+ },
+ "FK": {
+ "name": "Ynysoedd y Falkland\/Malvinas"
+ },
+ "EG": {
+ "name": "Yr Aifft"
+ },
+ "DE": {
+ "name": "Yr Almaen"
+ },
+ "AR": {
+ "name": "Yr Ariannin"
+ },
+ "IT": {
+ "name": "Yr Eidal"
+ },
+ "NL": {
+ "name": "Yr Iseldiroedd"
+ },
+ "US": {
+ "name": "Yr Unol Daleithiau"
+ },
+ "GL": {
+ "name": "Yr Ynys Las"
+ },
+ "IC": {
+ "name": "Yr Ynysoedd Dedwydd"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/da.json b/library/intl/resources/country/da.json
new file mode 100644
index 000000000..252132661
--- /dev/null
+++ b/library/intl/resources/country/da.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "UM": {
+ "name": "Amerikanske oversøiske øer"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensionøen"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnien-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøerne"
+ },
+ "CF": {
+ "name": "Centralafrikanske Republik"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CC": {
+ "name": "Cocosøerne"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comorerne"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookøerne"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "De Amerikanske Jomfruøer"
+ },
+ "VG": {
+ "name": "De Britiske Jomfruøer"
+ },
+ "TF": {
+ "name": "De franske besiddelser i Det Sydlige Indiske Ocean"
+ },
+ "PS": {
+ "name": "De palæstinensiske områder"
+ },
+ "DO": {
+ "name": "Den Dominikanske Republik"
+ },
+ "IO": {
+ "name": "Det britiske territorium i Det Indiske Ocean"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsøerne"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerne"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "AE": {
+ "name": "Forenede Arabiske Emirater"
+ },
+ "FR": {
+ "name": "Frankrig"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesien"
+ },
+ "FO": {
+ "name": "Færøerne"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grækenland"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong SAR"
+ },
+ "BY": {
+ "name": "Hviderusland"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CX": {
+ "name": "Juleøen"
+ },
+ "IC": {
+ "name": "Kanariske øer"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao SAR"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverne"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløerne"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiens Forenede Stater"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "BQ": {
+ "name": "Nederlandske antiller"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerne"
+ },
+ "NF": {
+ "name": "Norfolkøen"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Ny Caledonien"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumænien"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent og Grenadinerne"
+ },
+ "SB": {
+ "name": "Salomonøerne"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome og Principe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerne"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiet"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia og South Sandwich Islands"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "GB": {
+ "name": "Storbritannien"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "CZ": {
+ "name": "Tjekkiet"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøerne"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkiet"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vestsahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "GQ": {
+ "name": "Ækvatorialguinea"
+ },
+ "AT": {
+ "name": "Østrig"
+ },
+ "AX": {
+ "name": "Ålandsøerne"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dav.json b/library/intl/resources/country/dav.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/dav.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/de-CH.json b/library/intl/resources/country/de-CH.json
new file mode 100644
index 000000000..515874b31
--- /dev/null
+++ b/library/intl/resources/country/de-CH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ägypten"
+ },
+ "AX": {
+ "name": "Åland-Inseln"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikanische Jungferninseln"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorialguinea"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "ET": {
+ "name": "Äthiopien"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien und Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britische Jungferninseln"
+ },
+ "IO": {
+ "name": "Britisches Territorium im Indischen Ozean"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinseln"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "KP": {
+ "name": "Demokratische Volksrepublik Korea"
+ },
+ "DE": {
+ "name": "Deutschland"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanische Republik"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "FK": {
+ "name": "Falklandinseln"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankreich"
+ },
+ "GF": {
+ "name": "Französisch-Guayana"
+ },
+ "PF": {
+ "name": "Französisch-Polynesien"
+ },
+ "TF": {
+ "name": "Französische Süd- und Antarktisgebiete"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griechenland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GB": {
+ "name": "Grossbritannien"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninseln"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarische Inseln"
+ },
+ "CV": {
+ "name": "Kapverden"
+ },
+ "BQ": {
+ "name": "Karibische Niederlande"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinseln"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshall-Inseln"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "Neukaledonien"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NL": {
+ "name": "Niederlande"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Nördliche Marianen"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Österreich"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palästinensische Autonomiegebiete"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinen"
+ },
+ "PN": {
+ "name": "Pitcairninseln"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KR": {
+ "name": "Republik Korea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russische Föderation"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SB": {
+ "name": "Salomon-Inseln"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé und Principe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "MO": {
+ "name": "Sonderverwaltungsregion Macau"
+ },
+ "HK": {
+ "name": "Sonderverwaltungszone Hongkong"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und die Grenadinen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien und die Südlichen Sandwichinseln"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechische Republik"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinseln"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigte Arabische Emirate"
+ },
+ "US": {
+ "name": "Vereinigte Staaten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "CX": {
+ "name": "Weihnachtsinsel"
+ },
+ "BY": {
+ "name": "Weissrussland"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanische Republik"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/de.json b/library/intl/resources/country/de.json
new file mode 100644
index 000000000..30777eaaf
--- /dev/null
+++ b/library/intl/resources/country/de.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ägypten"
+ },
+ "AX": {
+ "name": "Åland-Inseln"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikanische Jungferninseln"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorialguinea"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "ET": {
+ "name": "Äthiopien"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien und Herzegowina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britische Jungferninseln"
+ },
+ "IO": {
+ "name": "Britisches Territorium im Indischen Ozean"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinseln"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "KP": {
+ "name": "Demokratische Volksrepublik Korea"
+ },
+ "DE": {
+ "name": "Deutschland"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanische Republik"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "FK": {
+ "name": "Falklandinseln"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankreich"
+ },
+ "GF": {
+ "name": "Französisch-Guayana"
+ },
+ "PF": {
+ "name": "Französisch-Polynesien"
+ },
+ "TF": {
+ "name": "Französische Süd- und Antarktisgebiete"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griechenland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninseln"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarische Inseln"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibische Niederlande"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinseln"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinseln"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "Neukaledonien"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NL": {
+ "name": "Niederlande"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Nördliche Marianen"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Österreich"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palästinensische Autonomiegebiete"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinen"
+ },
+ "PN": {
+ "name": "Pitcairninseln"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KR": {
+ "name": "Republik Korea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russische Föderation"
+ },
+ "SB": {
+ "name": "Salomonen"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé und Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "MO": {
+ "name": "Sonderverwaltungsregion Macau"
+ },
+ "HK": {
+ "name": "Sonderverwaltungszone Hongkong"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und die Grenadinen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien und die Südlichen Sandwichinseln"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechische Republik"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinseln"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigte Arabische Emirate"
+ },
+ "US": {
+ "name": "Vereinigte Staaten"
+ },
+ "GB": {
+ "name": "Vereinigtes Königreich"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "CX": {
+ "name": "Weihnachtsinsel"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanische Republik"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dje.json b/library/intl/resources/country/dje.json
new file mode 100644
index 000000000..2610631cb
--- /dev/null
+++ b/library/intl/resources/country/dje.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayseland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "KP": {
+ "name": "Gurma Kooree"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "KR": {
+ "name": "Hawsa Kooree"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Šiili"
+ },
+ "CN": {
+ "name": "Šiin"
+ },
+ "CY": {
+ "name": "Šiipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dsb.json b/library/intl/resources/country/dsb.json
new file mode 100644
index 000000000..fadf1e4c7
--- /dev/null
+++ b/library/intl/resources/country/dsb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AL": {
+ "name": "Albańska"
+ },
+ "DZ": {
+ "name": "Algeriska"
+ },
+ "UM": {
+ "name": "Ameriska Oceaniska"
+ },
+ "AS": {
+ "name": "Ameriska Samoa"
+ },
+ "VI": {
+ "name": "Ameriske kněžniske kupy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinska"
+ },
+ "AM": {
+ "name": "Armeńska"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Awstralska"
+ },
+ "AT": {
+ "name": "Awstriska"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiska"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Běłoruska"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliwiska"
+ },
+ "BA": {
+ "name": "Bosniska a Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilska"
+ },
+ "VG": {
+ "name": "Britiske kněžniske kupy"
+ },
+ "IO": {
+ "name": "Britiski indiskooceaniski teritorium"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "ME": {
+ "name": "Carna Góra"
+ },
+ "CF": {
+ "name": "Centralnoafriska republika"
+ },
+ "CZ": {
+ "name": "Česka republika"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chilska"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "HR": {
+ "name": "Chorwatska"
+ },
+ "CK": {
+ "name": "Cookowe kupy"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypriska"
+ },
+ "DK": {
+ "name": "Dańska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikańska republika"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egyptojska"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "GQ": {
+ "name": "Ekwatorialna Gineja"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estniska"
+ },
+ "ET": {
+ "name": "Etiopiska"
+ },
+ "FK": {
+ "name": "Falklandske kupy"
+ },
+ "FO": {
+ "name": "Färöje"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francojska"
+ },
+ "GF": {
+ "name": "Francojska Guyana"
+ },
+ "PF": {
+ "name": "Francojska Polyneziska"
+ },
+ "TF": {
+ "name": "Francojski pódpołdnjowy a antarktiski teritorium"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GE": {
+ "name": "Georgiska"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GW": {
+ "name": "Gineja-Bissau"
+ },
+ "CX": {
+ "name": "Gódowne kupy"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grichiska"
+ },
+ "GL": {
+ "name": "Grönlandska"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungorska"
+ },
+ "IN": {
+ "name": "Indiska"
+ },
+ "ID": {
+ "name": "Indoneziska"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandska"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italska"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japańska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniska"
+ },
+ "KY": {
+ "name": "Kajmaniske kupy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariske kupy"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nižozemska"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosowe kupy"
+ },
+ "CO": {
+ "name": "Kolumbiska"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letiska"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libyska"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litawska"
+ },
+ "LU": {
+ "name": "Luxemburgska"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedońska"
+ },
+ "MY": {
+ "name": "Malajzija"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallowe kupy"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mawretańska"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneziska"
+ },
+ "MD": {
+ "name": "Moldawska"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolska"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "DE": {
+ "name": "Nimska"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nižozemska"
+ },
+ "NF": {
+ "name": "Norfolkowa kupa"
+ },
+ "NO": {
+ "name": "Norwegska"
+ },
+ "NC": {
+ "name": "Nowa Kaledoniska"
+ },
+ "NZ": {
+ "name": "Nowoseelandska"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinski awtonomny teritorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnowe kupy"
+ },
+ "ZA": {
+ "name": "Pódpołdnjowa Afrika (Republika)"
+ },
+ "GS": {
+ "name": "Pódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupy"
+ },
+ "KR": {
+ "name": "Pódpołdnjowa Koreja"
+ },
+ "SS": {
+ "name": "Pódpołdnjowy Sudan"
+ },
+ "KP": {
+ "name": "Pódpołnocna Koreja"
+ },
+ "MP": {
+ "name": "Pódpołnocne Mariany"
+ },
+ "EH": {
+ "name": "Pódwjacorna Sahara"
+ },
+ "PL": {
+ "name": "Pólska"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumuńska"
+ },
+ "RU": {
+ "name": "Ruska"
+ },
+ "SB": {
+ "name": "Salomony"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabiska"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbiska"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Słowakska"
+ },
+ "SI": {
+ "name": "Słowjeńska"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "ES": {
+ "name": "Špańska"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts a Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent a Grenadiny"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinamska"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiska"
+ },
+ "SE": {
+ "name": "Šwedska"
+ },
+ "CH": {
+ "name": "Šwicarska"
+ },
+ "SY": {
+ "name": "Syriska"
+ },
+ "TJ": {
+ "name": "Tadźikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TH": {
+ "name": "Thailandska"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneziska"
+ },
+ "TM": {
+ "name": "Turkmeniska"
+ },
+ "TR": {
+ "name": "Turkojska"
+ },
+ "TC": {
+ "name": "Turks a Caicos kupy"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikańske město"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "HK": {
+ "name": "Wósebna zastojnstwowa cona Hongkong"
+ },
+ "MO": {
+ "name": "Wósebna zastojnstwowa cona Macao"
+ },
+ "AE": {
+ "name": "Zjadnośone arabiske emiraty"
+ },
+ "GB": {
+ "name": "Zjadnośone kralejstwo"
+ },
+ "US": {
+ "name": "Zjadnośone staty Ameriki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dyo.json b/library/intl/resources/country/dyo.json
new file mode 100644
index 000000000..f4352b339
--- /dev/null
+++ b/library/intl/resources/country/dyo.json
@@ -0,0 +1,761 @@
+{
+ "SA": {
+ "name": "Abari Saudi"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DE": {
+ "name": "Almaañ"
+ },
+ "DZ": {
+ "name": "Alseri"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua di Barbuda"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AR": {
+ "name": "Arsantin"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Aserbaysan"
+ },
+ "HT": {
+ "name": "Ayti"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrayn"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbad"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Beliis"
+ },
+ "BE": {
+ "name": "Belsik"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BM": {
+ "name": "Bermud"
+ },
+ "BO": {
+ "name": "Boliivi"
+ },
+ "BA": {
+ "name": "Bosni di Hersegovin"
+ },
+ "BW": {
+ "name": "Boswana"
+ },
+ "BR": {
+ "name": "Bresil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BG": {
+ "name": "Bulgari"
+ },
+ "BF": {
+ "name": "Burukiina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Buruney"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Cad"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "NF": {
+ "name": "Ecinkey yati Noorfok"
+ },
+ "ET": {
+ "name": "Ecoopi"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "IN": {
+ "name": "End"
+ },
+ "ID": {
+ "name": "Endonesi"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "EG": {
+ "name": "Esípt"
+ },
+ "ES": {
+ "name": "Espaañ"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frans"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GN": {
+ "name": "Giné"
+ },
+ "GW": {
+ "name": "Giné Bisaau"
+ },
+ "GY": {
+ "name": "Giyan"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Guwadalup"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IS": {
+ "name": "Iisland"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kamboj"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap Ver"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CI": {
+ "name": "Koddiwar"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komor"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskaar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "CD": {
+ "name": "Mofam demokratik mati Kongo"
+ },
+ "CZ": {
+ "name": "Mofam mati Cek"
+ },
+ "DO": {
+ "name": "Mofam mati Dominik"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HN": {
+ "name": "Onduras"
+ },
+ "HU": {
+ "name": "Oŋri"
+ },
+ "AU": {
+ "name": "Ostraalia"
+ },
+ "AT": {
+ "name": "Otris"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvadoor"
+ },
+ "JM": {
+ "name": "Samaik"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa yati Amerik"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Saŋ Lusia"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "JP": {
+ "name": "Sapoŋ"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "GE": {
+ "name": "Seorsi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leon"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "CN": {
+ "name": "Siin"
+ },
+ "CY": {
+ "name": "Siipr"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GI": {
+ "name": "Sipraltaar"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SK": {
+ "name": "Slovaki"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dz.json b/library/intl/resources/country/dz.json
new file mode 100644
index 000000000..991766ec2
--- /dev/null
+++ b/library/intl/resources/country/dz.json
@@ -0,0 +1,761 @@
+{
+ "XK": {
+ "name": "Kosovo"
+ },
+ "QA": {
+ "name": "ཀ་ཊར"
+ },
+ "IC": {
+ "name": "ཀ་ནེ་རི་གླིང་ཚོམ"
+ },
+ "KZ": {
+ "name": "ཀ་ཛགས་སཏཱན"
+ },
+ "KH": {
+ "name": "ཀམ་བྷོ་ཌི་ཡ"
+ },
+ "CW": {
+ "name": "ཀྱཱུར་ར་ཀོ"
+ },
+ "HR": {
+ "name": "ཀྲོ་ཨེ་ཤ"
+ },
+ "KI": {
+ "name": "ཀི་རི་བ་ཏི་མཚོ་གླིང"
+ },
+ "CU": {
+ "name": "ཀིའུ་བྷ"
+ },
+ "KG": {
+ "name": "ཀིར་གིས་སཏཱན"
+ },
+ "KW": {
+ "name": "ཀུ་ཝེཊ"
+ },
+ "CK": {
+ "name": "ཀུག་གླིང་ཚོམ"
+ },
+ "CA": {
+ "name": "ཀེ་ན་ཌ"
+ },
+ "CM": {
+ "name": "ཀེ་མ་རུན"
+ },
+ "BQ": {
+ "name": "ཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄"
+ },
+ "KE": {
+ "name": "ཀེན་ཡ"
+ },
+ "CV": {
+ "name": "ཀེཔ་བཱཌ"
+ },
+ "CC": {
+ "name": "ཀོ་ཀོས་གླིང་ཚོམ"
+ },
+ "CI": {
+ "name": "ཀོ་ཊེ་ ཌི་ཨི་ཝོ་རེ"
+ },
+ "KM": {
+ "name": "ཀོ་མོ་རོས"
+ },
+ "CO": {
+ "name": "ཀོ་ལོམ་བྷི་ཡ"
+ },
+ "CD": {
+ "name": "ཀོང་གྷོ ཀིན་ཤ་ས"
+ },
+ "CG": {
+ "name": "ཀོང་གྷོ བྷྲ་ཛ་བིལ"
+ },
+ "CR": {
+ "name": "ཀོས་ཊ་རི་ཀ"
+ },
+ "CX": {
+ "name": "ཁི་རིསྟ་མེས་མཚོ་གླིང"
+ },
+ "KY": {
+ "name": "ཁེ་མེན་གླིང་ཚོམ"
+ },
+ "GH": {
+ "name": "གྷ་ན"
+ },
+ "GA": {
+ "name": "གྷ་བྷོན"
+ },
+ "GY": {
+ "name": "གྷ་ཡ་ན"
+ },
+ "GN": {
+ "name": "གྷི་ནི"
+ },
+ "GW": {
+ "name": "གྷི་ནི་ བྷི་སཱའུ"
+ },
+ "GM": {
+ "name": "གྷེམ་བི་ཡ"
+ },
+ "GT": {
+ "name": "གྷོ་ཊ་མ་ལ"
+ },
+ "GR": {
+ "name": "གིརིས྄"
+ },
+ "GL": {
+ "name": "གིརཱིན་ལནཌ྄"
+ },
+ "GU": {
+ "name": "གུ་འམ་ མཚོ་གླིང"
+ },
+ "GG": {
+ "name": "གུ་ཨེརྣ་སི"
+ },
+ "GF": {
+ "name": "གུའི་ཡ་ན་ ཕྲནས྄་མངའ་ཁོངས"
+ },
+ "GD": {
+ "name": "གྲྀ་ན་ཌ"
+ },
+ "GP": {
+ "name": "གོ་ཌེ་ལུ་པེ"
+ },
+ "TD": {
+ "name": "ཅཱཌ"
+ },
+ "CL": {
+ "name": "ཅི་ལི"
+ },
+ "CZ": {
+ "name": "ཅེཀ་ རི་པབ་ལིཀ"
+ },
+ "JP": {
+ "name": "ཇ་པཱན"
+ },
+ "JM": {
+ "name": "ཇཱ་མཻ་ཀ"
+ },
+ "DE": {
+ "name": "ཇཱར་མ་ནི"
+ },
+ "DJ": {
+ "name": "ཇི་བྷུ་ཊི"
+ },
+ "GI": {
+ "name": "ཇིབ་རཱལ་ཊར"
+ },
+ "JE": {
+ "name": "ཇེར་སི"
+ },
+ "JO": {
+ "name": "ཇོར་ཌན"
+ },
+ "GE": {
+ "name": "ཇཽར་ཇཱ"
+ },
+ "TZ": {
+ "name": "ཊཱན་ཛཱ་ནི་ཡ"
+ },
+ "TW": {
+ "name": "ཊཱའི་ཝཱན"
+ },
+ "TR": {
+ "name": "ཊཱར་ཀི"
+ },
+ "TM": {
+ "name": "ཊཱརཀ་མེནའི་སཏཱན"
+ },
+ "TT": {
+ "name": "ཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོ"
+ },
+ "TN": {
+ "name": "ཊུ་ནི་ཤི་ཡ"
+ },
+ "TG": {
+ "name": "ཊོ་གྷོ"
+ },
+ "TO": {
+ "name": "ཊོང་གྷ"
+ },
+ "DG": {
+ "name": "ཌི་ཡེ་གོ་གར་སིའོ"
+ },
+ "DK": {
+ "name": "ཌེན་མཱཀ"
+ },
+ "DM": {
+ "name": "ཌོ་མི་ནི་ཀ"
+ },
+ "DO": {
+ "name": "ཌོ་མི་ནི་ཀཱན་ རི་པབ་ལིཀ"
+ },
+ "TJ": {
+ "name": "ཏ་ཇིག་གི་སཏཱན"
+ },
+ "TA": {
+ "name": "ཏྲིས་ཏན་ད་ཀུན་ཧ"
+ },
+ "TL": {
+ "name": "ཏི་་མོར་ལེ་ཨེསཊ"
+ },
+ "TV": {
+ "name": "ཏུ་ཝ་ལུ"
+ },
+ "TC": {
+ "name": "ཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམ"
+ },
+ "TK": {
+ "name": "ཏོ་ཀེ་ལའུ་ མཚོ་གླིང"
+ },
+ "TH": {
+ "name": "ཐཱའི་ལེནཌ"
+ },
+ "NA": {
+ "name": "ན་མི་བི་ཡ"
+ },
+ "NR": {
+ "name": "ནའུ་རུ་"
+ },
+ "NE": {
+ "name": "ནཱའི་ཇཱ"
+ },
+ "NG": {
+ "name": "ནཱའི་ཇི་རི་ཡ"
+ },
+ "NI": {
+ "name": "ནི་ཀྲ་ཝ་ག"
+ },
+ "NU": {
+ "name": "ནི་ཨུ་ཨཻ"
+ },
+ "NC": {
+ "name": "ནིའུ་ཀ་ལི་དོ་ནི་ཡ"
+ },
+ "NZ": {
+ "name": "ནིའུ་ཛི་ལེནཌ"
+ },
+ "EH": {
+ "name": "ནུབ་ཕྱོགས་ ས་ཧཱ་ར"
+ },
+ "NL": {
+ "name": "ནེ་དར་ལནཌས྄"
+ },
+ "NF": {
+ "name": "ནོར་ཕོལཀ་མཚོ་གླིང༌"
+ },
+ "NO": {
+ "name": "ནོར་ཝེ"
+ },
+ "PK": {
+ "name": "པ་ཀི་སཏཱན"
+ },
+ "PA": {
+ "name": "པ་ན་མ"
+ },
+ "PG": {
+ "name": "པ་པུ་ ནིའུ་གི་ནི"
+ },
+ "PY": {
+ "name": "པ་ར་གུ་ཝའི"
+ },
+ "PW": {
+ "name": "པ་ལའུ"
+ },
+ "PN": {
+ "name": "པིཊ་ཀེ་ཡེརན་གླིང་ཚོམ"
+ },
+ "PR": {
+ "name": "པུ་འེར་ཊོ་རི་ཁོ"
+ },
+ "PE": {
+ "name": "པེ་རུ"
+ },
+ "PS": {
+ "name": "པེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རི"
+ },
+ "PL": {
+ "name": "པོ་ལེནཌ"
+ },
+ "PT": {
+ "name": "པོར་ཅུ་གཱལ"
+ },
+ "TF": {
+ "name": "ཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངས"
+ },
+ "FR": {
+ "name": "ཕྲཱནས"
+ },
+ "PF": {
+ "name": "ཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡ"
+ },
+ "FK": {
+ "name": "ཕལྐ་ལནྜ་གླིང་ཚོམ"
+ },
+ "FO": {
+ "name": "ཕཱའེ་རོ་གླིང་ཚོམ"
+ },
+ "FJ": {
+ "name": "ཕི་ཇི"
+ },
+ "PH": {
+ "name": "ཕི་ལི་པིནས"
+ },
+ "FI": {
+ "name": "ཕིན་ལེནཌ"
+ },
+ "VA": {
+ "name": "བ་ཊི་ཀཱན་ སི་ཊི"
+ },
+ "BD": {
+ "name": "བངྒ་ལ་དེཤ"
+ },
+ "KP": {
+ "name": "བྱང་ ཀོ་རི་ཡ"
+ },
+ "MP": {
+ "name": "བྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམ"
+ },
+ "BM": {
+ "name": "བར་མུ་ཌ"
+ },
+ "BR": {
+ "name": "བྲ་ཛིལ"
+ },
+ "IO": {
+ "name": "བྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངས"
+ },
+ "NP": {
+ "name": "བལ་ཡུལ"
+ },
+ "BH": {
+ "name": "བྷ་རེན"
+ },
+ "BS": {
+ "name": "བྷ་ཧ་མས྄"
+ },
+ "BF": {
+ "name": "བྷར་ཀི་ན་ ཕེ་སོ"
+ },
+ "BB": {
+ "name": "བྷར་བེ་ཌོས"
+ },
+ "BN": {
+ "name": "བྷྲུ་ནའི"
+ },
+ "BI": {
+ "name": "བྷུ་རུན་ཌི"
+ },
+ "BJ": {
+ "name": "བྷེ་ནིན"
+ },
+ "BO": {
+ "name": "བྷེ་ལི་བི་ཡ"
+ },
+ "BZ": {
+ "name": "བྷེ་ལིཛ"
+ },
+ "BE": {
+ "name": "བྷེལ་ཇམ"
+ },
+ "BW": {
+ "name": "བྷོཙ་ཝ་ན"
+ },
+ "BA": {
+ "name": "བྷོས་ནི་ཡ་ ཨེནཌ་ ཧར་ཛི་གྷོ་བི་ན"
+ },
+ "BG": {
+ "name": "བུལ་ག་རི་ཡ"
+ },
+ "VE": {
+ "name": "བེ་ནི་ཛུ་ཝེ་ལ"
+ },
+ "VN": {
+ "name": "བེཊ་ནཱམ"
+ },
+ "BY": {
+ "name": "བེལ་ཨ་རུ་སུ"
+ },
+ "MG": {
+ "name": "མ་དཱ་གེས་ཀར"
+ },
+ "MW": {
+ "name": "མ་ལ་ཝི"
+ },
+ "MY": {
+ "name": "མ་ལེ་ཤི་ཡ"
+ },
+ "MK": {
+ "name": "མ་སེ་ཌོ་ནི་ཡ"
+ },
+ "MO": {
+ "name": "མཀ་ཨའུ་ཅཱའི་ན"
+ },
+ "FM": {
+ "name": "མའི་ཀྲོ་ནི་ཤི་ཡ"
+ },
+ "MH": {
+ "name": "མར་ཤེལ་གླིང་ཚོམ"
+ },
+ "ML": {
+ "name": "མཱ་ལི"
+ },
+ "MQ": {
+ "name": "མཱར་ཊི་ནིཀ"
+ },
+ "MT": {
+ "name": "མཱལ་ཊ"
+ },
+ "MV": {
+ "name": "མཱལ་དིབས"
+ },
+ "MM": {
+ "name": "མི་ཡཱན་མར་ (བྷར་མ)"
+ },
+ "YT": {
+ "name": "མེ་ཡོཊ"
+ },
+ "MX": {
+ "name": "མེཀ་སི་ཀོ"
+ },
+ "MC": {
+ "name": "མོ་ན་ཀོ"
+ },
+ "MZ": {
+ "name": "མོ་ཛམ་བྷིཀ"
+ },
+ "MR": {
+ "name": "མོ་རི་ཊེ་ནི་ཡ"
+ },
+ "MU": {
+ "name": "མོ་རི་ཤཱས"
+ },
+ "MA": {
+ "name": "མོ་རོ་ཀོ"
+ },
+ "ME": {
+ "name": "མོན་ཊི་ནེག་རོ"
+ },
+ "MS": {
+ "name": "མོན་ས་རཊ"
+ },
+ "MD": {
+ "name": "མོལ་དོ་བཱ"
+ },
+ "ZM": {
+ "name": "ཛམ་བྷི་ཡ"
+ },
+ "ZW": {
+ "name": "ཛིམ་བྷབ་ཝེ"
+ },
+ "VU": {
+ "name": "ཝ་ནུ་ཨ་ཏུ"
+ },
+ "VG": {
+ "name": "ཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངས"
+ },
+ "VI": {
+ "name": "ཝརཇིན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངས"
+ },
+ "WF": {
+ "name": "ཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ་ན་"
+ },
+ "BT": {
+ "name": "འབྲུག"
+ },
+ "AQ": {
+ "name": "འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང"
+ },
+ "UA": {
+ "name": "ཡུ་ཀརེན"
+ },
+ "UG": {
+ "name": "ཡུ་གྷན་ཌ"
+ },
+ "GB": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམ"
+ },
+ "AE": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས"
+ },
+ "UY": {
+ "name": "ཡུ་རུ་གུ་ཝའི"
+ },
+ "UM": {
+ "name": "ཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་"
+ },
+ "US": {
+ "name": "ཡུ་ཨེས་ཨེ"
+ },
+ "YE": {
+ "name": "ཡེ་མེན"
+ },
+ "IN": {
+ "name": "རྒྱ་གར"
+ },
+ "CN": {
+ "name": "རྒྱ་ནག"
+ },
+ "RW": {
+ "name": "རུ་ཝན་ཌ"
+ },
+ "RE": {
+ "name": "རེ་ཡུ་ནི་ཡོན"
+ },
+ "RO": {
+ "name": "རོ་མེ་ནི་ཡ"
+ },
+ "LU": {
+ "name": "ལག་ཛམ་བོརྒ"
+ },
+ "LV": {
+ "name": "ལཊ་བི་ཡ"
+ },
+ "KR": {
+ "name": "ལྷོ་ ཀོ་རི་ཡ"
+ },
+ "LA": {
+ "name": "ལཱ་ཝོས"
+ },
+ "LR": {
+ "name": "ལཱའི་བེ་རི་ཡ"
+ },
+ "LT": {
+ "name": "ལི་ཐུ་ཝེ་ནི་ཡ"
+ },
+ "LY": {
+ "name": "ལི་བི་ཡ"
+ },
+ "LI": {
+ "name": "ལིཀ་ཏནས་ཏ་ཡིན"
+ },
+ "LB": {
+ "name": "ལེ་བ་ནོན"
+ },
+ "LS": {
+ "name": "ལཻ་སོ་ཐོ"
+ },
+ "LK": {
+ "name": "ཤྲཱི་ལང་ཀ"
+ },
+ "WS": {
+ "name": "ས་མོ་ཨ"
+ },
+ "AS": {
+ "name": "ས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངས"
+ },
+ "ST": {
+ "name": "སཝ་ ཊོ་མེ་ ཨེནཌ་ པྲྀན་སི་པེ"
+ },
+ "SJ": {
+ "name": "སྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེན"
+ },
+ "SM": {
+ "name": "སཱན་མ་རི་ནོ"
+ },
+ "SA": {
+ "name": "སཱཝ་དི་ ཨ་རེ་བྷི་ཡ"
+ },
+ "CY": {
+ "name": "སཱའི་པྲས"
+ },
+ "SS": {
+ "name": "སཱའུཐ་ སུ་ཌཱན"
+ },
+ "ZA": {
+ "name": "སཱའུཐ་ ཨཕ་རི་ཀ"
+ },
+ "GS": {
+ "name": "སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ྄་ཝིཅ་གླིང་ཚོམ"
+ },
+ "RS": {
+ "name": "སཱར་བྷི་ཡ"
+ },
+ "SL": {
+ "name": "སི་ར་ ལི་འོན"
+ },
+ "SY": {
+ "name": "སི་རི་ཡ"
+ },
+ "SG": {
+ "name": "སིང་ག་པོར"
+ },
+ "SX": {
+ "name": "སིནཊ་ མཱར་ཊེན"
+ },
+ "PM": {
+ "name": "སིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེན"
+ },
+ "SD": {
+ "name": "སུ་ཌཱན"
+ },
+ "SZ": {
+ "name": "སུ་ཝ་ཛི་ལེནཌ"
+ },
+ "CH": {
+ "name": "སུ་ཝིཊ་ཛར་ལེནཌ"
+ },
+ "SR": {
+ "name": "སུ་རི་ནཱམ"
+ },
+ "SK": {
+ "name": "སུ་ལོ་བཱ་ཀི་ཡ"
+ },
+ "SI": {
+ "name": "སུ་ལོ་བི་ནི་ཡ"
+ },
+ "SE": {
+ "name": "སུའི་ཌེན"
+ },
+ "SN": {
+ "name": "སེ་ནི་གྷལ"
+ },
+ "SC": {
+ "name": "སེ་ཤཱལས"
+ },
+ "EA": {
+ "name": "སེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལ"
+ },
+ "CF": {
+ "name": "སེན་ཊལ་ ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀ"
+ },
+ "KN": {
+ "name": "སེནཊ་ ཀིཊས་ དང་ ནེ་བིས"
+ },
+ "BL": {
+ "name": "སེནཊ་ བར་ཐོ་ལོམ་མིའུ"
+ },
+ "MF": {
+ "name": "སེནཊ་ མཱར་ཊིན"
+ },
+ "LC": {
+ "name": "སེནཊ་ ལུ་སི་ཡ"
+ },
+ "SH": {
+ "name": "སེནཊ་ ཧེ་ལི་ན"
+ },
+ "VC": {
+ "name": "སེནཊ་ཝིན་སེནཌ྄ ཨེནཌ་ གི་རེ་ན་དིནས྄"
+ },
+ "SO": {
+ "name": "སོ་མ་ལི་ཡ"
+ },
+ "SB": {
+ "name": "སོ་ལོ་མོན་ གླིང་ཚོམ"
+ },
+ "MN": {
+ "name": "སོག་པོ་ཡུལ"
+ },
+ "HU": {
+ "name": "ཧཱང་གྷ་རི"
+ },
+ "HN": {
+ "name": "ཧཱན་ཌུ་རཱས྄"
+ },
+ "HT": {
+ "name": "ཧེ་ཊི"
+ },
+ "HK": {
+ "name": "ཧོང་ཀོང་ཅཱའི་ན"
+ },
+ "AZ": {
+ "name": "ཨ་ཛར་བྷའི་ཇཱན"
+ },
+ "IM": {
+ "name": "ཨ་ཡུལ་ ཨོཕ་ མཱན"
+ },
+ "AW": {
+ "name": "ཨ་རུ་བཱ"
+ },
+ "AX": {
+ "name": "ཨ་ལནཌ་གླིང་ཚོམ"
+ },
+ "AO": {
+ "name": "ཨང་གྷོ་ལ"
+ },
+ "AI": {
+ "name": "ཨང་གི་ལ"
+ },
+ "AG": {
+ "name": "ཨན་ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌ"
+ },
+ "AF": {
+ "name": "ཨཕ་གྷ་ནི་སཏཱན"
+ },
+ "AR": {
+ "name": "ཨར་ཇེན་ཊི་ན"
+ },
+ "AM": {
+ "name": "ཨར་མི་ནི་ཡ"
+ },
+ "IE": {
+ "name": "ཨཱ་ཡ་ལེནཌ"
+ },
+ "AD": {
+ "name": "ཨཱན་དོ་ར"
+ },
+ "IS": {
+ "name": "ཨཱའིས་ལེནཌ"
+ },
+ "DZ": {
+ "name": "ཨཱལ་ཇི་རི་ཡ"
+ },
+ "AL": {
+ "name": "ཨཱལ་བེ་ནི་ཡ"
+ },
+ "AT": {
+ "name": "ཨཱོས་ཊྲི་ཡ"
+ },
+ "AU": {
+ "name": "ཨཱོས་ཊྲེལ་ལི་ཡ"
+ },
+ "EG": {
+ "name": "ཨི་ཇིབཊ"
+ },
+ "IT": {
+ "name": "ཨི་ཊ་ལི"
+ },
+ "ET": {
+ "name": "ཨི་ཐི་ཡོ་པི་ཡ"
+ },
+ "IQ": {
+ "name": "ཨི་རཱཀ"
+ },
+ "IR": {
+ "name": "ཨི་རཱན"
+ },
+ "ID": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡ"
+ },
+ "ES": {
+ "name": "ཨིས་པེན"
+ },
+ "IL": {
+ "name": "ཨིས་ར་ཡེལ"
+ },
+ "RU": {
+ "name": "ཨུ་རུ་སུ"
+ },
+ "UZ": {
+ "name": "ཨུས་བེག་གི་སཏཱན"
+ },
+ "GQ": {
+ "name": "ཨེ་ཀུ་ཊོ་རེལ་ གི་ནི"
+ },
+ "EC": {
+ "name": "ཨེ་ཁྭ་ཌོར"
+ },
+ "ER": {
+ "name": "ཨེ་རི་ཊྲེ་ཡ"
+ },
+ "AC": {
+ "name": "ཨེ་སེན་ཤུན་ཚོ་གླིང༌"
+ },
+ "SV": {
+ "name": "ཨེལ་སལ་བ་ཌོར"
+ },
+ "EE": {
+ "name": "ཨེས་ཊོ་ནི་ཡ"
+ },
+ "OM": {
+ "name": "ཨོ་མཱན"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ebu.json b/library/intl/resources/country/ebu.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/ebu.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ee.json b/library/intl/resources/country/ee.json
new file mode 100644
index 000000000..e9ef0a4a0
--- /dev/null
+++ b/library/intl/resources/country/ee.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan nutome"
+ },
+ "IS": {
+ "name": "Aiseland nutome"
+ },
+ "IM": {
+ "name": "Aisle of Man nutome"
+ },
+ "AX": {
+ "name": "Åland ƒudomekpo nutome"
+ },
+ "AL": {
+ "name": "Albania nutome"
+ },
+ "DZ": {
+ "name": "Algeria nutome"
+ },
+ "AS": {
+ "name": "Amerika Samoa nutome"
+ },
+ "AD": {
+ "name": "Andorra nutome"
+ },
+ "AO": {
+ "name": "Angola nutome"
+ },
+ "AI": {
+ "name": "Anguilla nutome"
+ },
+ "AQ": {
+ "name": "Antartica nutome"
+ },
+ "AG": {
+ "name": "́Antigua kple Barbuda nutome"
+ },
+ "ZA": {
+ "name": "Anyiehe Afrika nutome"
+ },
+ "TF": {
+ "name": "Anyiehe Franseme nutome"
+ },
+ "GS": {
+ "name": "Anyiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutome"
+ },
+ "KR": {
+ "name": "Anyiehe Korea nutome"
+ },
+ "SS": {
+ "name": "Anyiehe Sudan nutome"
+ },
+ "AR": {
+ "name": "Argentina nutome"
+ },
+ "AM": {
+ "name": "Armenia nutome"
+ },
+ "AW": {
+ "name": "Aruba nutome"
+ },
+ "AC": {
+ "name": "Ascension ƒudomekpo nutome"
+ },
+ "AU": {
+ "name": "Australia nutome"
+ },
+ "AT": {
+ "name": "Austria nutome"
+ },
+ "AZ": {
+ "name": "Azerbaijan nutome"
+ },
+ "BS": {
+ "name": "Bahamas nutome"
+ },
+ "BH": {
+ "name": "Bahrain nutome"
+ },
+ "BD": {
+ "name": "Bangladesh nutome"
+ },
+ "BB": {
+ "name": "Barbados nutome"
+ },
+ "BY": {
+ "name": "Belarus nutome"
+ },
+ "BE": {
+ "name": "Belgium nutome"
+ },
+ "BZ": {
+ "name": "Belize nutome"
+ },
+ "BJ": {
+ "name": "Benin nutome"
+ },
+ "BM": {
+ "name": "Bermuda nutome"
+ },
+ "BT": {
+ "name": "Bhutan nutome"
+ },
+ "BO": {
+ "name": "Bolivia nutome"
+ },
+ "BA": {
+ "name": "Bosnia kple Herzergovina nutome"
+ },
+ "BW": {
+ "name": "Botswana nutome"
+ },
+ "BR": {
+ "name": "Brazil nutome"
+ },
+ "IO": {
+ "name": "Britaintɔwo ƒe india ƒudome nutome"
+ },
+ "VG": {
+ "name": "Britaintɔwo ƒe Virgin ƒudomekpowo nutome"
+ },
+ "BN": {
+ "name": "Brunei nutome"
+ },
+ "BG": {
+ "name": "Bulgaria nutome"
+ },
+ "BF": {
+ "name": "Burkina Faso nutome"
+ },
+ "BI": {
+ "name": "Burundi nutome"
+ },
+ "DK": {
+ "name": "Denmark nutome"
+ },
+ "DG": {
+ "name": "Diego Garsia nutome"
+ },
+ "DM": {
+ "name": "Dominika nutome"
+ },
+ "DO": {
+ "name": "Dominika repɔblik nutome"
+ },
+ "JM": {
+ "name": "Dzamaika nutome"
+ },
+ "JP": {
+ "name": "Dzapan nutome"
+ },
+ "JE": {
+ "name": "Dzɛse nutome"
+ },
+ "DJ": {
+ "name": "Dzibuti nutome"
+ },
+ "KP": {
+ "name": "Dziehe Korea nutome"
+ },
+ "MP": {
+ "name": "Dziehe Marina ƒudomekpowo nutome"
+ },
+ "EG": {
+ "name": "Egypte nutome"
+ },
+ "EC": {
+ "name": "Ekuadɔ nutome"
+ },
+ "GQ": {
+ "name": "Ekuatorial Guini nutome"
+ },
+ "SV": {
+ "name": "El Salvadɔ nutome"
+ },
+ "ER": {
+ "name": "Eritrea nutome"
+ },
+ "EE": {
+ "name": "Estonia nutome"
+ },
+ "ET": {
+ "name": "Etiopia nutome"
+ },
+ "FK": {
+ "name": "Falkland ƒudomekpowo nutome"
+ },
+ "FO": {
+ "name": "Faroe ƒudomekpowo nutome"
+ },
+ "FJ": {
+ "name": "Fidzi nutome"
+ },
+ "PH": {
+ "name": "Filipini nutome"
+ },
+ "FI": {
+ "name": "Finland nutome"
+ },
+ "FR": {
+ "name": "Frans nutome"
+ },
+ "GF": {
+ "name": "Frentsi Gayana nutome"
+ },
+ "PF": {
+ "name": "Frentsi Pɔlinesia nutome"
+ },
+ "GA": {
+ "name": "Gabɔn nutome"
+ },
+ "GM": {
+ "name": "Gambia nutome"
+ },
+ "GE": {
+ "name": "Georgia nutome"
+ },
+ "DE": {
+ "name": "Germania nutome"
+ },
+ "GH": {
+ "name": "Ghana nutome"
+ },
+ "GI": {
+ "name": "Gibraltar nutome"
+ },
+ "GW": {
+ "name": "Gini-Bisao nutome"
+ },
+ "GD": {
+ "name": "Grenada nutome"
+ },
+ "GL": {
+ "name": "Grinland nutome"
+ },
+ "GR": {
+ "name": "Grisi nutome"
+ },
+ "GP": {
+ "name": "Guadelupe nutome"
+ },
+ "GU": {
+ "name": "Guam nutome"
+ },
+ "GT": {
+ "name": "Guatemala nutome"
+ },
+ "GG": {
+ "name": "Guernse nutome"
+ },
+ "GN": {
+ "name": "Guini nutome"
+ },
+ "GY": {
+ "name": "Guyanadu"
+ },
+ "EH": {
+ "name": "Ɣetoɖoƒe Sahara nutome"
+ },
+ "HT": {
+ "name": "Haiti nutome"
+ },
+ "HN": {
+ "name": "Hondurasdu"
+ },
+ "HK": {
+ "name": "Hɔng Kɔng SAR Tsaina nutome"
+ },
+ "HU": {
+ "name": "Hungari nutome"
+ },
+ "IN": {
+ "name": "India nutome"
+ },
+ "ID": {
+ "name": "Indonesia nutome"
+ },
+ "IR": {
+ "name": "Iran nutome"
+ },
+ "IQ": {
+ "name": "iraqdukɔ"
+ },
+ "IE": {
+ "name": "Ireland nutome"
+ },
+ "IL": {
+ "name": "Israel nutome"
+ },
+ "IT": {
+ "name": "Italia nutome"
+ },
+ "KH": {
+ "name": "Kambodia nutome"
+ },
+ "CM": {
+ "name": "Kamerun nutome"
+ },
+ "CA": {
+ "name": "Kanada nutome"
+ },
+ "IC": {
+ "name": "Kanari ƒudomekpowo nutome"
+ },
+ "CV": {
+ "name": "Kape Verde nutome"
+ },
+ "BQ": {
+ "name": "Karibbeatɔwo ƒe Nedalanɖs nutome"
+ },
+ "QA": {
+ "name": "Katar nutome"
+ },
+ "KY": {
+ "name": "Kayman ƒudomekpowo nutome"
+ },
+ "KZ": {
+ "name": "Kazakstan nutome"
+ },
+ "KE": {
+ "name": "Kenya nutome"
+ },
+ "EA": {
+ "name": "Keuta and Melilla nutome"
+ },
+ "KG": {
+ "name": "Kirgizstan nutome"
+ },
+ "KI": {
+ "name": "Kiribati nutome"
+ },
+ "CC": {
+ "name": "Kokos (Kiling) fudomekpo nutome"
+ },
+ "CO": {
+ "name": "Kolombia nutome"
+ },
+ "KM": {
+ "name": "Komoros nutome"
+ },
+ "CG": {
+ "name": "Kongo Brazzaville nutome"
+ },
+ "CD": {
+ "name": "Kongo Kinshasa nutome"
+ },
+ "CK": {
+ "name": "Kook ƒudomekpo nutome"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika nutome"
+ },
+ "CI": {
+ "name": "Kote d’Ivoire nutome"
+ },
+ "CX": {
+ "name": "Kristmas ƒudomekpo nutome"
+ },
+ "HR": {
+ "name": "Kroatsia nutome"
+ },
+ "CU": {
+ "name": "Kuba nutome"
+ },
+ "CW": {
+ "name": "Kurakao nutome"
+ },
+ "KW": {
+ "name": "Kuwait nutome"
+ },
+ "LA": {
+ "name": "Laos nutome"
+ },
+ "LV": {
+ "name": "Latvia nutome"
+ },
+ "LU": {
+ "name": "Lazembɔg nutome"
+ },
+ "LB": {
+ "name": "Lebanɔn nutome"
+ },
+ "LS": {
+ "name": "Lɛsoto nutome"
+ },
+ "LR": {
+ "name": "Liberia nutome"
+ },
+ "LY": {
+ "name": "Libya nutome"
+ },
+ "LI": {
+ "name": "Litsenstein nutome"
+ },
+ "LT": {
+ "name": "Lituania nutome"
+ },
+ "MO": {
+ "name": "Macau SAR Tsaina nutome"
+ },
+ "MG": {
+ "name": "Madagaska nutome"
+ },
+ "MK": {
+ "name": "Makedonia nutome"
+ },
+ "MW": {
+ "name": "Malawi nutome"
+ },
+ "MY": {
+ "name": "Malaysia nutome"
+ },
+ "MV": {
+ "name": "maldivesdukɔ"
+ },
+ "ML": {
+ "name": "Mali nutome"
+ },
+ "MT": {
+ "name": "Malta nutome"
+ },
+ "MH": {
+ "name": "Marshal ƒudomekpowo nutome"
+ },
+ "MQ": {
+ "name": "Martiniki nutome"
+ },
+ "MR": {
+ "name": "Mauritania nutome"
+ },
+ "MU": {
+ "name": "mauritiusdukɔ"
+ },
+ "YT": {
+ "name": "Mayotte nutome"
+ },
+ "MX": {
+ "name": "Meksico nutome"
+ },
+ "FM": {
+ "name": "Mikronesia nutome"
+ },
+ "MD": {
+ "name": "Moldova nutome"
+ },
+ "MC": {
+ "name": "Monako nutome"
+ },
+ "MN": {
+ "name": "Mongolia nutome"
+ },
+ "ME": {
+ "name": "Montenegro nutome"
+ },
+ "MS": {
+ "name": "Montserrat nutome"
+ },
+ "MA": {
+ "name": "Moroko nutome"
+ },
+ "MZ": {
+ "name": "Mozambiki nutome"
+ },
+ "MM": {
+ "name": "Myanmar (Burma) nutome"
+ },
+ "NA": {
+ "name": "Namibia nutome"
+ },
+ "NR": {
+ "name": "Nauru nutome"
+ },
+ "NL": {
+ "name": "Nedalands nutome"
+ },
+ "NP": {
+ "name": "Nepal nutome"
+ },
+ "NC": {
+ "name": "New Kaledonia nutome"
+ },
+ "NZ": {
+ "name": "New Zealand nutome"
+ },
+ "NI": {
+ "name": "Nicaraguadukɔ"
+ },
+ "NE": {
+ "name": "Niger nutome"
+ },
+ "NG": {
+ "name": "Nigeria nutome"
+ },
+ "NU": {
+ "name": "Niue nutome"
+ },
+ "NF": {
+ "name": "Norfolk ƒudomekpo nutome"
+ },
+ "NO": {
+ "name": "Norway nutome"
+ },
+ "OM": {
+ "name": "Oman nutome"
+ },
+ "PK": {
+ "name": "Pakistan nutome"
+ },
+ "PW": {
+ "name": "Palau nutome"
+ },
+ "PS": {
+ "name": "Palestinia nutome"
+ },
+ "PA": {
+ "name": "Panama nutome"
+ },
+ "PG": {
+ "name": "Papua New Gini nutome"
+ },
+ "PY": {
+ "name": "Paragua nutome"
+ },
+ "PE": {
+ "name": "Peru nutome"
+ },
+ "PN": {
+ "name": "Pitkairn ƒudomekpo nutome"
+ },
+ "PL": {
+ "name": "Poland nutome"
+ },
+ "PT": {
+ "name": "Portugal nutome"
+ },
+ "PR": {
+ "name": "Puerto Riko nutome"
+ },
+ "RE": {
+ "name": "Réunion nutome"
+ },
+ "RO": {
+ "name": "Romania nutome"
+ },
+ "RU": {
+ "name": "Russia nutome"
+ },
+ "RW": {
+ "name": "Rwanda nutome"
+ },
+ "BL": {
+ "name": "Saint Barthélemy nutome"
+ },
+ "SH": {
+ "name": "Saint Helena nutome"
+ },
+ "KN": {
+ "name": "Saint Kitis kple Nevis nutome"
+ },
+ "LC": {
+ "name": "Saint Lusia nutome"
+ },
+ "MF": {
+ "name": "Saint Martin nutome"
+ },
+ "PM": {
+ "name": "Saint Pierre kple Mikelɔn nutome"
+ },
+ "VC": {
+ "name": "Saint Vincent kple Grenadine nutome"
+ },
+ "CY": {
+ "name": "Saiprus nutome"
+ },
+ "WS": {
+ "name": "Samoa nutome"
+ },
+ "SM": {
+ "name": "San Marino nutome"
+ },
+ "ST": {
+ "name": "São Tomé kple Príncipe nutome"
+ },
+ "SA": {
+ "name": "Saudi Arabia nutome"
+ },
+ "SN": {
+ "name": "Senegal nutome"
+ },
+ "RS": {
+ "name": "Serbia nutome"
+ },
+ "SC": {
+ "name": "Seshɛls nutome"
+ },
+ "SL": {
+ "name": "Sierra Leone nutome"
+ },
+ "SG": {
+ "name": "Singapɔr nutome"
+ },
+ "SX": {
+ "name": "Sint Maarten nutome"
+ },
+ "SY": {
+ "name": "Siria nutome"
+ },
+ "SK": {
+ "name": "Slovakia nutome"
+ },
+ "SI": {
+ "name": "Slovenia nutome"
+ },
+ "SB": {
+ "name": "Solomon ƒudomekpowo nutome"
+ },
+ "SO": {
+ "name": "Somalia nutome"
+ },
+ "ES": {
+ "name": "Spania nutome"
+ },
+ "LK": {
+ "name": "Sri Lanka nutome"
+ },
+ "SD": {
+ "name": "Sudan nutome"
+ },
+ "SR": {
+ "name": "Suriname nutome"
+ },
+ "SJ": {
+ "name": "Svalbard kple Yan Mayen nutome"
+ },
+ "SZ": {
+ "name": "Swaziland nutome"
+ },
+ "SE": {
+ "name": "Sweden nutome"
+ },
+ "CH": {
+ "name": "Switzerland nutome"
+ },
+ "TH": {
+ "name": "Tailand nutome"
+ },
+ "TW": {
+ "name": "Taiwan nutome"
+ },
+ "TJ": {
+ "name": "Tajikistan nutome"
+ },
+ "TZ": {
+ "name": "Tanzania nutome"
+ },
+ "TR": {
+ "name": "Tɛki nutome"
+ },
+ "TM": {
+ "name": "Tɛkmenistan nutome"
+ },
+ "TC": {
+ "name": "Tɛks kple Kaikos ƒudomekpowo nutome"
+ },
+ "TL": {
+ "name": "Timor-Leste nutome"
+ },
+ "CF": {
+ "name": "Titina Afrika repɔblik nutome"
+ },
+ "TG": {
+ "name": "Togo nutome"
+ },
+ "TK": {
+ "name": "Tokelau nutome"
+ },
+ "TO": {
+ "name": "Tonga nutome"
+ },
+ "TT": {
+ "name": "Trinidad kple Tobago nutome"
+ },
+ "TA": {
+ "name": "Tristan da Kunha nutome"
+ },
+ "TD": {
+ "name": "Tsad nutome"
+ },
+ "CN": {
+ "name": "Tsaina nutome"
+ },
+ "CZ": {
+ "name": "Tsɛk repɔblik nutome"
+ },
+ "CL": {
+ "name": "Tsile nutome"
+ },
+ "TN": {
+ "name": "Tunisia nutome"
+ },
+ "TV": {
+ "name": "Tuvalu nutome"
+ },
+ "UM": {
+ "name": "U.S. Minor Outlaying ƒudomekpowo nutome"
+ },
+ "VI": {
+ "name": "U.S. Vɛrgin ƒudomekpowo nutome"
+ },
+ "UG": {
+ "name": "Uganda nutome"
+ },
+ "UA": {
+ "name": "Ukraine nutome"
+ },
+ "AE": {
+ "name": "United Arab Emirates nutome"
+ },
+ "GB": {
+ "name": "United Kingdom nutome"
+ },
+ "UY": {
+ "name": "uruguaydukɔ"
+ },
+ "US": {
+ "name": "USA nutome"
+ },
+ "UZ": {
+ "name": "Uzbekistan nutome"
+ },
+ "VU": {
+ "name": "Vanuatu nutome"
+ },
+ "VA": {
+ "name": "Vatikandu nutome"
+ },
+ "VE": {
+ "name": "Venezuela nutome"
+ },
+ "VN": {
+ "name": "Vietnam nutome"
+ },
+ "WF": {
+ "name": "Wallis kple Futuna nutome"
+ },
+ "YE": {
+ "name": "Yemen nutome"
+ },
+ "JO": {
+ "name": "Yordan nutome"
+ },
+ "ZM": {
+ "name": "Zambia nutome"
+ },
+ "ZW": {
+ "name": "Zimbabwe nutome"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/el.json b/library/intl/resources/country/el.json
new file mode 100644
index 000000000..807ae358d
--- /dev/null
+++ b/library/intl/resources/country/el.json
@@ -0,0 +1,761 @@
+{
+ "SH": {
+ "name": "Αγία Ελένη"
+ },
+ "LC": {
+ "name": "Αγία Λουκία"
+ },
+ "BL": {
+ "name": "Άγιος Βαρθολομαίος"
+ },
+ "VC": {
+ "name": "Άγιος Βικέντιος και Γρεναδίνες"
+ },
+ "SM": {
+ "name": "Άγιος Μαρίνος"
+ },
+ "MF": {
+ "name": "Άγιος Μαρτίνος (Γαλλικό τμήμα)"
+ },
+ "SX": {
+ "name": "Άγιος Μαρτίνος (Ολλανδικό τμήμα)"
+ },
+ "KN": {
+ "name": "Άγιος Χριστόφορος και Νέβις"
+ },
+ "AZ": {
+ "name": "Αζερμπαϊτζάν"
+ },
+ "EG": {
+ "name": "Αίγυπτος"
+ },
+ "ET": {
+ "name": "Αιθιοπία"
+ },
+ "HT": {
+ "name": "Αϊτή"
+ },
+ "CI": {
+ "name": "Ακτή Ελεφαντοστού"
+ },
+ "AL": {
+ "name": "Αλβανία"
+ },
+ "DZ": {
+ "name": "Αλγερία"
+ },
+ "VI": {
+ "name": "Αμερικανικές Παρθένοι Νήσοι"
+ },
+ "AS": {
+ "name": "Αμερικανική Σαμόα"
+ },
+ "AO": {
+ "name": "Ανγκόλα"
+ },
+ "AI": {
+ "name": "Ανγκουίλα"
+ },
+ "AD": {
+ "name": "Ανδόρα"
+ },
+ "AQ": {
+ "name": "Ανταρκτική"
+ },
+ "AG": {
+ "name": "Αντίγκουα και Μπαρμπούντα"
+ },
+ "UM": {
+ "name": "Απομακρυσμένες Νησίδες Η.Π.Α."
+ },
+ "AR": {
+ "name": "Αργεντινή"
+ },
+ "AM": {
+ "name": "Αρμενία"
+ },
+ "AW": {
+ "name": "Αρούμπα"
+ },
+ "AU": {
+ "name": "Αυστραλία"
+ },
+ "AT": {
+ "name": "Αυστρία"
+ },
+ "AF": {
+ "name": "Αφγανιστάν"
+ },
+ "VU": {
+ "name": "Βανουάτου"
+ },
+ "VA": {
+ "name": "Βατικανό"
+ },
+ "BE": {
+ "name": "Βέλγιο"
+ },
+ "VE": {
+ "name": "Βενεζουέλα"
+ },
+ "BM": {
+ "name": "Βερμούδες"
+ },
+ "VN": {
+ "name": "Βιετνάμ"
+ },
+ "BO": {
+ "name": "Βολιβία"
+ },
+ "KP": {
+ "name": "Βόρεια Κορέα"
+ },
+ "BA": {
+ "name": "Βοσνία - Ερζεγοβίνη"
+ },
+ "BG": {
+ "name": "Βουλγαρία"
+ },
+ "BR": {
+ "name": "Βραζιλία"
+ },
+ "IO": {
+ "name": "Βρετανικά Εδάφη Ινδικού Ωκεανού"
+ },
+ "VG": {
+ "name": "Βρετανικές Παρθένοι Νήσοι"
+ },
+ "FR": {
+ "name": "Γαλλία"
+ },
+ "TF": {
+ "name": "Γαλλικές περιοχές του νοτίου ημισφαιρίου"
+ },
+ "GF": {
+ "name": "Γαλλική Γουιάνα"
+ },
+ "PF": {
+ "name": "Γαλλική Πολυνησία"
+ },
+ "DE": {
+ "name": "Γερμανία"
+ },
+ "GE": {
+ "name": "Γεωργία"
+ },
+ "GI": {
+ "name": "Γιβραλτάρ"
+ },
+ "GM": {
+ "name": "Γκάμπια"
+ },
+ "GA": {
+ "name": "Γκαμπόν"
+ },
+ "GH": {
+ "name": "Γκάνα"
+ },
+ "GG": {
+ "name": "Γκέρνζι"
+ },
+ "GU": {
+ "name": "Γκουάμ"
+ },
+ "GP": {
+ "name": "Γουαδελούπη"
+ },
+ "GT": {
+ "name": "Γουατεμάλα"
+ },
+ "GY": {
+ "name": "Γουιάνα"
+ },
+ "GN": {
+ "name": "Γουινέα"
+ },
+ "GW": {
+ "name": "Γουινέα Μπισάου"
+ },
+ "GD": {
+ "name": "Γρενάδα"
+ },
+ "GL": {
+ "name": "Γροιλανδία"
+ },
+ "DK": {
+ "name": "Δανία"
+ },
+ "DO": {
+ "name": "Δομινικανή Δημοκρατία"
+ },
+ "EH": {
+ "name": "Δυτική Σαχάρα"
+ },
+ "EC": {
+ "name": "Εκουαδόρ"
+ },
+ "SV": {
+ "name": "Ελ Σαλβαδόρ"
+ },
+ "CH": {
+ "name": "Ελβετία"
+ },
+ "GR": {
+ "name": "Ελλάδα"
+ },
+ "ER": {
+ "name": "Ερυθραία"
+ },
+ "EE": {
+ "name": "Εσθονία"
+ },
+ "ZM": {
+ "name": "Ζάμπια"
+ },
+ "ZW": {
+ "name": "Ζιμπάμπουε"
+ },
+ "AE": {
+ "name": "Ηνωμένα Αραβικά Εμιράτα"
+ },
+ "US": {
+ "name": "Ηνωμένες Πολιτείες"
+ },
+ "GB": {
+ "name": "Ηνωμένο Βασίλειο"
+ },
+ "EA": {
+ "name": "Θεούτα και Μελίλα"
+ },
+ "JP": {
+ "name": "Ιαπωνία"
+ },
+ "IN": {
+ "name": "Ινδία"
+ },
+ "ID": {
+ "name": "Ινδονησία"
+ },
+ "JO": {
+ "name": "Ιορδανία"
+ },
+ "IQ": {
+ "name": "Ιράκ"
+ },
+ "IR": {
+ "name": "Ιράν"
+ },
+ "IE": {
+ "name": "Ιρλανδία"
+ },
+ "GQ": {
+ "name": "Ισημερινή Γουινέα"
+ },
+ "IS": {
+ "name": "Ισλανδία"
+ },
+ "ES": {
+ "name": "Ισπανία"
+ },
+ "IL": {
+ "name": "Ισραήλ"
+ },
+ "IT": {
+ "name": "Ιταλία"
+ },
+ "KZ": {
+ "name": "Καζακστάν"
+ },
+ "CM": {
+ "name": "Καμερούν"
+ },
+ "KH": {
+ "name": "Καμπότζη"
+ },
+ "CA": {
+ "name": "Καναδάς"
+ },
+ "IC": {
+ "name": "Κανάριοι Νήσοι"
+ },
+ "QA": {
+ "name": "Κατάρ"
+ },
+ "CF": {
+ "name": "Κεντροαφρικανική Δημοκρατία"
+ },
+ "KE": {
+ "name": "Κένυα"
+ },
+ "CN": {
+ "name": "Κίνα"
+ },
+ "KG": {
+ "name": "Κιργιστάν"
+ },
+ "KI": {
+ "name": "Κιριμπάτι"
+ },
+ "CO": {
+ "name": "Κολομβία"
+ },
+ "KM": {
+ "name": "Κομόρες"
+ },
+ "CD": {
+ "name": "Κονγκό - Κινσάσα"
+ },
+ "CG": {
+ "name": "Κονγκό - Μπραζαβίλ"
+ },
+ "XK": {
+ "name": "Κόσοβο"
+ },
+ "CR": {
+ "name": "Κόστα Ρίκα"
+ },
+ "CU": {
+ "name": "Κούβα"
+ },
+ "KW": {
+ "name": "Κουβέιτ"
+ },
+ "CW": {
+ "name": "Κουρασάο"
+ },
+ "HR": {
+ "name": "Κροατία"
+ },
+ "CY": {
+ "name": "Κύπρος"
+ },
+ "LA": {
+ "name": "Λάος"
+ },
+ "LS": {
+ "name": "Λεσότο"
+ },
+ "LV": {
+ "name": "Λετονία"
+ },
+ "BY": {
+ "name": "Λευκορωσία"
+ },
+ "LB": {
+ "name": "Λίβανος"
+ },
+ "LR": {
+ "name": "Λιβερία"
+ },
+ "LY": {
+ "name": "Λιβύη"
+ },
+ "LT": {
+ "name": "Λιθουανία"
+ },
+ "LI": {
+ "name": "Λιχτενστάιν"
+ },
+ "LU": {
+ "name": "Λουξεμβούργο"
+ },
+ "YT": {
+ "name": "Μαγιότ"
+ },
+ "MG": {
+ "name": "Μαδαγασκάρη"
+ },
+ "MO": {
+ "name": "Μακάο ΕΔΠ Κίνας"
+ },
+ "MY": {
+ "name": "Μαλαισία"
+ },
+ "MW": {
+ "name": "Μαλάουι"
+ },
+ "MV": {
+ "name": "Μαλδίβες"
+ },
+ "ML": {
+ "name": "Μάλι"
+ },
+ "MT": {
+ "name": "Μάλτα"
+ },
+ "MA": {
+ "name": "Μαρόκο"
+ },
+ "MQ": {
+ "name": "Μαρτινίκα"
+ },
+ "MU": {
+ "name": "Μαυρίκιος"
+ },
+ "MR": {
+ "name": "Μαυριτανία"
+ },
+ "ME": {
+ "name": "Μαυροβούνιο"
+ },
+ "MX": {
+ "name": "Μεξικό"
+ },
+ "MM": {
+ "name": "Μιανμάρ\/Βιρμανία"
+ },
+ "FM": {
+ "name": "Μικρονησία"
+ },
+ "MN": {
+ "name": "Μογγολία"
+ },
+ "MZ": {
+ "name": "Μοζαμβίκη"
+ },
+ "MD": {
+ "name": "Μολδαβία"
+ },
+ "MC": {
+ "name": "Μονακό"
+ },
+ "MS": {
+ "name": "Μονσεράτ"
+ },
+ "BD": {
+ "name": "Μπανγκλαντές"
+ },
+ "BB": {
+ "name": "Μπαρμπάντος"
+ },
+ "BS": {
+ "name": "Μπαχάμες"
+ },
+ "BH": {
+ "name": "Μπαχρέιν"
+ },
+ "BZ": {
+ "name": "Μπελίζ"
+ },
+ "BJ": {
+ "name": "Μπενίν"
+ },
+ "BW": {
+ "name": "Μποτσουάνα"
+ },
+ "BF": {
+ "name": "Μπουρκίνα Φάσο"
+ },
+ "BI": {
+ "name": "Μπουρούντι"
+ },
+ "BT": {
+ "name": "Μπουτάν"
+ },
+ "BN": {
+ "name": "Μπρουνέι"
+ },
+ "NA": {
+ "name": "Ναμίμπια"
+ },
+ "NR": {
+ "name": "Ναουρού"
+ },
+ "NZ": {
+ "name": "Νέα Ζηλανδία"
+ },
+ "NC": {
+ "name": "Νέα Καληδονία"
+ },
+ "NP": {
+ "name": "Νεπάλ"
+ },
+ "MP": {
+ "name": "Νήσοι Βόρειες Μαριάνες"
+ },
+ "KY": {
+ "name": "Νήσοι Κάιμαν"
+ },
+ "CC": {
+ "name": "Νήσοι Κόκος (Κίλινγκ)"
+ },
+ "CK": {
+ "name": "Νήσοι Κουκ"
+ },
+ "MH": {
+ "name": "Νήσοι Μάρσαλ"
+ },
+ "GS": {
+ "name": "Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς"
+ },
+ "AX": {
+ "name": "Νήσοι Όλαντ"
+ },
+ "PN": {
+ "name": "Νήσοι Πίτκερν"
+ },
+ "SB": {
+ "name": "Νήσοι Σολομώντος"
+ },
+ "TC": {
+ "name": "Νήσοι Τερκ και Κάικος"
+ },
+ "FO": {
+ "name": "Νήσοι Φερόες"
+ },
+ "FK": {
+ "name": "Νήσοι Φόκλαντ"
+ },
+ "AC": {
+ "name": "Νήσος Ασενσιόν"
+ },
+ "IM": {
+ "name": "Νήσος Μαν"
+ },
+ "NF": {
+ "name": "Νήσος Νόρφολκ"
+ },
+ "CX": {
+ "name": "Νήσος των Χριστουγέννων"
+ },
+ "NE": {
+ "name": "Νίγηρας"
+ },
+ "NG": {
+ "name": "Νιγηρία"
+ },
+ "NI": {
+ "name": "Νικαράγουα"
+ },
+ "NU": {
+ "name": "Νιούε"
+ },
+ "NO": {
+ "name": "Νορβηγία"
+ },
+ "ZA": {
+ "name": "Νότια Αφρική"
+ },
+ "KR": {
+ "name": "Νότια Κορέα"
+ },
+ "SS": {
+ "name": "Νότιο Σουδάν"
+ },
+ "DG": {
+ "name": "Ντιέγκο Γκαρσία"
+ },
+ "DM": {
+ "name": "Ντομίνικα"
+ },
+ "NL": {
+ "name": "Ολλανδία"
+ },
+ "BQ": {
+ "name": "Ολλανδία Καραϊβικής"
+ },
+ "OM": {
+ "name": "Ομάν"
+ },
+ "HN": {
+ "name": "Ονδούρα"
+ },
+ "WF": {
+ "name": "Ουάλις και Φουτούνα"
+ },
+ "HU": {
+ "name": "Ουγγαρία"
+ },
+ "UG": {
+ "name": "Ουγκάντα"
+ },
+ "UZ": {
+ "name": "Ουζμπεκιστάν"
+ },
+ "UA": {
+ "name": "Ουκρανία"
+ },
+ "UY": {
+ "name": "Ουρουγουάη"
+ },
+ "PK": {
+ "name": "Πακιστάν"
+ },
+ "PS": {
+ "name": "Παλαιστινιακά Εδάφη"
+ },
+ "PW": {
+ "name": "Παλάου"
+ },
+ "PA": {
+ "name": "Παναμάς"
+ },
+ "PG": {
+ "name": "Παπούα Νέα Γουινέα"
+ },
+ "PY": {
+ "name": "Παραγουάη"
+ },
+ "PE": {
+ "name": "Περού"
+ },
+ "PL": {
+ "name": "Πολωνία"
+ },
+ "PT": {
+ "name": "Πορτογαλία"
+ },
+ "PR": {
+ "name": "Πουέρτο Ρίκο"
+ },
+ "CV": {
+ "name": "Πράσινο Ακρωτήριο"
+ },
+ "MK": {
+ "name": "Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας"
+ },
+ "RE": {
+ "name": "Ρεϊνιόν"
+ },
+ "RW": {
+ "name": "Ρουάντα"
+ },
+ "RO": {
+ "name": "Ρουμανία"
+ },
+ "RU": {
+ "name": "Ρωσία"
+ },
+ "WS": {
+ "name": "Σαμόα"
+ },
+ "ST": {
+ "name": "Σάο Τομέ και Πρίνσιπε"
+ },
+ "SA": {
+ "name": "Σαουδική Αραβία"
+ },
+ "SJ": {
+ "name": "Σβάλμπαρντ και Γιαν Μαγιέν"
+ },
+ "PM": {
+ "name": "Σεν Πιερ και Μικελόν"
+ },
+ "SN": {
+ "name": "Σενεγάλη"
+ },
+ "RS": {
+ "name": "Σερβία"
+ },
+ "SC": {
+ "name": "Σεϋχέλλες"
+ },
+ "SG": {
+ "name": "Σιγκαπούρη"
+ },
+ "SL": {
+ "name": "Σιέρα Λεόνε"
+ },
+ "SK": {
+ "name": "Σλοβακία"
+ },
+ "SI": {
+ "name": "Σλοβενία"
+ },
+ "SO": {
+ "name": "Σομαλία"
+ },
+ "SZ": {
+ "name": "Σουαζιλάνδη"
+ },
+ "SD": {
+ "name": "Σουδάν"
+ },
+ "SE": {
+ "name": "Σουηδία"
+ },
+ "SR": {
+ "name": "Σουρινάμ"
+ },
+ "LK": {
+ "name": "Σρι Λάνκα"
+ },
+ "SY": {
+ "name": "Συρία"
+ },
+ "TW": {
+ "name": "Ταϊβάν"
+ },
+ "TH": {
+ "name": "Ταϊλάνδη"
+ },
+ "TZ": {
+ "name": "Τανζανία"
+ },
+ "TJ": {
+ "name": "Τατζικιστάν"
+ },
+ "JM": {
+ "name": "Τζαμάικα"
+ },
+ "JE": {
+ "name": "Τζέρζι"
+ },
+ "DJ": {
+ "name": "Τζιμπουτί"
+ },
+ "TL": {
+ "name": "Τιμόρ-Λέστε"
+ },
+ "TG": {
+ "name": "Τόγκο"
+ },
+ "TK": {
+ "name": "Τοκελάου"
+ },
+ "TO": {
+ "name": "Τόνγκα"
+ },
+ "TV": {
+ "name": "Τουβαλού"
+ },
+ "TR": {
+ "name": "Τουρκία"
+ },
+ "TM": {
+ "name": "Τουρκμενιστάν"
+ },
+ "TT": {
+ "name": "Τρινιντάντ και Τομπάγκο"
+ },
+ "TA": {
+ "name": "Τριστάν ντα Κούνια"
+ },
+ "TD": {
+ "name": "Τσαντ"
+ },
+ "CZ": {
+ "name": "Τσεχική Δημοκρατία"
+ },
+ "TN": {
+ "name": "Τυνησία"
+ },
+ "YE": {
+ "name": "Υεμένη"
+ },
+ "PH": {
+ "name": "Φιλιππίνες"
+ },
+ "FI": {
+ "name": "Φινλανδία"
+ },
+ "FJ": {
+ "name": "Φίτζι"
+ },
+ "CL": {
+ "name": "Χιλή"
+ },
+ "HK": {
+ "name": "Χονγκ Κονγκ ΕΔΠ Κίνας"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-AU.json b/library/intl/resources/country/en-AU.json
new file mode 100644
index 000000000..b75648523
--- /dev/null
+++ b/library/intl/resources/country/en-AU.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Minor Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-BE.json b/library/intl/resources/country/en-BE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-BE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-DG.json b/library/intl/resources/country/en-DG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-DG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-FK.json b/library/intl/resources/country/en-FK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-FK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GB.json b/library/intl/resources/country/en-GB.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GB.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GG.json b/library/intl/resources/country/en-GG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GI.json b/library/intl/resources/country/en-GI.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-HK.json b/library/intl/resources/country/en-HK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-HK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IE.json b/library/intl/resources/country/en-IE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IM.json b/library/intl/resources/country/en-IM.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IM.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IN.json b/library/intl/resources/country/en-IN.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IN.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IO.json b/library/intl/resources/country/en-IO.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-JE.json b/library/intl/resources/country/en-JE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-JE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-MO.json b/library/intl/resources/country/en-MO.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-MO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-MT.json b/library/intl/resources/country/en-MT.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-MT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-NZ.json b/library/intl/resources/country/en-NZ.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-NZ.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-PK.json b/library/intl/resources/country/en-PK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-PK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-SG.json b/library/intl/resources/country/en-SG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-SG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-SH.json b/library/intl/resources/country/en-SH.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-SH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-VG.json b/library/intl/resources/country/en-VG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-VG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en.json b/library/intl/resources/country/en.json
new file mode 100644
index 000000000..ec4919eb8
--- /dev/null
+++ b/library/intl/resources/country/en.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/eo.json b/library/intl/resources/country/eo.json
new file mode 100644
index 000000000..8d760b59d
--- /dev/null
+++ b/library/intl/resources/country/eo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganujo"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albanujo"
+ },
+ "DZ": {
+ "name": "Alĝerio"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andoro"
+ },
+ "AO": {
+ "name": "Angolo"
+ },
+ "AI": {
+ "name": "Angvilo"
+ },
+ "AQ": {
+ "name": "Antarkto"
+ },
+ "AG": {
+ "name": "Antigvo-Barbudo"
+ },
+ "AR": {
+ "name": "Argentino"
+ },
+ "AM": {
+ "name": "Armenujo"
+ },
+ "AW": {
+ "name": "Arubo"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Aŭstralio"
+ },
+ "AT": {
+ "name": "Aŭstrujo"
+ },
+ "AZ": {
+ "name": "Azerbajĝano"
+ },
+ "BS": {
+ "name": "Bahamoj"
+ },
+ "BD": {
+ "name": "Bangladeŝo"
+ },
+ "BB": {
+ "name": "Barbado"
+ },
+ "BH": {
+ "name": "Barejno"
+ },
+ "PW": {
+ "name": "Belaŭo"
+ },
+ "BE": {
+ "name": "Belgujo"
+ },
+ "BZ": {
+ "name": "Belizo"
+ },
+ "BY": {
+ "name": "Belorusujo"
+ },
+ "BJ": {
+ "name": "Benino"
+ },
+ "BM": {
+ "name": "Bermudoj"
+ },
+ "BW": {
+ "name": "Bocvano"
+ },
+ "BO": {
+ "name": "Bolivio"
+ },
+ "BA": {
+ "name": "Bosnio-Hercegovino"
+ },
+ "BR": {
+ "name": "Brazilo"
+ },
+ "IO": {
+ "name": "Brita Hindoceana Teritorio"
+ },
+ "VG": {
+ "name": "Britaj Virgulininsuloj"
+ },
+ "BN": {
+ "name": "Brunejo"
+ },
+ "BG": {
+ "name": "Bulgarujo"
+ },
+ "BF": {
+ "name": "Burkino"
+ },
+ "BI": {
+ "name": "Burundo"
+ },
+ "BT": {
+ "name": "Butano"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Centr-Afrika Respubliko"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Ĉado"
+ },
+ "CZ": {
+ "name": "Ĉeĥujo"
+ },
+ "CL": {
+ "name": "Ĉilio"
+ },
+ "CN": {
+ "name": "Ĉinujo"
+ },
+ "DK": {
+ "name": "Danujo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Domingo"
+ },
+ "DM": {
+ "name": "Dominiko"
+ },
+ "CI": {
+ "name": "Ebur-Bordo"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "EC": {
+ "name": "Ekvadoro"
+ },
+ "GQ": {
+ "name": "Ekvatora Gvineo"
+ },
+ "ER": {
+ "name": "Eritreo"
+ },
+ "EE": {
+ "name": "Estonujo"
+ },
+ "ET": {
+ "name": "Etiopujo"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Ferooj"
+ },
+ "FJ": {
+ "name": "Fiĝoj"
+ },
+ "PH": {
+ "name": "Filipinoj"
+ },
+ "FI": {
+ "name": "Finnlando"
+ },
+ "GF": {
+ "name": "Franca Gviano"
+ },
+ "PF": {
+ "name": "Franca Polinezio"
+ },
+ "FR": {
+ "name": "Francujo"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabono"
+ },
+ "GM": {
+ "name": "Gambio"
+ },
+ "GH": {
+ "name": "Ganao"
+ },
+ "DE": {
+ "name": "Germanujo"
+ },
+ "GR": {
+ "name": "Grekujo"
+ },
+ "GD": {
+ "name": "Grenado"
+ },
+ "GL": {
+ "name": "Gronlando"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gujano"
+ },
+ "GP": {
+ "name": "Gvadelupo"
+ },
+ "GU": {
+ "name": "Gvamo"
+ },
+ "GT": {
+ "name": "Gvatemalo"
+ },
+ "GN": {
+ "name": "Gvineo"
+ },
+ "GW": {
+ "name": "Gvineo-Bisaŭo"
+ },
+ "GI": {
+ "name": "Ĝibraltaro"
+ },
+ "DJ": {
+ "name": "Ĝibutio"
+ },
+ "HT": {
+ "name": "Haitio"
+ },
+ "IN": {
+ "name": "Hindujo"
+ },
+ "ES": {
+ "name": "Hispanujo"
+ },
+ "HN": {
+ "name": "Honduro"
+ },
+ "HK": {
+ "name": "Honkongo"
+ },
+ "HU": {
+ "name": "Hungarujo"
+ },
+ "ID": {
+ "name": "Indonezio"
+ },
+ "IQ": {
+ "name": "Irako"
+ },
+ "IR": {
+ "name": "Irano"
+ },
+ "IE": {
+ "name": "Irlando"
+ },
+ "IS": {
+ "name": "Islando"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israelo"
+ },
+ "IT": {
+ "name": "Italujo"
+ },
+ "JM": {
+ "name": "Jamajko"
+ },
+ "JP": {
+ "name": "Japanujo"
+ },
+ "YE": {
+ "name": "Jemeno"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanio"
+ },
+ "CV": {
+ "name": "Kabo-Verdo"
+ },
+ "KH": {
+ "name": "Kamboĝo"
+ },
+ "CM": {
+ "name": "Kameruno"
+ },
+ "CA": {
+ "name": "Kanado"
+ },
+ "GE": {
+ "name": "Kartvelujo"
+ },
+ "QA": {
+ "name": "Kataro"
+ },
+ "KZ": {
+ "name": "Kazaĥstano"
+ },
+ "KY": {
+ "name": "Kejmanoj"
+ },
+ "KE": {
+ "name": "Kenjo"
+ },
+ "CY": {
+ "name": "Kipro"
+ },
+ "KG": {
+ "name": "Kirgizistano"
+ },
+ "KI": {
+ "name": "Kiribato"
+ },
+ "CO": {
+ "name": "Kolombio"
+ },
+ "KM": {
+ "name": "Komoroj"
+ },
+ "CG": {
+ "name": "Kongolo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostariko"
+ },
+ "HR": {
+ "name": "Kroatujo"
+ },
+ "CU": {
+ "name": "Kubo"
+ },
+ "CK": {
+ "name": "Kukinsuloj"
+ },
+ "KW": {
+ "name": "Kuvajto"
+ },
+ "LA": {
+ "name": "Laoso"
+ },
+ "LV": {
+ "name": "Latvujo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberio"
+ },
+ "LY": {
+ "name": "Libio"
+ },
+ "LI": {
+ "name": "Liĥtenŝtejno"
+ },
+ "LT": {
+ "name": "Litovujo"
+ },
+ "LU": {
+ "name": "Luksemburgo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskaro"
+ },
+ "YT": {
+ "name": "Majoto"
+ },
+ "MK": {
+ "name": "Makedonujo"
+ },
+ "MY": {
+ "name": "Malajzio"
+ },
+ "MW": {
+ "name": "Malavio"
+ },
+ "MV": {
+ "name": "Maldivoj"
+ },
+ "ML": {
+ "name": "Malio"
+ },
+ "MT": {
+ "name": "Malto"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marŝaloj"
+ },
+ "MQ": {
+ "name": "Martiniko"
+ },
+ "MU": {
+ "name": "Maŭricio"
+ },
+ "MR": {
+ "name": "Maŭritanujo"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronezio"
+ },
+ "MM": {
+ "name": "Mjanmao"
+ },
+ "MD": {
+ "name": "Moldavujo"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolujo"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambiko"
+ },
+ "NA": {
+ "name": "Namibio"
+ },
+ "NR": {
+ "name": "Nauro"
+ },
+ "NL": {
+ "name": "Nederlando"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NG": {
+ "name": "Niĝerio"
+ },
+ "NE": {
+ "name": "Niĝero"
+ },
+ "NI": {
+ "name": "Nikaragvo"
+ },
+ "NU": {
+ "name": "Niuo"
+ },
+ "KP": {
+ "name": "Nord-Koreo"
+ },
+ "MP": {
+ "name": "Nord-Marianoj"
+ },
+ "NF": {
+ "name": "Norfolkinsulo"
+ },
+ "NO": {
+ "name": "Norvegujo"
+ },
+ "NC": {
+ "name": "Nov-Kaledonio"
+ },
+ "NZ": {
+ "name": "Nov-Zelando"
+ },
+ "EH": {
+ "name": "Okcidenta Saharo"
+ },
+ "OM": {
+ "name": "Omano"
+ },
+ "PK": {
+ "name": "Pakistano"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panamo"
+ },
+ "PG": {
+ "name": "Papuo-Nov-Gvineo"
+ },
+ "PY": {
+ "name": "Paragvajo"
+ },
+ "PE": {
+ "name": "Peruo"
+ },
+ "PN": {
+ "name": "Pitkarna Insulo"
+ },
+ "PL": {
+ "name": "Pollando"
+ },
+ "PT": {
+ "name": "Portugalujo"
+ },
+ "PR": {
+ "name": "Puerto-Riko"
+ },
+ "RE": {
+ "name": "Reunio"
+ },
+ "RW": {
+ "name": "Ruando"
+ },
+ "RO": {
+ "name": "Rumanujo"
+ },
+ "RU": {
+ "name": "Rusujo"
+ },
+ "SB": {
+ "name": "Salomonoj"
+ },
+ "SV": {
+ "name": "Salvadoro"
+ },
+ "WS": {
+ "name": "Samoo"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "ST": {
+ "name": "Sao-Tomeo kaj Principeo"
+ },
+ "SA": {
+ "name": "Saŭda Arabujo"
+ },
+ "SC": {
+ "name": "Sejŝeloj"
+ },
+ "SN": {
+ "name": "Senegalo"
+ },
+ "SH": {
+ "name": "Sent-Heleno"
+ },
+ "KN": {
+ "name": "Sent-Kristofo kaj Neviso"
+ },
+ "LC": {
+ "name": "Sent-Lucio"
+ },
+ "PM": {
+ "name": "Sent-Piero kaj Mikelono"
+ },
+ "VC": {
+ "name": "Sent-Vincento kaj la Grenadinoj"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Siera-Leono"
+ },
+ "SG": {
+ "name": "Singapuro"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirio"
+ },
+ "SK": {
+ "name": "Slovakujo"
+ },
+ "SI": {
+ "name": "Slovenujo"
+ },
+ "SO": {
+ "name": "Somalujo"
+ },
+ "LK": {
+ "name": "Sri-Lanko"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "ZA": {
+ "name": "Sud-Afriko"
+ },
+ "GS": {
+ "name": "Sud-Georgio kaj Sud-Sandviĉinsuloj"
+ },
+ "KR": {
+ "name": "Sud-Koreo"
+ },
+ "SS": {
+ "name": "Sud-Sudano"
+ },
+ "SD": {
+ "name": "Sudano"
+ },
+ "SR": {
+ "name": "Surinamo"
+ },
+ "SJ": {
+ "name": "Svalbardo kaj Jan-Majen-insulo"
+ },
+ "SZ": {
+ "name": "Svazilando"
+ },
+ "SE": {
+ "name": "Svedujo"
+ },
+ "CH": {
+ "name": "Svisujo"
+ },
+ "TJ": {
+ "name": "Taĝikujo"
+ },
+ "TH": {
+ "name": "Tajlando"
+ },
+ "TW": {
+ "name": "Tajvano"
+ },
+ "TZ": {
+ "name": "Tanzanio"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togolo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tongo"
+ },
+ "TT": {
+ "name": "Trinidado kaj Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizio"
+ },
+ "TM": {
+ "name": "Turkmenujo"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TR": {
+ "name": "Turkujo"
+ },
+ "TV": {
+ "name": "Tuvalo"
+ },
+ "UG": {
+ "name": "Ugando"
+ },
+ "UA": {
+ "name": "Ukrajno"
+ },
+ "GB": {
+ "name": "Unuiĝinta Reĝlando"
+ },
+ "AE": {
+ "name": "Unuiĝintaj Arabaj Emirlandos"
+ },
+ "UY": {
+ "name": "Urugvajo"
+ },
+ "UM": {
+ "name": "Usonaj malgrandaj insuloj"
+ },
+ "VI": {
+ "name": "Usonaj Virgulininsuloj"
+ },
+ "US": {
+ "name": "Usono"
+ },
+ "UZ": {
+ "name": "Uzbekujo"
+ },
+ "WF": {
+ "name": "Valiso kaj Futuno"
+ },
+ "VU": {
+ "name": "Vanuatuo"
+ },
+ "VA": {
+ "name": "Vatikano"
+ },
+ "VE": {
+ "name": "Venezuelo"
+ },
+ "VN": {
+ "name": "Vjetnamo"
+ },
+ "ZM": {
+ "name": "Zambio"
+ },
+ "ZW": {
+ "name": "Zimbabvo"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-AR.json b/library/intl/resources/country/es-AR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-AR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-BO.json b/library/intl/resources/country/es-BO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-BO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CL.json b/library/intl/resources/country/es-CL.json
new file mode 100644
index 000000000..3d5e8080b
--- /dev/null
+++ b/library/intl/resources/country/es-CL.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbayán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sahara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "PS": {
+ "name": "Territorio Palestino"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CO.json b/library/intl/resources/country/es-CO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CR.json b/library/intl/resources/country/es-CR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CU.json b/library/intl/resources/country/es-CU.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CU.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-DO.json b/library/intl/resources/country/es-DO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-DO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-EC.json b/library/intl/resources/country/es-EC.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-EC.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-GT.json b/library/intl/resources/country/es-GT.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-GT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-HN.json b/library/intl/resources/country/es-HN.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-HN.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-MX.json b/library/intl/resources/country/es-MX.json
new file mode 100644
index 000000000..7d7df13bc
--- /dev/null
+++ b/library/intl/resources/country/es-MX.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "CG": {
+ "name": "Congo Brazzaville"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "CX": {
+ "name": "Isla de Navidad"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "Islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgias del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "UM": {
+ "name": "Islas UltramarinasMenores de Estados Unidos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de los Estados Unidos"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "Región Administrativa Especial de Hong Kong de la República Popular China"
+ },
+ "MO": {
+ "name": "Región Administrativa Especial de Macao de la República Popular China"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán de Acuña"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-NI.json b/library/intl/resources/country/es-NI.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-NI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PA.json b/library/intl/resources/country/es-PA.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PA.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PE.json b/library/intl/resources/country/es-PE.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PR.json b/library/intl/resources/country/es-PR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PY.json b/library/intl/resources/country/es-PY.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PY.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-SV.json b/library/intl/resources/country/es-SV.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-SV.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-US.json b/library/intl/resources/country/es-US.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-US.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-UY.json b/library/intl/resources/country/es-UY.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-UY.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-VE.json b/library/intl/resources/country/es-VE.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-VE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es.json b/library/intl/resources/country/es.json
new file mode 100644
index 000000000..12f040042
--- /dev/null
+++ b/library/intl/resources/country/es.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "AC": {
+ "name": "Isla de la Ascensión"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NU": {
+ "name": "Isla Niue"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Åland"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/et.json b/library/intl/resources/country/et.json
new file mode 100644
index 000000000..85758bcff
--- /dev/null
+++ b/library/intl/resources/country/et.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ahvenamaa"
+ },
+ "AL": {
+ "name": "Albaania"
+ },
+ "DZ": {
+ "name": "Alžeeria"
+ },
+ "AS": {
+ "name": "Ameerika Samoa"
+ },
+ "US": {
+ "name": "Ameerika Ühendriigid"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "AE": {
+ "name": "Araabia Ühendemiraadid"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armeenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensioni saar"
+ },
+ "AZ": {
+ "name": "Aserbaidžaan"
+ },
+ "AU": {
+ "name": "Austraalia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "PW": {
+ "name": "Belau"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hertsegoviina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasiilia"
+ },
+ "IO": {
+ "name": "Briti India ookeani ala"
+ },
+ "VG": {
+ "name": "Briti Neitsisaared"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooki saared"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaani Vabariik"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EE": {
+ "name": "Eesti"
+ },
+ "EG": {
+ "name": "Egiptus"
+ },
+ "GQ": {
+ "name": "Ekvatoriaal-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ET": {
+ "name": "Etioopia"
+ },
+ "FK": {
+ "name": "Falklandi saared"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipiinid"
+ },
+ "FO": {
+ "name": "Fääri saared"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GE": {
+ "name": "Gruusia"
+ },
+ "GL": {
+ "name": "Gröönimaa"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "CN": {
+ "name": "Hiina"
+ },
+ "ES": {
+ "name": "Hispaania"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "BQ": {
+ "name": "Hollandi Kariibi mere saared"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong - Hiina erihalduspiirkond"
+ },
+ "HR": {
+ "name": "Horvaatia"
+ },
+ "TL": {
+ "name": "Ida-Timor"
+ },
+ "IE": {
+ "name": "Iirimaa"
+ },
+ "IL": {
+ "name": "Iisrael"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indoneesia"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Itaalia"
+ },
+ "JP": {
+ "name": "Jaapan"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "YE": {
+ "name": "Jeemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaania"
+ },
+ "CX": {
+ "name": "Jõulusaar"
+ },
+ "KY": {
+ "name": "Kaimanisaared"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanaari saared"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasahstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CF": {
+ "name": "Kesk-Aafrika Vabariik"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KM": {
+ "name": "Komoorid"
+ },
+ "CD": {
+ "name": "Kongo DV"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CC": {
+ "name": "Kookossaared"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "GR": {
+ "name": "Kreeka"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KW": {
+ "name": "Kuveit"
+ },
+ "KG": {
+ "name": "Kõrgõzstan"
+ },
+ "CY": {
+ "name": "Küpros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LT": {
+ "name": "Leedu"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Libeeria"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LB": {
+ "name": "Liibanon"
+ },
+ "LY": {
+ "name": "Liibüa"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "ZA": {
+ "name": "Lõuna-Aafrika Vabariik"
+ },
+ "GS": {
+ "name": "Lõuna-Georgia ja Lõuna-Sandwichi saared"
+ },
+ "KR": {
+ "name": "Lõuna-Korea"
+ },
+ "SS": {
+ "name": "Lõuna-Sudaan"
+ },
+ "LV": {
+ "name": "Läti"
+ },
+ "EH": {
+ "name": "Lääne-Sahara"
+ },
+ "MO": {
+ "name": "Macau - Hiina erihalduspiirkond"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedoonia"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiivid"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mani saar"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshalli saared"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritaania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mehhiko"
+ },
+ "FM": {
+ "name": "Mikroneesia Liiduriigid"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambiik"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namiibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NG": {
+ "name": "Nigeeria"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norra"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "PG": {
+ "name": "Paapua Uus-Guinea"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palestiina alad"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peruu"
+ },
+ "PN": {
+ "name": "Pitcairni saared"
+ },
+ "PL": {
+ "name": "Poola"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "GF": {
+ "name": "Prantsuse Guajaana"
+ },
+ "TF": {
+ "name": "Prantsuse Lõunaalad"
+ },
+ "PF": {
+ "name": "Prantsuse Polüneesia"
+ },
+ "FR": {
+ "name": "Prantsusmaa"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KP": {
+ "name": "Põhja-Korea"
+ },
+ "MP": {
+ "name": "Põhja-Mariaanid"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "CV": {
+ "name": "Roheneemesaared"
+ },
+ "SE": {
+ "name": "Rootsi"
+ },
+ "RO": {
+ "name": "Rumeenia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SB": {
+ "name": "Saalomoni Saared"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadiinid"
+ },
+ "DE": {
+ "name": "Saksamaa"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Araabia"
+ },
+ "SC": {
+ "name": "Seišellid"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakkia"
+ },
+ "SI": {
+ "name": "Sloveenia"
+ },
+ "SO": {
+ "name": "Somaalia"
+ },
+ "FI": {
+ "name": "Soome"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudaan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "GB": {
+ "name": "Suurbritannia"
+ },
+ "SZ": {
+ "name": "Svaasimaa"
+ },
+ "SJ": {
+ "name": "Svalbard ja Jan Mayen"
+ },
+ "SY": {
+ "name": "Süüria"
+ },
+ "CH": {
+ "name": "Šveits"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "DK": {
+ "name": "Taani"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tai"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansaania"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tšaad"
+ },
+ "CZ": {
+ "name": "Tšehhi"
+ },
+ "CL": {
+ "name": "Tšiili"
+ },
+ "TN": {
+ "name": "Tuneesia"
+ },
+ "TC": {
+ "name": "Turks ja Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türgi"
+ },
+ "TM": {
+ "name": "Türkmenistan"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungari"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VI": {
+ "name": "USA Neitsisaared"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "NC": {
+ "name": "Uus-Kaledoonia"
+ },
+ "NZ": {
+ "name": "Uus-Meremaa"
+ },
+ "BY": {
+ "name": "Valgevene"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "RU": {
+ "name": "Venemaa"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "UM": {
+ "name": "Ühendriikide hajasaared"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/eu.json b/library/intl/resources/country/eu.json
new file mode 100644
index 000000000..2e210783f
--- /dev/null
+++ b/library/intl/resources/country/eu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "CF": {
+ "name": "Afrika Erdiko Errepublika"
+ },
+ "AX": {
+ "name": "Aland uharteak"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AS": {
+ "name": "Amerikar Samoa"
+ },
+ "US": {
+ "name": "Ameriketako Estatu Batuak"
+ },
+ "UM": {
+ "name": "Ameriketako Estatu Batuetako Kanpoaldeko Uharte Txikiak"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua eta Barbuda"
+ },
+ "AE": {
+ "name": "Arabiar Emirrerri Batuak"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension uhartea"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamak"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgika"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "VI": {
+ "name": "Birjina uharte amerikarrak"
+ },
+ "VG": {
+ "name": "Birjina uharte britainiarrak"
+ },
+ "CI": {
+ "name": "Boli Kosta"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "EA": {
+ "name": "Ceuta eta Melilla"
+ },
+ "CX": {
+ "name": "Christmas uhartea"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) uharteak"
+ },
+ "CK": {
+ "name": "Cook uharteak"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikar Errepublika"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "TL": {
+ "name": "Ekialdeko Timor"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "GQ": {
+ "name": "Ekuatore Ginea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "GB": {
+ "name": "Erresuma Batua"
+ },
+ "RO": {
+ "name": "Errumania"
+ },
+ "RU": {
+ "name": "Errusia"
+ },
+ "SK": {
+ "name": "Eslovakia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "Espainia"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe uharteak"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinak"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Frantzia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GW": {
+ "name": "Ginea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grezia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Frantsesa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "KR": {
+ "name": "Hego Korea"
+ },
+ "SS": {
+ "name": "Hego Sudan"
+ },
+ "ZA": {
+ "name": "Hegoafrika"
+ },
+ "GS": {
+ "name": "Hegoaldeko Georgia eta Hegoaldeko Sandwich uharteak"
+ },
+ "TF": {
+ "name": "Hegoaldeko lurralde frantsesak"
+ },
+ "NL": {
+ "name": "Herbehereak"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong AEB Txina"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "IO": {
+ "name": "Indiako Ozeanoko lurralde britainiarra"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "KP": {
+ "name": "Ipar Korea"
+ },
+ "MP": {
+ "name": "Iparraldeko Mariana uharteak"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KY": {
+ "name": "Kaiman uharteak"
+ },
+ "NC": {
+ "name": "Kaledonia Berria"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariak"
+ },
+ "KH": {
+ "name": "Kanbodia"
+ },
+ "BQ": {
+ "name": "Karibeko Herbehereak"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolonbia"
+ },
+ "KM": {
+ "name": "Komoreak"
+ },
+ "CG": {
+ "name": "Kongo (Brazzaville)"
+ },
+ "CD": {
+ "name": "Kongoko Errepublika Demokratikoa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroazia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxenburgo"
+ },
+ "MO": {
+ "name": "Macau AEB Txina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivak"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "FK": {
+ "name": "Malvinak"
+ },
+ "IM": {
+ "name": "Man uhartea"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshall uharteak"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Maurizio"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonia"
+ },
+ "EH": {
+ "name": "Mendebaldeko Sahara"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambike"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk uhartea"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinako Lurraldeak"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginea Berria"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn uharteak"
+ },
+ "PF": {
+ "name": "Polinesia Frantsesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts eta Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent eta Grenadinak"
+ },
+ "PM": {
+ "name": "Saint-Pierre eta Mikelune"
+ },
+ "SB": {
+ "name": "Salomon uharteak"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "BL": {
+ "name": "San Bartolome"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Luzia"
+ },
+ "ST": {
+ "name": "Sao Tome eta Principe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelleak"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SE": {
+ "name": "Suedia"
+ },
+ "CH": {
+ "name": "Suitza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard eta Jan Mayen uharteak"
+ },
+ "SZ": {
+ "name": "Swazilandia"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad eta Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TC": {
+ "name": "Turk eta Caicos uharteak"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txad"
+ },
+ "CZ": {
+ "name": "Txekiar Errepublika"
+ },
+ "CL": {
+ "name": "Txile"
+ },
+ "CN": {
+ "name": "Txina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikano Hiria"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis eta Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeelanda Berria"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CY": {
+ "name": "Zipre"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ewo.json b/library/intl/resources/country/ewo.json
new file mode 100644
index 000000000..48ae55a50
--- /dev/null
+++ b/library/intl/resources/country/ewo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afəganisətán"
+ },
+ "ZA": {
+ "name": "Afiríka yá Súd"
+ },
+ "HT": {
+ "name": "Aití"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Aləbánia"
+ },
+ "DZ": {
+ "name": "Aləyéria"
+ },
+ "AD": {
+ "name": "Andór"
+ },
+ "AI": {
+ "name": "Angíyə"
+ },
+ "AO": {
+ "name": "Angolá"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antígwa ai Barəbúda"
+ },
+ "SA": {
+ "name": "Arabí Saudí"
+ },
+ "AR": {
+ "name": "Arəhenətína"
+ },
+ "AM": {
+ "name": "Arəménia"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azɛrəbaidzáŋ"
+ },
+ "BS": {
+ "name": "Bahámas"
+ },
+ "BH": {
+ "name": "Bahərɛ́n"
+ },
+ "BD": {
+ "name": "Bangaladɛ́s"
+ },
+ "BB": {
+ "name": "Barəbád"
+ },
+ "AE": {
+ "name": "Bemirá yá Arábə uní"
+ },
+ "BY": {
+ "name": "Bəlarús"
+ },
+ "BR": {
+ "name": "Bəlazíl"
+ },
+ "BZ": {
+ "name": "Bəlís"
+ },
+ "BJ": {
+ "name": "Bəníŋ"
+ },
+ "AS": {
+ "name": "Bəsamóa yá Amə́rəka"
+ },
+ "BE": {
+ "name": "Bɛləhíg"
+ },
+ "BM": {
+ "name": "Bɛrəmúd"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosəní ai ɛrəzegovín"
+ },
+ "BW": {
+ "name": "Botswaná"
+ },
+ "BG": {
+ "name": "Buləgarí"
+ },
+ "BF": {
+ "name": "Buləkiná Fasó"
+ },
+ "BN": {
+ "name": "Buluné"
+ },
+ "BI": {
+ "name": "Burundí"
+ },
+ "BT": {
+ "name": "Butáŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danəmárəg"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dómənika"
+ },
+ "DJ": {
+ "name": "Dzibutí"
+ },
+ "EG": {
+ "name": "Ehíbətɛn"
+ },
+ "EC": {
+ "name": "Ekwatór"
+ },
+ "ER": {
+ "name": "Elitəlé"
+ },
+ "EE": {
+ "name": "Esetoní"
+ },
+ "ET": {
+ "name": "Etiopí"
+ },
+ "IN": {
+ "name": "ɛ́ndə"
+ },
+ "ID": {
+ "name": "ɛndonésia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidzí"
+ },
+ "PH": {
+ "name": "Filipín"
+ },
+ "FI": {
+ "name": "Finəlán"
+ },
+ "PL": {
+ "name": "fólis"
+ },
+ "PT": {
+ "name": "fɔrətugɛ́s"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FR": {
+ "name": "Fulɛnsí"
+ },
+ "GA": {
+ "name": "Gabóŋ"
+ },
+ "GM": {
+ "name": "Gambí"
+ },
+ "GH": {
+ "name": "Ganá"
+ },
+ "GD": {
+ "name": "Gələnádə"
+ },
+ "GR": {
+ "name": "Gəlɛ́s"
+ },
+ "GN": {
+ "name": "Giné"
+ },
+ "GW": {
+ "name": "Giné Bisaó"
+ },
+ "GQ": {
+ "name": "Giné Ekwató"
+ },
+ "GL": {
+ "name": "Goelán"
+ },
+ "GP": {
+ "name": "Guadəlúb"
+ },
+ "GU": {
+ "name": "Guám"
+ },
+ "GT": {
+ "name": "Guatemalá"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyán"
+ },
+ "GF": {
+ "name": "Guyán yá Fulɛnsí"
+ },
+ "JM": {
+ "name": "Hamaíka"
+ },
+ "JP": {
+ "name": "Hapɔ́n"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "JO": {
+ "name": "Horədaní"
+ },
+ "GE": {
+ "name": "Horə́yia"
+ },
+ "IQ": {
+ "name": "Irág"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irəlándə"
+ },
+ "IS": {
+ "name": "Isəlándə"
+ },
+ "IL": {
+ "name": "Isəraɛ́l"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itáliɛn"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "kambodía"
+ },
+ "CM": {
+ "name": "Kamərún"
+ },
+ "CA": {
+ "name": "kanadá"
+ },
+ "QA": {
+ "name": "Katár"
+ },
+ "KZ": {
+ "name": "Kazakətáŋ"
+ },
+ "KE": {
+ "name": "Keniá"
+ },
+ "HR": {
+ "name": "Kəlowásia"
+ },
+ "KI": {
+ "name": "Kiribatí"
+ },
+ "KG": {
+ "name": "Kirigisətán"
+ },
+ "CI": {
+ "name": "Kód Divɔ́r"
+ },
+ "CO": {
+ "name": "Kolɔmbí"
+ },
+ "KM": {
+ "name": "Komɔ́r"
+ },
+ "CG": {
+ "name": "Kongó"
+ },
+ "KP": {
+ "name": "Koré yá Nór"
+ },
+ "KR": {
+ "name": "Koré yá Súd"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Ríka"
+ },
+ "KW": {
+ "name": "Kowɛ́d"
+ },
+ "ES": {
+ "name": "Kpənyá"
+ },
+ "CU": {
+ "name": "Kubá"
+ },
+ "LA": {
+ "name": "Laós"
+ },
+ "LS": {
+ "name": "Ləsotó"
+ },
+ "LV": {
+ "name": "Lətoní"
+ },
+ "LB": {
+ "name": "Libáŋ"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libí"
+ },
+ "LI": {
+ "name": "Lísə́sə́táin"
+ },
+ "LT": {
+ "name": "Lituaní"
+ },
+ "LU": {
+ "name": "Lukəzambúd"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasəkárə"
+ },
+ "MW": {
+ "name": "Malawí"
+ },
+ "MV": {
+ "name": "Malədívə"
+ },
+ "MT": {
+ "name": "Málətə"
+ },
+ "MY": {
+ "name": "Malɛ́zia"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MQ": {
+ "name": "Marətiníg"
+ },
+ "MA": {
+ "name": "Marɔ́g"
+ },
+ "MK": {
+ "name": "Masedónia"
+ },
+ "YT": {
+ "name": "Mayɔ́d"
+ },
+ "MX": {
+ "name": "Mɛkəsíg"
+ },
+ "MM": {
+ "name": "Mianəmár"
+ },
+ "FM": {
+ "name": "Mikoronésia"
+ },
+ "VI": {
+ "name": "Minlán Mi Amɛrəkə"
+ },
+ "FK": {
+ "name": "Minlán Mi Fóləkəlan"
+ },
+ "CV": {
+ "name": "Minlán Mí Káb Vɛr"
+ },
+ "KY": {
+ "name": "Minlán Mí Kalimáŋ"
+ },
+ "CK": {
+ "name": "Minlán Mí kúg"
+ },
+ "MH": {
+ "name": "Minlán Mí Maresál"
+ },
+ "MP": {
+ "name": "Minlán Mi Marián yá Nór"
+ },
+ "SB": {
+ "name": "Minlán Mí Solomɔ́n"
+ },
+ "TC": {
+ "name": "Minlán Mí túrə́g-ai-Kaíg"
+ },
+ "NF": {
+ "name": "Minlán Nɔrəfɔ́ləkə"
+ },
+ "MD": {
+ "name": "Molədaví"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morís"
+ },
+ "MR": {
+ "name": "Moritaní"
+ },
+ "MZ": {
+ "name": "Mozambíg"
+ },
+ "MC": {
+ "name": "Mɔnakó"
+ },
+ "MN": {
+ "name": "Mɔngɔ́lia"
+ },
+ "MS": {
+ "name": "Mɔ́ntserád"
+ },
+ "NA": {
+ "name": "Namibí"
+ },
+ "NR": {
+ "name": "Naurú"
+ },
+ "DE": {
+ "name": "Ndzáman"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "SM": {
+ "name": "Ǹfúfúb Maríno"
+ },
+ "SH": {
+ "name": "Ǹfúfúb-Ɛlɛ́na"
+ },
+ "KN": {
+ "name": "Ǹfúfúb-Kilisətóv-ai-Nevis"
+ },
+ "LC": {
+ "name": "Ǹfúfúb-Lúsia"
+ },
+ "PM": {
+ "name": "Ǹfúfúb-Píɛr-ai-Mikəlɔ́ŋ"
+ },
+ "VC": {
+ "name": "Ǹfúfúb-Vɛngəsáŋ-ai-Bə Gələnadín"
+ },
+ "NG": {
+ "name": "Nihéria"
+ },
+ "NE": {
+ "name": "Nihɛ́r"
+ },
+ "NI": {
+ "name": "Nikarágua"
+ },
+ "NU": {
+ "name": "Niué"
+ },
+ "NC": {
+ "name": "Ǹkpámɛn Kaledónia"
+ },
+ "NZ": {
+ "name": "Ǹkpámɛn Zeláŋ"
+ },
+ "US": {
+ "name": "Ǹnam Amɛrəkə"
+ },
+ "GB": {
+ "name": "Ǹnam Engəlis"
+ },
+ "IO": {
+ "name": "ǹnam ɛngəlís yá Máŋ mə́ ɛ́ndə"
+ },
+ "CD": {
+ "name": "ǹnam Kongó Demokəlatíg"
+ },
+ "VG": {
+ "name": "ńnam Minlán ɛ́ngəlís"
+ },
+ "PS": {
+ "name": "Ǹnam Palɛsətín"
+ },
+ "CZ": {
+ "name": "Ǹnam Tsɛ́g"
+ },
+ "VA": {
+ "name": "Ǹnam Vatikán"
+ },
+ "CF": {
+ "name": "ǹnam Zǎŋ Afiriká"
+ },
+ "NO": {
+ "name": "Nɔrəvɛ́s"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "HN": {
+ "name": "Ondurás"
+ },
+ "HU": {
+ "name": "Ongirí"
+ },
+ "AU": {
+ "name": "Osətəlalí"
+ },
+ "AT": {
+ "name": "Osətəlía"
+ },
+ "PK": {
+ "name": "Pakisətán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papwazi yá Ǹkpámɛ́n Giné"
+ },
+ "PY": {
+ "name": "Paragué"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "NL": {
+ "name": "Pɛíbá"
+ },
+ "PN": {
+ "name": "Pítə́kɛ́rɛnə"
+ },
+ "PF": {
+ "name": "Polinesí yá Fulɛnsí"
+ },
+ "PR": {
+ "name": "Pwɛrəto Ríko"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "RE": {
+ "name": "Reuniɔ́ŋ"
+ },
+ "RO": {
+ "name": "Rumaní"
+ },
+ "RU": {
+ "name": "Rúsian"
+ },
+ "RW": {
+ "name": "Ruwandá"
+ },
+ "SV": {
+ "name": "Saləvadór"
+ },
+ "WS": {
+ "name": "Samoá"
+ },
+ "ST": {
+ "name": "Saó Tomé ai Pəlinəsípe"
+ },
+ "SN": {
+ "name": "Senegál"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SK": {
+ "name": "Səlovakí"
+ },
+ "SI": {
+ "name": "Səlovénia"
+ },
+ "LK": {
+ "name": "Səri Laŋká"
+ },
+ "SC": {
+ "name": "Sɛsɛ́l"
+ },
+ "SL": {
+ "name": "Sierá-leónə"
+ },
+ "SG": {
+ "name": "Singapúr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sipəlús"
+ },
+ "SY": {
+ "name": "Sirí"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudáŋ"
+ },
+ "CH": {
+ "name": "Suís"
+ },
+ "SR": {
+ "name": "Surinám"
+ },
+ "SE": {
+ "name": "Suwɛ́d"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilándə"
+ },
+ "TJ": {
+ "name": "Tadzikisətáŋ"
+ },
+ "TH": {
+ "name": "Tailán"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Taŋəzaní"
+ },
+ "TT": {
+ "name": "Təlinité-ai-Tobágo"
+ },
+ "TL": {
+ "name": "Timôr"
+ },
+ "TG": {
+ "name": "Togó"
+ },
+ "TK": {
+ "name": "Tokeló"
+ },
+ "TO": {
+ "name": "Tɔngá"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsád"
+ },
+ "CN": {
+ "name": "Tsáina"
+ },
+ "CL": {
+ "name": "Tsilí"
+ },
+ "TN": {
+ "name": "Tunisí"
+ },
+ "TM": {
+ "name": "Turəkəmənisətáŋ"
+ },
+ "TR": {
+ "name": "Turəkí"
+ },
+ "TV": {
+ "name": "Tuvalú"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ugandá"
+ },
+ "UA": {
+ "name": "Ukərɛ́n"
+ },
+ "UY": {
+ "name": "Urugué"
+ },
+ "UZ": {
+ "name": "Uzubekisətán"
+ },
+ "VU": {
+ "name": "Vanuátu"
+ },
+ "VE": {
+ "name": "Venezuéla"
+ },
+ "VN": {
+ "name": "Viɛdənám"
+ },
+ "WF": {
+ "name": "Walís-ai-Futúna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemɛ́n"
+ },
+ "GI": {
+ "name": "Yiləbalatár"
+ },
+ "ZM": {
+ "name": "Zambí"
+ },
+ "ZW": {
+ "name": "Zimbabwé"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fa-AF.json b/library/intl/resources/country/fa-AF.json
new file mode 100644
index 000000000..f85b42df4
--- /dev/null
+++ b/library/intl/resources/country/fa-AF.json
@@ -0,0 +1,761 @@
+{
+ "AW": {
+ "name": "آروبا"
+ },
+ "AU": {
+ "name": "آسترالیا"
+ },
+ "DE": {
+ "name": "آلمان"
+ },
+ "AI": {
+ "name": "آنگویلا"
+ },
+ "IE": {
+ "name": "آیرلند"
+ },
+ "IS": {
+ "name": "آیسلند"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "AR": {
+ "name": "ارجنتاین"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AM": {
+ "name": "ارمنستان"
+ },
+ "ER": {
+ "name": "اریتریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "EE": {
+ "name": "استونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "SJ": {
+ "name": "اسوالبارد و جان‌ماین"
+ },
+ "ZA": {
+ "name": "افریقای جنوبی"
+ },
+ "CF": {
+ "name": "افریقای مرکزی"
+ },
+ "AF": {
+ "name": "افغانستان"
+ },
+ "UA": {
+ "name": "اکراین"
+ },
+ "EC": {
+ "name": "اکوادور"
+ },
+ "AL": {
+ "name": "البانیا"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "SV": {
+ "name": "السلوادور"
+ },
+ "AE": {
+ "name": "امارات متحدهٔ عربی"
+ },
+ "AG": {
+ "name": "انتیگوا و باربودا"
+ },
+ "AD": {
+ "name": "اندورا"
+ },
+ "ID": {
+ "name": "اندونیزیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "UG": {
+ "name": "اوگاندا"
+ },
+ "US": {
+ "name": "ایالات متحدهٔ امریکا"
+ },
+ "IT": {
+ "name": "ایتالیا"
+ },
+ "ET": {
+ "name": "ایتوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیل"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "برونی"
+ },
+ "GB": {
+ "name": "بریتانیا"
+ },
+ "BE": {
+ "name": "بلجیم"
+ },
+ "BG": {
+ "name": "بلغاریا"
+ },
+ "BZ": {
+ "name": "بلیز"
+ },
+ "BD": {
+ "name": "بنگله‌دیش"
+ },
+ "BJ": {
+ "name": "بنین"
+ },
+ "BS": {
+ "name": "بهاماس"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BF": {
+ "name": "بورکینافاسو"
+ },
+ "BI": {
+ "name": "بوروندی"
+ },
+ "BA": {
+ "name": "بوسنیا و هرزه‌گوینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "PG": {
+ "name": "پاپوا نیو گینیا"
+ },
+ "PY": {
+ "name": "پاراگوای"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PW": {
+ "name": "پالائو"
+ },
+ "PA": {
+ "name": "پانامه"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PF": {
+ "name": "پلی‌نزی فرانسه"
+ },
+ "PR": {
+ "name": "پورتوریکو"
+ },
+ "PL": {
+ "name": "پولند"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TZ": {
+ "name": "تانزانیا"
+ },
+ "TH": {
+ "name": "تایلند"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TM": {
+ "name": "ترکمنستان"
+ },
+ "TR": {
+ "name": "ترکیه"
+ },
+ "TA": {
+ "name": "تریستان دا کونا"
+ },
+ "TT": {
+ "name": "ترینیداد و توباگو"
+ },
+ "TK": {
+ "name": "توکلائو"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TV": {
+ "name": "تووالو"
+ },
+ "TL": {
+ "name": "تیمور شرقی"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "JM": {
+ "name": "جامائیکا"
+ },
+ "GI": {
+ "name": "جبل‌الطارق"
+ },
+ "JE": {
+ "name": "جرزی"
+ },
+ "AC": {
+ "name": "جزایر آسنسیون"
+ },
+ "AX": {
+ "name": "جزایر اُلند"
+ },
+ "PN": {
+ "name": "جزایر پیت‌کرن"
+ },
+ "TC": {
+ "name": "جزایر تورکس و کایکوس"
+ },
+ "GS": {
+ "name": "جزایر جورجیای جنوبی و ساندویچ جنوبی"
+ },
+ "UM": {
+ "name": "جزایر دورافتادهٔ ایالات متحده"
+ },
+ "SB": {
+ "name": "جزایر سلومون"
+ },
+ "FO": {
+ "name": "جزایر فارو"
+ },
+ "FK": {
+ "name": "جزایر فالکلند"
+ },
+ "IC": {
+ "name": "جزایر قناری"
+ },
+ "BQ": {
+ "name": "جزایر کارائیب هلند"
+ },
+ "CK": {
+ "name": "جزایر کوک"
+ },
+ "CC": {
+ "name": "جزایر کوکوس (کیلینگ)"
+ },
+ "KY": {
+ "name": "جزایر کِیمن"
+ },
+ "MH": {
+ "name": "جزایر مارشال"
+ },
+ "MP": {
+ "name": "جزایر ماریانای شمالی"
+ },
+ "VI": {
+ "name": "جزایر ویرجین ایالات متحده"
+ },
+ "VG": {
+ "name": "جزایر ویرجین بریتانیا"
+ },
+ "CX": {
+ "name": "جزیرهٔ کریسمس"
+ },
+ "IM": {
+ "name": "جزیرهٔ من"
+ },
+ "NF": {
+ "name": "جزیره نورفک"
+ },
+ "AZ": {
+ "name": "جمهوری آذربایجان"
+ },
+ "CZ": {
+ "name": "جمهوری چک"
+ },
+ "CD": {
+ "name": "جمهوری دموکراتیک کانگو"
+ },
+ "DO": {
+ "name": "جمهوری دومینیکن"
+ },
+ "AQ": {
+ "name": "جنوبگان"
+ },
+ "DJ": {
+ "name": "جیبوتی"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "دنمارک"
+ },
+ "DM": {
+ "name": "دومینیکا"
+ },
+ "DG": {
+ "name": "دیه‌گو گارسیا"
+ },
+ "RW": {
+ "name": "روآندا"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "BY": {
+ "name": "روسیهٔ سفید"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "رئونیون"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "NZ": {
+ "name": "زیلاند جدید"
+ },
+ "ZW": {
+ "name": "زیمبابوی"
+ },
+ "CI": {
+ "name": "ساحل عاج"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "AS": {
+ "name": "ساموآی آمریکا"
+ },
+ "ST": {
+ "name": "سائو تومه و پرینسیپ"
+ },
+ "EA": {
+ "name": "سبته و ملیله"
+ },
+ "PS": {
+ "name": "سرزمین‌های فلسطینی"
+ },
+ "LK": {
+ "name": "سریلانکا"
+ },
+ "SK": {
+ "name": "سلواکیا"
+ },
+ "SI": {
+ "name": "سلونیا"
+ },
+ "BL": {
+ "name": "سن بارتلمی"
+ },
+ "PM": {
+ "name": "سن پیر و میکلن"
+ },
+ "SM": {
+ "name": "سن مارینو"
+ },
+ "KN": {
+ "name": "سنت کیتس و نیویس"
+ },
+ "LC": {
+ "name": "سنت لوسیا"
+ },
+ "SX": {
+ "name": "سنت مارتن"
+ },
+ "MF": {
+ "name": "سنت مارتین"
+ },
+ "SH": {
+ "name": "سنت هلن"
+ },
+ "VC": {
+ "name": "سنت وینسنت و گرینادین"
+ },
+ "SZ": {
+ "name": "سوازیلند"
+ },
+ "SD": {
+ "name": "سودان"
+ },
+ "SS": {
+ "name": "سودان جنوبی"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SO": {
+ "name": "سومالیه"
+ },
+ "SE": {
+ "name": "سویدن"
+ },
+ "CH": {
+ "name": "سویس"
+ },
+ "SL": {
+ "name": "سیرالیون"
+ },
+ "SC": {
+ "name": "سیشل"
+ },
+ "SG": {
+ "name": "سینگاپور"
+ },
+ "SN": {
+ "name": "سینیگال"
+ },
+ "EH": {
+ "name": "صحرای غربی"
+ },
+ "RS": {
+ "name": "صربستان"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "SA": {
+ "name": "عربستان سعودی"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GH": {
+ "name": "غنا"
+ },
+ "FR": {
+ "name": "فرانسه"
+ },
+ "FI": {
+ "name": "فنلند"
+ },
+ "FJ": {
+ "name": "فیجی"
+ },
+ "PH": {
+ "name": "فیلیپین"
+ },
+ "CY": {
+ "name": "قبرس"
+ },
+ "KG": {
+ "name": "قرغزستان"
+ },
+ "KZ": {
+ "name": "قزاقستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "IO": {
+ "name": "قلمرو بریتانیا در اقیانوس هند"
+ },
+ "TF": {
+ "name": "قلمروهای جنوبی فرانسه"
+ },
+ "CR": {
+ "name": "کاستریکا"
+ },
+ "NC": {
+ "name": "کالدونیای جدید"
+ },
+ "CM": {
+ "name": "کامرون"
+ },
+ "CA": {
+ "name": "کانادا"
+ },
+ "CG": {
+ "name": "کانگو"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KH": {
+ "name": "کمپوچیا"
+ },
+ "CW": {
+ "name": "کوراسائو"
+ },
+ "KR": {
+ "name": "کوریای جنوبی"
+ },
+ "KP": {
+ "name": "کوریای شمالی"
+ },
+ "XK": {
+ "name": "کوزوو"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کومور"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ‌ورد"
+ },
+ "KI": {
+ "name": "کیریباتی"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "GA": {
+ "name": "گابن"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GE": {
+ "name": "گرجستان"
+ },
+ "GG": {
+ "name": "گرنزی"
+ },
+ "GD": {
+ "name": "گرینادا"
+ },
+ "GL": {
+ "name": "گرینلند"
+ },
+ "GT": {
+ "name": "گواتیمالا"
+ },
+ "GP": {
+ "name": "گوادلوپ"
+ },
+ "GU": {
+ "name": "گوام"
+ },
+ "GF": {
+ "name": "گویان فرانسه"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GN": {
+ "name": "گینیا"
+ },
+ "GQ": {
+ "name": "گینیا استوایی"
+ },
+ "GW": {
+ "name": "گینیا بیسائو"
+ },
+ "LV": {
+ "name": "لاتویا"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتوانیا"
+ },
+ "LU": {
+ "name": "لوکزامبورگ"
+ },
+ "LR": {
+ "name": "لیبریا"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LI": {
+ "name": "لیختن‌اشتاین"
+ },
+ "LS": {
+ "name": "لیسوتو"
+ },
+ "MG": {
+ "name": "مادغاسکر"
+ },
+ "MQ": {
+ "name": "مارتینیک"
+ },
+ "MO": {
+ "name": "ماکائو، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "MW": {
+ "name": "مالاوی"
+ },
+ "MT": {
+ "name": "مالتا"
+ },
+ "MV": {
+ "name": "مالدیو"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "MY": {
+ "name": "مالیزیا"
+ },
+ "YT": {
+ "name": "مایوت"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MK": {
+ "name": "مقدونیه"
+ },
+ "MX": {
+ "name": "مکسیکو"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریتانیا"
+ },
+ "MU": {
+ "name": "موریس"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MD": {
+ "name": "مولداوی"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونت‌سرات"
+ },
+ "ME": {
+ "name": "مونته‌نگرو"
+ },
+ "MM": {
+ "name": "میانمار (برمه)"
+ },
+ "FM": {
+ "name": "میکرونزیا"
+ },
+ "NO": {
+ "name": "ناروی"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NR": {
+ "name": "نائورو"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NE": {
+ "name": "نیجر"
+ },
+ "NG": {
+ "name": "نیجریا"
+ },
+ "NI": {
+ "name": "نیکاراگوا"
+ },
+ "NU": {
+ "name": "نیوئه"
+ },
+ "NL": {
+ "name": "هالند"
+ },
+ "HN": {
+ "name": "هاندوراس"
+ },
+ "HT": {
+ "name": "هایتی"
+ },
+ "ES": {
+ "name": "هسپانیه"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "HK": {
+ "name": "هنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "VA": {
+ "name": "واتیکان"
+ },
+ "WF": {
+ "name": "والیس و فوتونا"
+ },
+ "VU": {
+ "name": "وانواتو"
+ },
+ "VE": {
+ "name": "ونزویلا"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوای"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fa.json b/library/intl/resources/country/fa.json
new file mode 100644
index 000000000..e79fafbd8
--- /dev/null
+++ b/library/intl/resources/country/fa.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "آرژانتین"
+ },
+ "AW": {
+ "name": "آروبا"
+ },
+ "AL": {
+ "name": "آلبانی"
+ },
+ "DE": {
+ "name": "آلمان"
+ },
+ "AG": {
+ "name": "آنتیگوا و باربودا"
+ },
+ "AD": {
+ "name": "آندورا"
+ },
+ "AO": {
+ "name": "آنگولا"
+ },
+ "AI": {
+ "name": "آنگویلا"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "ET": {
+ "name": "اتیوپی"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AM": {
+ "name": "ارمنستان"
+ },
+ "UY": {
+ "name": "اروگوئه"
+ },
+ "ER": {
+ "name": "اریتره"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "ES": {
+ "name": "اسپانیا"
+ },
+ "AU": {
+ "name": "استرالیا"
+ },
+ "EE": {
+ "name": "استونی"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "SK": {
+ "name": "اسلواکی"
+ },
+ "SI": {
+ "name": "اسلوونی"
+ },
+ "SJ": {
+ "name": "اسوالبارد و جان‌ماین"
+ },
+ "ZA": {
+ "name": "افریقای جنوبی"
+ },
+ "AF": {
+ "name": "افغانستان"
+ },
+ "EC": {
+ "name": "اکوادور"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "SV": {
+ "name": "السالوادور"
+ },
+ "AE": {
+ "name": "امارات متحدهٔ عربی"
+ },
+ "ID": {
+ "name": "اندونزی"
+ },
+ "UA": {
+ "name": "اوکراین"
+ },
+ "UG": {
+ "name": "اوگاندا"
+ },
+ "US": {
+ "name": "ایالات متحدهٔ امریکا"
+ },
+ "IT": {
+ "name": "ایتالیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "IE": {
+ "name": "ایرلند"
+ },
+ "IS": {
+ "name": "ایسلند"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BS": {
+ "name": "باهاما"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برزیل"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "GB": {
+ "name": "بریتانیا"
+ },
+ "BY": {
+ "name": "بلاروس"
+ },
+ "BE": {
+ "name": "بلژیک"
+ },
+ "BG": {
+ "name": "بلغارستان"
+ },
+ "BZ": {
+ "name": "بلیز"
+ },
+ "BD": {
+ "name": "بنگلادش"
+ },
+ "BJ": {
+ "name": "بنین"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BF": {
+ "name": "بورکینافاسو"
+ },
+ "BI": {
+ "name": "بوروندی"
+ },
+ "BA": {
+ "name": "بوسنی و هرزگوین"
+ },
+ "BO": {
+ "name": "بولیوی"
+ },
+ "PG": {
+ "name": "پاپوا گینهٔ نو"
+ },
+ "PY": {
+ "name": "پاراگوئه"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PW": {
+ "name": "پالائو"
+ },
+ "PA": {
+ "name": "پاناما"
+ },
+ "PT": {
+ "name": "پرتغال"
+ },
+ "PE": {
+ "name": "پرو"
+ },
+ "PF": {
+ "name": "پلی‌نزی فرانسه"
+ },
+ "PR": {
+ "name": "پورتوریکو"
+ },
+ "TJ": {
+ "name": "تاجیکستان"
+ },
+ "TZ": {
+ "name": "تانزانیا"
+ },
+ "TH": {
+ "name": "تایلند"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TM": {
+ "name": "ترکمنستان"
+ },
+ "TR": {
+ "name": "ترکیه"
+ },
+ "TA": {
+ "name": "تریستان دا کونا"
+ },
+ "TT": {
+ "name": "ترینیداد و توباگو"
+ },
+ "TK": {
+ "name": "توکلائو"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TV": {
+ "name": "تووالو"
+ },
+ "TL": {
+ "name": "تیمور شرقی"
+ },
+ "JM": {
+ "name": "جامائیکا"
+ },
+ "GI": {
+ "name": "جبل‌الطارق"
+ },
+ "JE": {
+ "name": "جرزی"
+ },
+ "AC": {
+ "name": "جزایر آسنسیون"
+ },
+ "AX": {
+ "name": "جزایر اُلند"
+ },
+ "PN": {
+ "name": "جزایر پیت‌کرن"
+ },
+ "TC": {
+ "name": "جزایر تورکس و کایکوس"
+ },
+ "GS": {
+ "name": "جزایر جورجیای جنوبی و ساندویچ جنوبی"
+ },
+ "UM": {
+ "name": "جزایر دورافتادهٔ ایالات متحده"
+ },
+ "SB": {
+ "name": "جزایر سلیمان"
+ },
+ "FO": {
+ "name": "جزایر فارو"
+ },
+ "FK": {
+ "name": "جزایر فالکلند"
+ },
+ "IC": {
+ "name": "جزایر قناری"
+ },
+ "BQ": {
+ "name": "جزایر کارائیب هلند"
+ },
+ "CK": {
+ "name": "جزایر کوک"
+ },
+ "CC": {
+ "name": "جزایر کوکوس (کیلینگ)"
+ },
+ "KY": {
+ "name": "جزایر کِیمن"
+ },
+ "MH": {
+ "name": "جزایر مارشال"
+ },
+ "MP": {
+ "name": "جزایر ماریانای شمالی"
+ },
+ "VI": {
+ "name": "جزایر ویرجین ایالات متحده"
+ },
+ "VG": {
+ "name": "جزایر ویرجین بریتانیا"
+ },
+ "CX": {
+ "name": "جزیرهٔ کریسمس"
+ },
+ "IM": {
+ "name": "جزیرهٔ من"
+ },
+ "NF": {
+ "name": "جزیره نورفک"
+ },
+ "AZ": {
+ "name": "جمهوری آذربایجان"
+ },
+ "CF": {
+ "name": "جمهوری افریقای مرکزی"
+ },
+ "CZ": {
+ "name": "جمهوری چک"
+ },
+ "DO": {
+ "name": "جمهوری دومینیکن"
+ },
+ "AQ": {
+ "name": "جنوبگان"
+ },
+ "DJ": {
+ "name": "جیبوتی"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "دانمارک"
+ },
+ "DM": {
+ "name": "دومینیکا"
+ },
+ "DG": {
+ "name": "دیه‌گو گارسیا"
+ },
+ "RE": {
+ "name": "رئونیون"
+ },
+ "RW": {
+ "name": "رواندا"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "RO": {
+ "name": "رومانی"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "NZ": {
+ "name": "زلاند نو"
+ },
+ "ZW": {
+ "name": "زیمبابوه"
+ },
+ "JP": {
+ "name": "ژاپن"
+ },
+ "ST": {
+ "name": "سائوتومه و پرینسیپ"
+ },
+ "CI": {
+ "name": "ساحل عاج"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "AS": {
+ "name": "ساموآی آمریکا"
+ },
+ "EA": {
+ "name": "سبته و ملیله"
+ },
+ "PS": {
+ "name": "سرزمین‌های فلسطینی"
+ },
+ "LK": {
+ "name": "سری‌لانکا"
+ },
+ "BL": {
+ "name": "سن بارتلمی"
+ },
+ "PM": {
+ "name": "سن پیر و میکلن"
+ },
+ "SM": {
+ "name": "سن مارینو"
+ },
+ "KN": {
+ "name": "سنت کیتس و نویس"
+ },
+ "LC": {
+ "name": "سنت لوسیا"
+ },
+ "SX": {
+ "name": "سنت مارتن"
+ },
+ "MF": {
+ "name": "سنت مارتین"
+ },
+ "VC": {
+ "name": "سنت وینسنت و گرنادین‌ها"
+ },
+ "SH": {
+ "name": "سنت هلن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SN": {
+ "name": "سنگال"
+ },
+ "SZ": {
+ "name": "سوازیلند"
+ },
+ "SE": {
+ "name": "سوئد"
+ },
+ "CH": {
+ "name": "سوئیس"
+ },
+ "SD": {
+ "name": "سودان"
+ },
+ "SS": {
+ "name": "سودان جنوبی"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SO": {
+ "name": "سومالی"
+ },
+ "SL": {
+ "name": "سیرالئون"
+ },
+ "SC": {
+ "name": "سیشل"
+ },
+ "CL": {
+ "name": "شیلی"
+ },
+ "EH": {
+ "name": "صحرای غربی"
+ },
+ "RS": {
+ "name": "صربستان"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "SA": {
+ "name": "عربستان سعودی"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GH": {
+ "name": "غنا"
+ },
+ "FR": {
+ "name": "فرانسه"
+ },
+ "FI": {
+ "name": "فنلاند"
+ },
+ "FJ": {
+ "name": "فیجی"
+ },
+ "PH": {
+ "name": "فیلیپین"
+ },
+ "CY": {
+ "name": "قبرس"
+ },
+ "KG": {
+ "name": "قرقیزستان"
+ },
+ "KZ": {
+ "name": "قزاقستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "IO": {
+ "name": "قلمرو بریتانیا در اقیانوس هند"
+ },
+ "TF": {
+ "name": "قلمروهای جنوبی فرانسه"
+ },
+ "CR": {
+ "name": "کاستاریکا"
+ },
+ "NC": {
+ "name": "کالدونیای جدید"
+ },
+ "KH": {
+ "name": "کامبوج"
+ },
+ "CM": {
+ "name": "کامرون"
+ },
+ "CA": {
+ "name": "کانادا"
+ },
+ "HR": {
+ "name": "کرواسی"
+ },
+ "KR": {
+ "name": "کرهٔ جنوبی"
+ },
+ "KP": {
+ "name": "کرهٔ شمالی"
+ },
+ "CO": {
+ "name": "کلمبیا"
+ },
+ "CG": {
+ "name": "کنگو - برازویل"
+ },
+ "CD": {
+ "name": "کنگو - کینشاسا"
+ },
+ "KE": {
+ "name": "کنیا"
+ },
+ "CU": {
+ "name": "کوبا"
+ },
+ "CW": {
+ "name": "کوراسائو"
+ },
+ "XK": {
+ "name": "کوزوو"
+ },
+ "KM": {
+ "name": "کومور"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ‌ورد"
+ },
+ "KI": {
+ "name": "کیریباتی"
+ },
+ "GA": {
+ "name": "گابن"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GE": {
+ "name": "گرجستان"
+ },
+ "GD": {
+ "name": "گرنادا"
+ },
+ "GG": {
+ "name": "گرنزی"
+ },
+ "GL": {
+ "name": "گرینلند"
+ },
+ "GT": {
+ "name": "گواتمالا"
+ },
+ "GP": {
+ "name": "گوادلوپ"
+ },
+ "GU": {
+ "name": "گوام"
+ },
+ "GY": {
+ "name": "گویان"
+ },
+ "GF": {
+ "name": "گویان فرانسه"
+ },
+ "GN": {
+ "name": "گینه"
+ },
+ "GQ": {
+ "name": "گینهٔ استوایی"
+ },
+ "GW": {
+ "name": "گینهٔ بیسائو"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LV": {
+ "name": "لتونی"
+ },
+ "LS": {
+ "name": "لسوتو"
+ },
+ "LU": {
+ "name": "لوکزامبورگ"
+ },
+ "PL": {
+ "name": "لهستان"
+ },
+ "LR": {
+ "name": "لیبریا"
+ },
+ "LY": {
+ "name": "لیبی"
+ },
+ "LT": {
+ "name": "لیتوانی"
+ },
+ "LI": {
+ "name": "لیختن‌اشتاین"
+ },
+ "MG": {
+ "name": "ماداگاسکار"
+ },
+ "MQ": {
+ "name": "مارتینیک"
+ },
+ "MO": {
+ "name": "ماکائو، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "MW": {
+ "name": "مالاوی"
+ },
+ "MT": {
+ "name": "مالت"
+ },
+ "MV": {
+ "name": "مالدیو"
+ },
+ "MY": {
+ "name": "مالزی"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "YT": {
+ "name": "مایوت"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MN": {
+ "name": "مغولستان"
+ },
+ "MK": {
+ "name": "مقدونیه"
+ },
+ "MX": {
+ "name": "مکزیک"
+ },
+ "MR": {
+ "name": "موریتانی"
+ },
+ "MU": {
+ "name": "موریس"
+ },
+ "MZ": {
+ "name": "موزامبیک"
+ },
+ "MD": {
+ "name": "مولداوی"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونت‌سرات"
+ },
+ "ME": {
+ "name": "مونته‌نگرو"
+ },
+ "MM": {
+ "name": "میانمار (برمه)"
+ },
+ "FM": {
+ "name": "میکرونزی"
+ },
+ "NR": {
+ "name": "نائورو"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NP": {
+ "name": "نپال"
+ },
+ "NO": {
+ "name": "نروژ"
+ },
+ "NE": {
+ "name": "نیجر"
+ },
+ "NG": {
+ "name": "نیجریه"
+ },
+ "NI": {
+ "name": "نیکاراگوئه"
+ },
+ "NU": {
+ "name": "نیوئه"
+ },
+ "VA": {
+ "name": "واتیکان"
+ },
+ "WF": {
+ "name": "والیس و فوتونا"
+ },
+ "VU": {
+ "name": "وانواتو"
+ },
+ "VE": {
+ "name": "ونزوئلا"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "HT": {
+ "name": "هائیتی"
+ },
+ "NL": {
+ "name": "هلند"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "HN": {
+ "name": "هندوراس"
+ },
+ "HK": {
+ "name": "هنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ff.json b/library/intl/resources/country/ff.json
new file mode 100644
index 000000000..28bb49c37
--- /dev/null
+++ b/library/intl/resources/country/ff.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistaan"
+ },
+ "ZA": {
+ "name": "Afrik bŋ Worgo"
+ },
+ "AZ": {
+ "name": "Ajerbayjaan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DZ": {
+ "name": "Alaseri"
+ },
+ "AL": {
+ "name": "Albanii"
+ },
+ "DE": {
+ "name": "Almaañ"
+ },
+ "AD": {
+ "name": "Anndoora"
+ },
+ "AI": {
+ "name": "Anngiyaa"
+ },
+ "AO": {
+ "name": "Anngolaa"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguwaa e Barbudaa"
+ },
+ "SA": {
+ "name": "Arabii Sawdit"
+ },
+ "AR": {
+ "name": "Arjantiin"
+ },
+ "AM": {
+ "name": "Armenii"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "BS": {
+ "name": "Bahamaas"
+ },
+ "BH": {
+ "name": "Bahreyn"
+ },
+ "BD": {
+ "name": "Banglaadees"
+ },
+ "BB": {
+ "name": "Barbadoos"
+ },
+ "BY": {
+ "name": "Belaruus"
+ },
+ "BZ": {
+ "name": "Beliise"
+ },
+ "BE": {
+ "name": "Beljik"
+ },
+ "BJ": {
+ "name": "Benee"
+ },
+ "BR": {
+ "name": "Beresiil"
+ },
+ "BM": {
+ "name": "Bermudaa"
+ },
+ "BO": {
+ "name": "Boliwii"
+ },
+ "BA": {
+ "name": "Bosnii Hersegowiin"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BG": {
+ "name": "Bulgarii"
+ },
+ "BF": {
+ "name": "Burkibaa Faaso"
+ },
+ "BN": {
+ "name": "Burnaay"
+ },
+ "BI": {
+ "name": "Burunndi"
+ },
+ "BT": {
+ "name": "Butaan"
+ },
+ "TD": {
+ "name": "Caad"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cilii"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "VA": {
+ "name": "Dowla Waticaan"
+ },
+ "US": {
+ "name": "Dowlaaji Dentuɗi Amerik"
+ },
+ "FK": {
+ "name": "Duuɗe Falkland"
+ },
+ "CV": {
+ "name": "Duuɗe Kap Weer"
+ },
+ "KY": {
+ "name": "Duuɗe Kaymaa"
+ },
+ "VI": {
+ "name": "Duuɗe Kecce Amerik"
+ },
+ "VG": {
+ "name": "duuɗe kecce britanii"
+ },
+ "CK": {
+ "name": "Duuɗe Kuuk"
+ },
+ "MP": {
+ "name": "Duuɗe Mariyaana Rewo"
+ },
+ "MH": {
+ "name": "Duuɗe Marsaal"
+ },
+ "NF": {
+ "name": "Duuɗe Norfolk"
+ },
+ "SB": {
+ "name": "Duuɗe Solomon"
+ },
+ "TC": {
+ "name": "Duuɗe Turke e Keikoos"
+ },
+ "ET": {
+ "name": "Ecoppi"
+ },
+ "EG": {
+ "name": "Ejipt"
+ },
+ "EC": {
+ "name": "Ekuwatoor"
+ },
+ "SV": {
+ "name": "El Salwador"
+ },
+ "AE": {
+ "name": "Emiraat Araab Denntuɗe"
+ },
+ "IN": {
+ "name": "Enndo"
+ },
+ "ID": {
+ "name": "Enndonesii"
+ },
+ "ER": {
+ "name": "Eriteree"
+ },
+ "ES": {
+ "name": "Espaañ"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FR": {
+ "name": "Farayse"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Fenland"
+ },
+ "FJ": {
+ "name": "Fijji"
+ },
+ "PH": {
+ "name": "Filipiin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboo"
+ },
+ "GM": {
+ "name": "Gammbi"
+ },
+ "GH": {
+ "name": "Ganaa"
+ },
+ "GD": {
+ "name": "Garnaad"
+ },
+ "GR": {
+ "name": "Gerees"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisaawo"
+ },
+ "GQ": {
+ "name": "Ginee Ekuwaatoriyaal"
+ },
+ "GY": {
+ "name": "Giyaan"
+ },
+ "GF": {
+ "name": "Giyaan Farayse"
+ },
+ "GL": {
+ "name": "Gorwendland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GU": {
+ "name": "Guwam"
+ },
+ "GP": {
+ "name": "Gwaadalup"
+ },
+ "GT": {
+ "name": "Gwaatemalaa"
+ },
+ "HT": {
+ "name": "Haytii"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IE": {
+ "name": "Irlannda"
+ },
+ "IS": {
+ "name": "Islannda"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israa’iila"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamayka"
+ },
+ "GE": {
+ "name": "Jeorgii"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibraltaar"
+ },
+ "DJ": {
+ "name": "Jibutii"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "KH": {
+ "name": "Kambodso"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanadaa"
+ },
+ "KZ": {
+ "name": "Kasakstaan"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "IO": {
+ "name": "Keeriindi britaani to maayo enndo"
+ },
+ "KE": {
+ "name": "Keñaa"
+ },
+ "KG": {
+ "name": "Kirgistaan"
+ },
+ "KI": {
+ "name": "Kiribari"
+ },
+ "CI": {
+ "name": "Kodduwaar"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Konngo"
+ },
+ "KP": {
+ "name": "Koree Rewo"
+ },
+ "KR": {
+ "name": "Koree Worgo"
+ },
+ "HR": {
+ "name": "Korwasii"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rikaa"
+ },
+ "CU": {
+ "name": "Kubaa"
+ },
+ "KW": {
+ "name": "Kuweyti"
+ },
+ "GB": {
+ "name": "Laamateeri Rentundi"
+ },
+ "LA": {
+ "name": "Lawoos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonii"
+ },
+ "LB": {
+ "name": "Libaa"
+ },
+ "LR": {
+ "name": "Liberiyaa"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Liksembuur"
+ },
+ "LI": {
+ "name": "Lincenstayn"
+ },
+ "LT": {
+ "name": "Lituaanii"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskaar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiiwe"
+ },
+ "MY": {
+ "name": "Malesii"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MA": {
+ "name": "Maruk"
+ },
+ "YT": {
+ "name": "Mayoot"
+ },
+ "MK": {
+ "name": "Meceduwaan"
+ },
+ "MX": {
+ "name": "Meksik"
+ },
+ "FM": {
+ "name": "Mikoronesii"
+ },
+ "MM": {
+ "name": "Miyamaar"
+ },
+ "MD": {
+ "name": "Moldawii"
+ },
+ "MC": {
+ "name": "Monaakoo"
+ },
+ "MN": {
+ "name": "Monngolii"
+ },
+ "MS": {
+ "name": "Monseraat"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Moriis"
+ },
+ "MZ": {
+ "name": "Mosammbik"
+ },
+ "MR": {
+ "name": "Muritani"
+ },
+ "NA": {
+ "name": "Namibii"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "CZ": {
+ "name": "Ndenndaandi Cek"
+ },
+ "CD": {
+ "name": "Ndenndaandi Demokaraasiire Konngo"
+ },
+ "CF": {
+ "name": "Ndenndaandi Santarafrik"
+ },
+ "DO": {
+ "name": "Ndenndanndi Dominika"
+ },
+ "NL": {
+ "name": "Nederlannda"
+ },
+ "NP": {
+ "name": "Nepaal"
+ },
+ "NE": {
+ "name": "Nijeer"
+ },
+ "NG": {
+ "name": "Nijeriyaa"
+ },
+ "NI": {
+ "name": "Nikaraguwaa"
+ },
+ "NU": {
+ "name": "Niuwe"
+ },
+ "NO": {
+ "name": "Norwees"
+ },
+ "NC": {
+ "name": "Nuwel Kaledonii"
+ },
+ "NZ": {
+ "name": "Nuwel Selannda"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "HN": {
+ "name": "Onnduraas"
+ },
+ "HU": {
+ "name": "Onngiri"
+ },
+ "AU": {
+ "name": "Ostaraalii"
+ },
+ "AT": {
+ "name": "Otiriis"
+ },
+ "PK": {
+ "name": "Pakistaan"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palestiin Sisjordani e Gaasaa"
+ },
+ "PA": {
+ "name": "Panamaa"
+ },
+ "PG": {
+ "name": "Papuwaa Nuwel Gine"
+ },
+ "PY": {
+ "name": "Paraguwaay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PF": {
+ "name": "Polinesii Farayse"
+ },
+ "PL": {
+ "name": "Poloñ"
+ },
+ "PR": {
+ "name": "Porto Rikoo"
+ },
+ "PT": {
+ "name": "Purtugaal"
+ },
+ "RE": {
+ "name": "Rewiñoo"
+ },
+ "RU": {
+ "name": "Riisii"
+ },
+ "RO": {
+ "name": "Rumanii"
+ },
+ "RW": {
+ "name": "Ruwanndaa"
+ },
+ "ZM": {
+ "name": "Sammbi"
+ },
+ "AS": {
+ "name": "Samowa Amerik"
+ },
+ "WS": {
+ "name": "Samowaa"
+ },
+ "JP": {
+ "name": "Sapoo"
+ },
+ "ST": {
+ "name": "Sawo Tome e Perensipe"
+ },
+ "SM": {
+ "name": "See Maree"
+ },
+ "PM": {
+ "name": "See Piyeer e Mikeloo"
+ },
+ "VC": {
+ "name": "See Weesaa e Garnadiin"
+ },
+ "SN": {
+ "name": "Senegaal"
+ },
+ "SH": {
+ "name": "Sent Helen"
+ },
+ "KN": {
+ "name": "Sent Kits e Newis"
+ },
+ "LC": {
+ "name": "Sent Lusiyaa"
+ },
+ "SL": {
+ "name": "Seraa liyon"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seysel"
+ },
+ "CN": {
+ "name": "Siin"
+ },
+ "CY": {
+ "name": "Siipar"
+ },
+ "ZW": {
+ "name": "Simbaabuwe"
+ },
+ "SG": {
+ "name": "Sinngapuur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SY": {
+ "name": "Sirii"
+ },
+ "SK": {
+ "name": "Slowakii"
+ },
+ "SI": {
+ "name": "Slowenii"
+ },
+ "SO": {
+ "name": "Somalii"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaan"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SE": {
+ "name": "Suweed"
+ },
+ "CH": {
+ "name": "Suwiis"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaasilannda"
+ },
+ "TJ": {
+ "name": "Tajikistaan"
+ },
+ "TZ": {
+ "name": "Tansanii"
+ },
+ "TH": {
+ "name": "Taylannda"
+ },
+ "TW": {
+ "name": "Taywaan"
+ },
+ "TL": {
+ "name": "Timoor Fuɗnaange"
+ },
+ "TT": {
+ "name": "Tirnidaad e Tobaago"
+ },
+ "TG": {
+ "name": "Togoo"
+ },
+ "TK": {
+ "name": "Tokelaaw"
+ },
+ "TO": {
+ "name": "Tonngaa"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisii"
+ },
+ "TR": {
+ "name": "Turkii"
+ },
+ "TM": {
+ "name": "Turkmenistaan"
+ },
+ "TV": {
+ "name": "Tuwaluu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UA": {
+ "name": "Ukereen"
+ },
+ "UG": {
+ "name": "Unganndaa"
+ },
+ "UY": {
+ "name": "Uruguwaay"
+ },
+ "UZ": {
+ "name": "Usbekistaan"
+ },
+ "WF": {
+ "name": "Walis e Futuna"
+ },
+ "VU": {
+ "name": "Wanuwaatuu"
+ },
+ "VE": {
+ "name": "Wenesuwelaa"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VN": {
+ "name": "Wiyetnaam"
+ },
+ "YE": {
+ "name": "Yemen"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fi.json b/library/intl/resources/country/fi.json
new file mode 100644
index 000000000..03f847ac1
--- /dev/null
+++ b/library/intl/resources/country/fi.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ahvenanmaa"
+ },
+ "NL": {
+ "name": "Alankomaat"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerikan Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "AE": {
+ "name": "Arabiemiirikunnat"
+ },
+ "AR": {
+ "name": "Argentiina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension-saari"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AZ": {
+ "name": "Azerbaidžan"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hertsegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilia"
+ },
+ "IO": {
+ "name": "Brittiläinen Intian valtameren alue"
+ },
+ "VG": {
+ "name": "Brittiläiset Neitsytsaaret"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymansaaret"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CK": {
+ "name": "Cookinsaaret"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaaninen tasavalta"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypti"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ES": {
+ "name": "Espanja"
+ },
+ "ZA": {
+ "name": "Etelä-Afrikka"
+ },
+ "GS": {
+ "name": "Etelä-Georgia ja Eteläiset Sandwichsaaret"
+ },
+ "KR": {
+ "name": "Etelä-Korea"
+ },
+ "SS": {
+ "name": "Etelä-Sudan"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandinsaaret"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filippiinit"
+ },
+ "FO": {
+ "name": "Färsaaret"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönlanti"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – Kiinan e.h.a."
+ },
+ "SJ": {
+ "name": "Huippuvuoret ja Jan Mayen"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IN": {
+ "name": "Intia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanti"
+ },
+ "IS": {
+ "name": "Islanti"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "TL": {
+ "name": "Itä-Timor"
+ },
+ "AT": {
+ "name": "Itävalta"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "CX": {
+ "name": "Joulusaari"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariansaaret"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibian Alankomaat"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CF": {
+ "name": "Keski-Afrikan tasavalta"
+ },
+ "CN": {
+ "name": "Kiina"
+ },
+ "KG": {
+ "name": "Kirgisia"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komorit"
+ },
+ "CD": {
+ "name": "Kongon demokraattinen tasavalta"
+ },
+ "CG": {
+ "name": "Kongon tasavalta"
+ },
+ "CC": {
+ "name": "Kookossaaret (Keelingsaaret)"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "GR": {
+ "name": "Kreikka"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Liettua"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "EH": {
+ "name": "Länsi-Sahara"
+ },
+ "MO": {
+ "name": "Macao – Kiinan e.h.a."
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivit"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mansaari"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinsaaret"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesian liittovaltio"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolkinsaari"
+ },
+ "NO": {
+ "name": "Norja"
+ },
+ "CI": {
+ "name": "Norsunluurannikko"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestiinalaisalueet"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Uusi-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "KP": {
+ "name": "Pohjois-Korea"
+ },
+ "MP": {
+ "name": "Pohjois-Mariaanit"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "PL": {
+ "name": "Puola"
+ },
+ "GQ": {
+ "name": "Päiväntasaajan Guinea"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "FR": {
+ "name": "Ranska"
+ },
+ "GF": {
+ "name": "Ranskan Guayana"
+ },
+ "PF": {
+ "name": "Ranskan Polynesia"
+ },
+ "TF": {
+ "name": "Ranskan ulkopuoliset eteläiset alueet"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "SE": {
+ "name": "Ruotsi"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadiinit"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre ja Miquelon"
+ },
+ "DE": {
+ "name": "Saksa"
+ },
+ "SB": {
+ "name": "Salomonsaaret"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellit"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "FI": {
+ "name": "Suomi"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "CH": {
+ "name": "Sveitsi"
+ },
+ "SZ": {
+ "name": "Swazimaa"
+ },
+ "SY": {
+ "name": "Syyria"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "DK": {
+ "name": "Tanska"
+ },
+ "TH": {
+ "name": "Thaimaa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tšad"
+ },
+ "CZ": {
+ "name": "Tšekki"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- ja Caicossaaret"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Unkari"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "NC": {
+ "name": "Uusi-Kaledonia"
+ },
+ "NZ": {
+ "name": "Uusi-Seelanti"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "BY": {
+ "name": "Valko-Venäjä"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "RU": {
+ "name": "Venäjä"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "EE": {
+ "name": "Viro"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "GB": {
+ "name": "Yhdistynyt kuningaskunta"
+ },
+ "US": {
+ "name": "Yhdysvallat"
+ },
+ "UM": {
+ "name": "Yhdysvaltain erillissaaret"
+ },
+ "VI": {
+ "name": "Yhdysvaltain Neitsytsaaret"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fil.json b/library/intl/resources/country/fil.json
new file mode 100644
index 000000000..1013ed4fb
--- /dev/null
+++ b/library/intl/resources/country/fil.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Acsencion island"
+ },
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Island"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "EH": {
+ "name": "Kanlurang Sahara"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Pilipinas"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "SS": {
+ "name": "Timog Sudan"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan de Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fo.json b/library/intl/resources/country/fo.json
new file mode 100644
index 000000000..d60f0301f
--- /dev/null
+++ b/library/intl/resources/country/fo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Áland"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerikanska Sámoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensionoyggjin"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Avstralia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesj"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belis"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hersegovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brasilia"
+ },
+ "IO": {
+ "name": "Bretsku Indiahavsoyggjarnar"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "KY": {
+ "name": "Caymanoyggjarnar"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CK": {
+ "name": "Cooksoyggjarnar"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmørk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DO": {
+ "name": "Domingo lýðveldið"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Egyptaland"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvator Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "TL": {
+ "name": "Eystur-Timor"
+ },
+ "AT": {
+ "name": "Eysturríki"
+ },
+ "FK": {
+ "name": "Falklandsoyggjarnar"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "CI": {
+ "name": "Fílabeinsstrondin"
+ },
+ "PH": {
+ "name": "Filipsoyggjar"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frakland"
+ },
+ "GF": {
+ "name": "Fransk Gujana"
+ },
+ "MF": {
+ "name": "Fransk Saint Martin"
+ },
+ "PF": {
+ "name": "Franska Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FO": {
+ "name": "Føroyar"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grikkaland"
+ },
+ "CV": {
+ "name": "Grønhøvdaoyggjarnar"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "BY": {
+ "name": "Hvítarussland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Írland"
+ },
+ "IS": {
+ "name": "Ísland"
+ },
+ "IL": {
+ "name": "Ísrael"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jameika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CX": {
+ "name": "Jólaoyggjin"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaríoyggjarnar"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "CZ": {
+ "name": "Kekkia"
+ },
+ "KE": {
+ "name": "Kenja"
+ },
+ "CL": {
+ "name": "Kili"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisia"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "TD": {
+ "name": "Kjad"
+ },
+ "CC": {
+ "name": "Kokosoyggjarnar"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komorooyggjarnar"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvait"
+ },
+ "CY": {
+ "name": "Kýpros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liktenstein"
+ },
+ "LT": {
+ "name": "Litava"
+ },
+ "LU": {
+ "name": "Luksemborg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makao"
+ },
+ "MK": {
+ "name": "Makedónia"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivuoyggjarnar"
+ },
+ "MY": {
+ "name": "Maleisia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mann"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalloyggjarnar"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "CF": {
+ "name": "Miðafrikalýðveldið"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Móritania"
+ },
+ "MU": {
+ "name": "Móritius"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niðurlond"
+ },
+ "BQ": {
+ "name": "Niðurlonds Karibia"
+ },
+ "SX": {
+ "name": "Niðurlonds Saint Martin"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Norður-Korea"
+ },
+ "MP": {
+ "name": "Norðurmarianoyggjarnar"
+ },
+ "SD": {
+ "name": "Norðursudan"
+ },
+ "NO": {
+ "name": "Noreg"
+ },
+ "NF": {
+ "name": "Norfolkoyggjin"
+ },
+ "NZ": {
+ "name": "Ný Sæland"
+ },
+ "NC": {
+ "name": "Ný-Kaledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinskt territorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nýguinea"
+ },
+ "PY": {
+ "name": "Paraguei"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pólland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumenia"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Saint Lusia"
+ },
+ "PM": {
+ "name": "Saint Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vinsent og Grenadinoyggjar"
+ },
+ "SB": {
+ "name": "Sálomonoyggjarnar"
+ },
+ "US": {
+ "name": "Sambandsríki Amerika"
+ },
+ "VI": {
+ "name": "Sambandsríki Amerikas Jómfrúoyggjarnar"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "AE": {
+ "name": "Sameindu Emirríkini"
+ },
+ "WS": {
+ "name": "Sámoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome og Prinsipi"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyskelloyggjarnar"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabvi"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stóra Bretland"
+ },
+ "VG": {
+ "name": "Stóra Bretlands Jómfrúoyggjarnar"
+ },
+ "KR": {
+ "name": "Suður-Korea"
+ },
+ "ZA": {
+ "name": "Suðurafrikalýðveldið"
+ },
+ "GS": {
+ "name": "Suðurgeorgia"
+ },
+ "SS": {
+ "name": "Suðursudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svasiland"
+ },
+ "CH": {
+ "name": "Sveis"
+ },
+ "SE": {
+ "name": "Svøríki"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Teiland"
+ },
+ "TW": {
+ "name": "Teivan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunesia"
+ },
+ "TR": {
+ "name": "Turkaland"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosoyggjarnar"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Týskland"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguei"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "EH": {
+ "name": "Vestursahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr-CA.json b/library/intl/resources/country/fr-CA.json
new file mode 100644
index 000000000..2b7ccbcf7
--- /dev/null
+++ b/library/intl/resources/country/fr-CA.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BY": {
+ "name": "Bélarus"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GS": {
+ "name": "Géorgie du Sud et les îles Sandwich du Sud"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "Île Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "Île de Man"
+ },
+ "NF": {
+ "name": "Île Norfolk"
+ },
+ "AX": {
+ "name": "Îles Åland"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "Îles Canaries"
+ },
+ "CC": {
+ "name": "Îles Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Îles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "FK": {
+ "name": "Îles Malouines"
+ },
+ "MP": {
+ "name": "Îles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "Îles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "Îles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "Îles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "FM": {
+ "name": "Micronésie"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (France)"
+ },
+ "SX": {
+ "name": "Saint-Martin (Pays-Bas)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr-CH.json b/library/intl/resources/country/fr-CH.json
new file mode 100644
index 000000000..d274eb795
--- /dev/null
+++ b/library/intl/resources/country/fr-CH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BY": {
+ "name": "Biélorussie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "FM": {
+ "name": "États fédérés de Micronésie"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "Île Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "Île de Man"
+ },
+ "NF": {
+ "name": "Île Norfolk"
+ },
+ "AX": {
+ "name": "Îles Åland"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "Îles Canaries"
+ },
+ "CC": {
+ "name": "Îles Cocos"
+ },
+ "CK": {
+ "name": "Îles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "GS": {
+ "name": "Îles Géorgie du Sud et Sandwich du Sud"
+ },
+ "FK": {
+ "name": "Îles Malouines"
+ },
+ "MP": {
+ "name": "Îles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "Îles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "Îles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "Îles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (partie française)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr.json b/library/intl/resources/country/fr.json
new file mode 100644
index 000000000..db6e0d8f2
--- /dev/null
+++ b/library/intl/resources/country/fr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BY": {
+ "name": "Biélorussie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "FM": {
+ "name": "États fédérés de Micronésie"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "Île Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "Île de Man"
+ },
+ "NF": {
+ "name": "Île Norfolk"
+ },
+ "AX": {
+ "name": "Îles Åland"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "Îles Canaries"
+ },
+ "CC": {
+ "name": "Îles Cocos"
+ },
+ "CK": {
+ "name": "Îles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "GS": {
+ "name": "Îles Géorgie du Sud et Sandwich du Sud"
+ },
+ "FK": {
+ "name": "Îles Malouines"
+ },
+ "MP": {
+ "name": "Îles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "Îles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "Îles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "Îles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (partie française)"
+ },
+ "SX": {
+ "name": "Saint-Martin (partie néerlandaise)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fur.json b/library/intl/resources/country/fur.json
new file mode 100644
index 000000000..44bce8a36
--- /dev/null
+++ b/library/intl/resources/country/fur.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Alzerie"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartic"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabie Saudide"
+ },
+ "AR": {
+ "name": "Argjentine"
+ },
+ "AM": {
+ "name": "Armenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Austrie"
+ },
+ "AZ": {
+ "name": "Azerbaigian"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgjiche"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussie"
+ },
+ "MM": {
+ "name": "Birmanie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie e Ercegovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasîl"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "KH": {
+ "name": "Camboze"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canade"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CN": {
+ "name": "Cine"
+ },
+ "CY": {
+ "name": "Cipri"
+ },
+ "CV": {
+ "name": "Cjâf vert"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comoris"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "KP": {
+ "name": "Coree dal nord"
+ },
+ "KR": {
+ "name": "Coree dal sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Cravuazie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CI": {
+ "name": "Cueste di Avoli"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarcje"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominiche"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egjit"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirâts araps unîts"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "ET": {
+ "name": "Etiopie"
+ },
+ "PH": {
+ "name": "Filipinis"
+ },
+ "FI": {
+ "name": "Finlandie"
+ },
+ "FJ": {
+ "name": "Fizi"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GS": {
+ "name": "Georgia dal Sud e Isulis Sandwich dal Sud"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "DJ": {
+ "name": "Gibuti"
+ },
+ "JM": {
+ "name": "Gjamaiche"
+ },
+ "JP": {
+ "name": "Gjapon"
+ },
+ "GE": {
+ "name": "Gjeorgjie"
+ },
+ "DE": {
+ "name": "Gjermanie"
+ },
+ "GI": {
+ "name": "Gjibraltar"
+ },
+ "NC": {
+ "name": "Gnove Caledonie"
+ },
+ "NZ": {
+ "name": "Gnove Zelande"
+ },
+ "GR": {
+ "name": "Grecie"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlande"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana francês"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GQ": {
+ "name": "Guinee ecuatoriâl"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesie"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "NF": {
+ "name": "Isole Norfolk"
+ },
+ "IL": {
+ "name": "Israêl"
+ },
+ "CX": {
+ "name": "Isule Christmas"
+ },
+ "IM": {
+ "name": "Isule di Man"
+ },
+ "AX": {
+ "name": "Isulis Aland"
+ },
+ "IC": {
+ "name": "Isulis Canariis"
+ },
+ "KY": {
+ "name": "Isulis Cayman"
+ },
+ "CC": {
+ "name": "Isulis Cocos"
+ },
+ "CK": {
+ "name": "Isulis Cook"
+ },
+ "FK": {
+ "name": "Isulis Falkland"
+ },
+ "FO": {
+ "name": "Isulis Faroe"
+ },
+ "MP": {
+ "name": "Isulis Mariana dal Nord"
+ },
+ "MH": {
+ "name": "Isulis Marshall"
+ },
+ "UM": {
+ "name": "Isulis periferichis minôrs dai Stâts Unîts"
+ },
+ "SB": {
+ "name": "Isulis Salomon"
+ },
+ "TC": {
+ "name": "Isulis Turks e Caicos"
+ },
+ "VI": {
+ "name": "Isulis vergjinis americanis"
+ },
+ "VG": {
+ "name": "Isulis vergjinis britanichis"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazachistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberie"
+ },
+ "LY": {
+ "name": "Libie"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Lussemburc"
+ },
+ "MK": {
+ "name": "Macedonie"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivis"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martiniche"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "MU": {
+ "name": "Maurizi"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Messic"
+ },
+ "FM": {
+ "name": "Micronesie"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambic"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerie"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegje"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HU": {
+ "name": "Ongjarie"
+ },
+ "NL": {
+ "name": "Paîs bas"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamà"
+ },
+ "PG": {
+ "name": "Papue Gnove Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perù"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesie francês"
+ },
+ "PL": {
+ "name": "Polonie"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Ream unît"
+ },
+ "HK": {
+ "name": "Regjon aministrative speciâl de Cine di Hong Kong"
+ },
+ "MO": {
+ "name": "Regjon aministrative speciâl de Cine di Macao"
+ },
+ "CZ": {
+ "name": "Republiche ceche"
+ },
+ "CF": {
+ "name": "Republiche centri africane"
+ },
+ "CD": {
+ "name": "Republiche Democratiche dal Congo"
+ },
+ "DO": {
+ "name": "Republiche dominicane"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romanie"
+ },
+ "RW": {
+ "name": "Ruande"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "EH": {
+ "name": "Sahara ocidentâl"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa merecanis"
+ },
+ "KN": {
+ "name": "San Kitts e Nevis"
+ },
+ "SM": {
+ "name": "San Marin"
+ },
+ "PM": {
+ "name": "San Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "San Vincent e lis Grenadinis"
+ },
+ "BL": {
+ "name": "Sant Barthélemy"
+ },
+ "MF": {
+ "name": "Sant Martin"
+ },
+ "SH": {
+ "name": "Sante Eline"
+ },
+ "LC": {
+ "name": "Sante Lusie"
+ },
+ "ST": {
+ "name": "Sao Tomè e Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirie"
+ },
+ "SK": {
+ "name": "Slovachie"
+ },
+ "SI": {
+ "name": "Slovenie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spagne"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stâts Unîts"
+ },
+ "ZA": {
+ "name": "Sud Afriche"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezie"
+ },
+ "CH": {
+ "name": "Svuizare"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TH": {
+ "name": "Tailandie"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TJ": {
+ "name": "Tazikistan"
+ },
+ "IO": {
+ "name": "Teritori britanic dal Ocean Indian"
+ },
+ "TF": {
+ "name": "Teritoris meridionâi francês"
+ },
+ "PS": {
+ "name": "Teritoris palestinês"
+ },
+ "TL": {
+ "name": "Timor orientâl"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TR": {
+ "name": "Turchie"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraine"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbechistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fy.json b/library/intl/resources/country/fy.json
new file mode 100644
index 000000000..ae3b71d81
--- /dev/null
+++ b/library/intl/resources/country/fy.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålân"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaansk Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanske Maagdeneilannen"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden yn de Indyske Oseaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilannen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymaneilannen"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilannen"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikaanske Republyk"
+ },
+ "DE": {
+ "name": "Dútslân"
+ },
+ "TL": {
+ "name": "East-Timor"
+ },
+ "AT": {
+ "name": "Eastenryk"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlân"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklâneilannen"
+ },
+ "US": {
+ "name": "Ferienigde Staten"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finlân"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indyske Oseaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grienlân"
+ },
+ "GR": {
+ "name": "Grikelân"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van Sina"
+ },
+ "IE": {
+ "name": "Ierlân"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "IC": {
+ "name": "Kanaryske Eilânnen"
+ },
+ "BQ": {
+ "name": "Karibysk Nederlân"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "CC": {
+ "name": "Kokosilanen"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "CX": {
+ "name": "Krysteilan"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letlân"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "UM": {
+ "name": "Lyts ôflizzen eilannen fan de Ferienigde Staten"
+ },
+ "MO": {
+ "name": "Macao SAR van Sina"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madeiaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilannen"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesië"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederlân"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NC": {
+ "name": "Nij-Caledonië"
+ },
+ "NZ": {
+ "name": "Nij-Seelân"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noard-Korea"
+ },
+ "MP": {
+ "name": "Noardlike Marianeneilannen"
+ },
+ "NO": {
+ "name": "Noarwegen"
+ },
+ "NF": {
+ "name": "Norfolkeilân"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestynske gebieten"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nij-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilannen"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Ruslân"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomonseilannen"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "CF": {
+ "name": "Sintraal-Afrikaanske Republyk"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "ZA": {
+ "name": "Sûd-Afrika"
+ },
+ "GS": {
+ "name": "Sûd-Georgia en Sûdlike Sandwicheilannen"
+ },
+ "KR": {
+ "name": "Sûd-Korea"
+ },
+ "SS": {
+ "name": "Sûd-Soedan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swazilân"
+ },
+ "CH": {
+ "name": "Switserlân"
+ },
+ "CY": {
+ "name": "Syprus"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailân"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechje"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilannen"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstêd"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabyske Emiraten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Ruslân"
+ },
+ "ID": {
+ "name": "Yndonesië"
+ },
+ "IS": {
+ "name": "Yslân"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "SE": {
+ "name": "Zweden"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ga.json b/library/intl/resources/country/ga.json
new file mode 100644
index 000000000..c43deae91
--- /dev/null
+++ b/library/intl/resources/country/ga.json
@@ -0,0 +1,761 @@
+{
+ "ET": {
+ "name": "An Aetóip"
+ },
+ "AF": {
+ "name": "An Afganastáin"
+ },
+ "ZA": {
+ "name": "An Afraic Theas"
+ },
+ "DZ": {
+ "name": "An Ailgéir"
+ },
+ "AR": {
+ "name": "An Airgintín"
+ },
+ "AM": {
+ "name": "An Airméin"
+ },
+ "AL": {
+ "name": "An Albáin"
+ },
+ "AQ": {
+ "name": "An Antartaice"
+ },
+ "SA": {
+ "name": "An Araib Shádach"
+ },
+ "AZ": {
+ "name": "An Asarbaiseáin"
+ },
+ "AU": {
+ "name": "An Astráil"
+ },
+ "BD": {
+ "name": "An Bhanglaidéis"
+ },
+ "BY": {
+ "name": "An Bhealarúis"
+ },
+ "BE": {
+ "name": "An Bheilg"
+ },
+ "BZ": {
+ "name": "An Bheilís"
+ },
+ "BA": {
+ "name": "An Bhoisnia agus An Heirseagaivéin"
+ },
+ "BO": {
+ "name": "An Bholaiv"
+ },
+ "BW": {
+ "name": "An Bhotsuáin"
+ },
+ "BR": {
+ "name": "An Bhrasaíl"
+ },
+ "BG": {
+ "name": "An Bhulgáir"
+ },
+ "BI": {
+ "name": "An Bhurúin"
+ },
+ "BT": {
+ "name": "An Bhútáin"
+ },
+ "KH": {
+ "name": "An Chambóid"
+ },
+ "KZ": {
+ "name": "An Chasacstáin"
+ },
+ "KE": {
+ "name": "An Chéinia"
+ },
+ "CY": {
+ "name": "An Chipir"
+ },
+ "KG": {
+ "name": "An Chirgeastáin"
+ },
+ "KR": {
+ "name": "An Chóiré Theas"
+ },
+ "KP": {
+ "name": "An Chóiré Thuaidh"
+ },
+ "CO": {
+ "name": "An Cholóim"
+ },
+ "XK": {
+ "name": "An Chosaiv"
+ },
+ "HR": {
+ "name": "An Chróit"
+ },
+ "CG": {
+ "name": "An Congó"
+ },
+ "CI": {
+ "name": "An Cósta Eabhair"
+ },
+ "DK": {
+ "name": "An Danmhairg"
+ },
+ "EE": {
+ "name": "An Eastóin"
+ },
+ "EG": {
+ "name": "An Éigipt"
+ },
+ "CH": {
+ "name": "An Eilvéis"
+ },
+ "ER": {
+ "name": "An Eiritré"
+ },
+ "FI": {
+ "name": "An Fhionlainn"
+ },
+ "FR": {
+ "name": "An Fhrainc"
+ },
+ "GA": {
+ "name": "An Ghabúin"
+ },
+ "GM": {
+ "name": "An Ghaimbia"
+ },
+ "DE": {
+ "name": "An Ghearmáin"
+ },
+ "GL": {
+ "name": "An Ghraonlainn"
+ },
+ "GR": {
+ "name": "An Ghréig"
+ },
+ "GY": {
+ "name": "An Ghuáin"
+ },
+ "GN": {
+ "name": "An Ghuine"
+ },
+ "GQ": {
+ "name": "An Ghuine Mheánchriosach"
+ },
+ "IQ": {
+ "name": "An Iaráic"
+ },
+ "IR": {
+ "name": "An Iaráin"
+ },
+ "IN": {
+ "name": "An India"
+ },
+ "ID": {
+ "name": "An Indinéis"
+ },
+ "IT": {
+ "name": "An Iodáil"
+ },
+ "JO": {
+ "name": "An Iordáin"
+ },
+ "NO": {
+ "name": "An Iorua"
+ },
+ "IS": {
+ "name": "An Íoslainn"
+ },
+ "NL": {
+ "name": "An Ísiltír"
+ },
+ "BQ": {
+ "name": "An Ísiltír Chairibeach"
+ },
+ "LV": {
+ "name": "An Laitvia"
+ },
+ "LR": {
+ "name": "An Libéir"
+ },
+ "LY": {
+ "name": "An Libia"
+ },
+ "LB": {
+ "name": "An Liobáin"
+ },
+ "LT": {
+ "name": "An Liotuáin"
+ },
+ "MK": {
+ "name": "An Mhacadóin"
+ },
+ "MY": {
+ "name": "An Mhalaeisia"
+ },
+ "MW": {
+ "name": "An Mhaláiv"
+ },
+ "MR": {
+ "name": "An Mháratáin"
+ },
+ "FM": {
+ "name": "An Mhicrinéis"
+ },
+ "MD": {
+ "name": "An Mholdóiv"
+ },
+ "MN": {
+ "name": "An Mhongóil"
+ },
+ "NA": {
+ "name": "An Namaib"
+ },
+ "NG": {
+ "name": "An Nigéir"
+ },
+ "NE": {
+ "name": "An Nígir"
+ },
+ "NC": {
+ "name": "An Nua-Chaladóin"
+ },
+ "NZ": {
+ "name": "An Nua-Shéalainn"
+ },
+ "AT": {
+ "name": "An Ostair"
+ },
+ "PK": {
+ "name": "An Phacastáin"
+ },
+ "DO": {
+ "name": "An Phoblacht Dhoiminiceach"
+ },
+ "PL": {
+ "name": "An Pholainn"
+ },
+ "PT": {
+ "name": "An Phortaingéil"
+ },
+ "GB": {
+ "name": "An Ríocht Aontaithe"
+ },
+ "RO": {
+ "name": "An Rómáin"
+ },
+ "RU": {
+ "name": "An Rúis"
+ },
+ "EH": {
+ "name": "An Sahára Thiar"
+ },
+ "ES": {
+ "name": "An Spáinn"
+ },
+ "TJ": {
+ "name": "An Táidsíceastáin"
+ },
+ "TZ": {
+ "name": "An Tansáin"
+ },
+ "TH": {
+ "name": "An Téalainn"
+ },
+ "TW": {
+ "name": "An Téaváin"
+ },
+ "ZM": {
+ "name": "An tSaimbia"
+ },
+ "SV": {
+ "name": "An tSalvadóir"
+ },
+ "JP": {
+ "name": "An tSeapáin"
+ },
+ "SN": {
+ "name": "An tSeineagáil"
+ },
+ "RS": {
+ "name": "An tSeirbia"
+ },
+ "GE": {
+ "name": "An tSeoirsia"
+ },
+ "GS": {
+ "name": "An tSeoirsia Theas agus Oileáin Sandwich Theas"
+ },
+ "CL": {
+ "name": "An tSile"
+ },
+ "CN": {
+ "name": "An tSín"
+ },
+ "ZW": {
+ "name": "An tSiombáib"
+ },
+ "SY": {
+ "name": "An tSiria"
+ },
+ "SI": {
+ "name": "An tSlóivéin"
+ },
+ "SK": {
+ "name": "An tSlóvaic"
+ },
+ "SO": {
+ "name": "An tSomáil"
+ },
+ "SE": {
+ "name": "An tSualainn"
+ },
+ "SZ": {
+ "name": "An tSuasalainn"
+ },
+ "SD": {
+ "name": "An tSúdáin"
+ },
+ "SS": {
+ "name": "An tSúdáin Theas"
+ },
+ "TN": {
+ "name": "An Túinéis"
+ },
+ "TR": {
+ "name": "An Tuirc"
+ },
+ "TM": {
+ "name": "An Tuircméanastáin"
+ },
+ "UA": {
+ "name": "An Úcráin"
+ },
+ "UZ": {
+ "name": "An Úisbéiceastáin"
+ },
+ "HU": {
+ "name": "An Ungáir"
+ },
+ "VA": {
+ "name": "An Vatacáin"
+ },
+ "AD": {
+ "name": "Andóra"
+ },
+ "AI": {
+ "name": "Angaíle"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AG": {
+ "name": "Antigua agus Barbúda"
+ },
+ "AE": {
+ "name": "Aontas na nÉimíríochtaí Arabacha"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "BH": {
+ "name": "Bairéin"
+ },
+ "BB": {
+ "name": "Barbadós"
+ },
+ "BJ": {
+ "name": "Beinin"
+ },
+ "BM": {
+ "name": "Beirmiúda"
+ },
+ "BN": {
+ "name": "Brúiné"
+ },
+ "BF": {
+ "name": "Buircíne Fasó"
+ },
+ "CM": {
+ "name": "Camarún"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "CA": {
+ "name": "Ceanada"
+ },
+ "EA": {
+ "name": "Ceuta agus Melilla"
+ },
+ "KI": {
+ "name": "Cireabaití"
+ },
+ "CR": {
+ "name": "Cósta Ríce"
+ },
+ "IO": {
+ "name": "Críoch Aigéan Indiach na Breataine"
+ },
+ "TF": {
+ "name": "Críocha Francacha Dheisceart an Domhain"
+ },
+ "KW": {
+ "name": "Cuáit"
+ },
+ "CU": {
+ "name": "Cúba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Doiminice"
+ },
+ "EC": {
+ "name": "Eacuadór"
+ },
+ "YE": {
+ "name": "Éimin"
+ },
+ "IE": {
+ "name": "Éire"
+ },
+ "FJ": {
+ "name": "Fidsí"
+ },
+ "GH": {
+ "name": "Gána"
+ },
+ "GG": {
+ "name": "Geansaí"
+ },
+ "JE": {
+ "name": "Geirsí"
+ },
+ "GI": {
+ "name": "Giobráltar"
+ },
+ "GD": {
+ "name": "Greanáda"
+ },
+ "GP": {
+ "name": "Guadalúip"
+ },
+ "GF": {
+ "name": "Guáin na Fraince"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatamala"
+ },
+ "GW": {
+ "name": "Guine Bissau"
+ },
+ "HT": {
+ "name": "Háítí"
+ },
+ "HN": {
+ "name": "Hondúras"
+ },
+ "JM": {
+ "name": "Iamáice"
+ },
+ "IL": {
+ "name": "Iosrael"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Leosóta"
+ },
+ "LI": {
+ "name": "Lichtinstéin"
+ },
+ "LU": {
+ "name": "Lucsamburg"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MM": {
+ "name": "Maenmar (Burma)"
+ },
+ "ML": {
+ "name": "Mailí"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "MA": {
+ "name": "Maracó"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meicsiceo"
+ },
+ "MC": {
+ "name": "Monacó"
+ },
+ "ME": {
+ "name": "Montainéagró"
+ },
+ "MS": {
+ "name": "Montsarat"
+ },
+ "MZ": {
+ "name": "Mósaimbíc"
+ },
+ "BS": {
+ "name": "Na Bahámaí"
+ },
+ "PS": {
+ "name": "Na Críocha Palaistíneacha"
+ },
+ "IC": {
+ "name": "Na hOileáin Chanáracha"
+ },
+ "PH": {
+ "name": "Na hOileáin Fhilipíneacha"
+ },
+ "MP": {
+ "name": "Na hOileáin Mháirianacha Thuaidh"
+ },
+ "SC": {
+ "name": "Na Séiséil"
+ },
+ "NR": {
+ "name": "Nárú"
+ },
+ "NP": {
+ "name": "Neipeal"
+ },
+ "NI": {
+ "name": "Nicearagua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "PG": {
+ "name": "Nua-Ghuine Phapua"
+ },
+ "AX": {
+ "name": "Oileáin Åland"
+ },
+ "VG": {
+ "name": "Oileáin Bhriotanacha na Maighdean"
+ },
+ "KY": {
+ "name": "Oileáin Cayman"
+ },
+ "KM": {
+ "name": "Oileáin Chomóra"
+ },
+ "CC": {
+ "name": "Oileáin Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Oileáin Cook"
+ },
+ "FK": {
+ "name": "Oileáin Fháclainne"
+ },
+ "FO": {
+ "name": "Oileáin Fharó"
+ },
+ "UM": {
+ "name": "Oileáin Imeallacha S.A.M."
+ },
+ "MH": {
+ "name": "Oileáin Marshall"
+ },
+ "MV": {
+ "name": "Oileáin Mhaildíve"
+ },
+ "VI": {
+ "name": "Oileáin Mheiriceánacha na Maighdean"
+ },
+ "TC": {
+ "name": "Oileáin na dTurcach agus Caicos"
+ },
+ "PN": {
+ "name": "Oileáin Pitcairn"
+ },
+ "SB": {
+ "name": "Oileáin Sholomón"
+ },
+ "IM": {
+ "name": "Oileán Mhanann"
+ },
+ "MU": {
+ "name": "Oileán Mhuirís"
+ },
+ "AC": {
+ "name": "Oileán na Deascabhála"
+ },
+ "CX": {
+ "name": "Oileán na Nollag"
+ },
+ "TT": {
+ "name": "Oileán na Tríonóide agus Tobága"
+ },
+ "NF": {
+ "name": "Oileán Norfolk"
+ },
+ "OM": {
+ "name": "Óman"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paragua"
+ },
+ "PE": {
+ "name": "Peiriú"
+ },
+ "CD": {
+ "name": "Poblacht Dhaonlathach an Chongó"
+ },
+ "CF": {
+ "name": "Poblacht na hAfraice Láir"
+ },
+ "CZ": {
+ "name": "Poblacht na Seice"
+ },
+ "PF": {
+ "name": "Polainéis na Fraince"
+ },
+ "PR": {
+ "name": "Portó Ríce"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "CV": {
+ "name": "Rinn Verde"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "HK": {
+ "name": "S.R.R. na Síne Hong Cong"
+ },
+ "MO": {
+ "name": "S.R.R. na Síne Macao"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samó"
+ },
+ "AS": {
+ "name": "Samó Meiriceánach"
+ },
+ "KN": {
+ "name": "San Críostóir-Nimheas"
+ },
+ "SH": {
+ "name": "San Héilin"
+ },
+ "SM": {
+ "name": "San Mairíne"
+ },
+ "VC": {
+ "name": "San Uinseann agus na Greanáidíní"
+ },
+ "ST": {
+ "name": "São Tomé agus Príncipe"
+ },
+ "TD": {
+ "name": "Sead"
+ },
+ "SL": {
+ "name": "Siarra Leon"
+ },
+ "SG": {
+ "name": "Singeapór"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Srí Lanca"
+ },
+ "US": {
+ "name": "Stáit Aontaithe Mheiriceá"
+ },
+ "SR": {
+ "name": "Suranam"
+ },
+ "SJ": {
+ "name": "Svalbard agus Jan Mayen"
+ },
+ "TL": {
+ "name": "Tíomór Thoir"
+ },
+ "TK": {
+ "name": "Tócalá"
+ },
+ "TG": {
+ "name": "Tóga"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Urugua"
+ },
+ "WF": {
+ "name": "Vailís agus Futúna"
+ },
+ "VU": {
+ "name": "Vanuatú"
+ },
+ "VE": {
+ "name": "Veiniséala"
+ },
+ "VN": {
+ "name": "Vítneam"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gd.json b/library/intl/resources/country/gd.json
new file mode 100644
index 000000000..9c5898cea
--- /dev/null
+++ b/library/intl/resources/country/gd.json
@@ -0,0 +1,761 @@
+{
+ "BY": {
+ "name": "A’ Bhealaruis"
+ },
+ "BE": {
+ "name": "A’ Bheilg"
+ },
+ "BZ": {
+ "name": "A’ Bheilìs"
+ },
+ "VE": {
+ "name": "A’ Bheiniseala"
+ },
+ "BG": {
+ "name": "A’ Bhulgair"
+ },
+ "GE": {
+ "name": "A’ Chairtbheil"
+ },
+ "CG": {
+ "name": "A’ Chongo - Brazzaville"
+ },
+ "XK": {
+ "name": "A’ Chosobho"
+ },
+ "HR": {
+ "name": "A’ Chròthais"
+ },
+ "GM": {
+ "name": "A’ Ghaimbia"
+ },
+ "DE": {
+ "name": "A’ Ghearmailt"
+ },
+ "GL": {
+ "name": "A’ Ghraonlann"
+ },
+ "GR": {
+ "name": "A’ Ghreug"
+ },
+ "MK": {
+ "name": "A’ Mhasadon"
+ },
+ "MD": {
+ "name": "A’ Mholdobha"
+ },
+ "DO": {
+ "name": "A’ Phoblachd Dhoiminiceach"
+ },
+ "PL": {
+ "name": "A’ Phòlainn"
+ },
+ "PT": {
+ "name": "A’ Phortagail"
+ },
+ "AF": {
+ "name": "Afghanastàn"
+ },
+ "ZA": {
+ "name": "Afraga a Deas"
+ },
+ "DZ": {
+ "name": "Aildiria"
+ },
+ "AG": {
+ "name": "Aintìoga is Barbuda"
+ },
+ "AM": {
+ "name": "Airmeinia"
+ },
+ "AL": {
+ "name": "Albàinia"
+ },
+ "ME": {
+ "name": "Am Monadh Neagrach"
+ },
+ "AQ": {
+ "name": "An Antartaig"
+ },
+ "AR": {
+ "name": "An Argantain"
+ },
+ "CV": {
+ "name": "An Ceap Uaine"
+ },
+ "DK": {
+ "name": "An Danmhairg"
+ },
+ "IT": {
+ "name": "An Eadailt"
+ },
+ "YE": {
+ "name": "An Eaman"
+ },
+ "EE": {
+ "name": "An Eastoin"
+ },
+ "CH": {
+ "name": "An Eilbheis"
+ },
+ "EG": {
+ "name": "An Èiphit"
+ },
+ "FI": {
+ "name": "An Fhionnlann"
+ },
+ "FR": {
+ "name": "An Fhraing"
+ },
+ "ET": {
+ "name": "An Itiop"
+ },
+ "LV": {
+ "name": "An Laitbhe"
+ },
+ "LT": {
+ "name": "An Liotuain"
+ },
+ "NA": {
+ "name": "An Namaib"
+ },
+ "NO": {
+ "name": "An Nirribhidh"
+ },
+ "AT": {
+ "name": "An Ostair"
+ },
+ "GB": {
+ "name": "An Rìoghachd Aonaichte"
+ },
+ "RU": {
+ "name": "An Ruis"
+ },
+ "SV": {
+ "name": "An Salbhador"
+ },
+ "ES": {
+ "name": "An Spàinn"
+ },
+ "TD": {
+ "name": "An t-Seàd"
+ },
+ "JP": {
+ "name": "An t-Seapan"
+ },
+ "RS": {
+ "name": "An t-Sèirb"
+ },
+ "CL": {
+ "name": "An t-Sile"
+ },
+ "CN": {
+ "name": "An t-Sìn"
+ },
+ "ZW": {
+ "name": "An t-Sìombab"
+ },
+ "SK": {
+ "name": "An t-Slòbhac"
+ },
+ "SI": {
+ "name": "An t-Slòbhain"
+ },
+ "SE": {
+ "name": "An t-Suain"
+ },
+ "TZ": {
+ "name": "An Tansan"
+ },
+ "TR": {
+ "name": "An Tuirc"
+ },
+ "UA": {
+ "name": "An Ucràin"
+ },
+ "HU": {
+ "name": "An Ungair"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angòla"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "SA": {
+ "name": "Aràibia nan Sabhd"
+ },
+ "AW": {
+ "name": "Arùba"
+ },
+ "AZ": {
+ "name": "Asarbaideàn"
+ },
+ "AU": {
+ "name": "Astràilia"
+ },
+ "BH": {
+ "name": "Bachrain"
+ },
+ "BD": {
+ "name": "Bangladais"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BM": {
+ "name": "Bearmùda"
+ },
+ "BJ": {
+ "name": "Beinin"
+ },
+ "VN": {
+ "name": "Bhiet-Nam"
+ },
+ "BO": {
+ "name": "Boilibhia"
+ },
+ "BA": {
+ "name": "Bosna agus Hearsagobhana"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Braisil"
+ },
+ "BN": {
+ "name": "Brùnaigh"
+ },
+ "BF": {
+ "name": "Buirciona Faso"
+ },
+ "BI": {
+ "name": "Burundaidh"
+ },
+ "BT": {
+ "name": "Butàn"
+ },
+ "NC": {
+ "name": "Cailleann Nuadh"
+ },
+ "CM": {
+ "name": "Camarun"
+ },
+ "KH": {
+ "name": "Cambuidea"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KZ": {
+ "name": "Casachstàn"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "VA": {
+ "name": "Cathair na Bhatacain"
+ },
+ "KE": {
+ "name": "Ceinia"
+ },
+ "EA": {
+ "name": "Ceuta agus Melilla"
+ },
+ "CY": {
+ "name": "Cìopras"
+ },
+ "KG": {
+ "name": "Cìorgastan"
+ },
+ "KI": {
+ "name": "Ciribeas"
+ },
+ "KR": {
+ "name": "Coirèa a Deas"
+ },
+ "KP": {
+ "name": "Coirèa a Tuath"
+ },
+ "CO": {
+ "name": "Coloimbia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rìcea"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CU": {
+ "name": "Cùba"
+ },
+ "KW": {
+ "name": "Cuibhèit"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "JE": {
+ "name": "Deàrsaidh"
+ },
+ "JM": {
+ "name": "Diameuga"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GI": {
+ "name": "Diobraltar"
+ },
+ "DJ": {
+ "name": "Diobùtaidh"
+ },
+ "DM": {
+ "name": "Doiminicea"
+ },
+ "MN": {
+ "name": "Dùthaich nam Mongol"
+ },
+ "SZ": {
+ "name": "Dùthaich nan Suasaidh"
+ },
+ "TH": {
+ "name": "Dùthaich nan Tàidh"
+ },
+ "EC": {
+ "name": "Eacuador"
+ },
+ "ER": {
+ "name": "Eartra"
+ },
+ "IM": {
+ "name": "Eilean Mhanainn"
+ },
+ "AC": {
+ "name": "Eilean na Deasgabhalach"
+ },
+ "CX": {
+ "name": "Eilean na Nollaig"
+ },
+ "SH": {
+ "name": "Eilean Naomh Eilidh"
+ },
+ "NF": {
+ "name": "Eilean Norfolk"
+ },
+ "PN": {
+ "name": "Eilean Peit a’ Chàirn"
+ },
+ "VI": {
+ "name": "Eileanan Aimeireagach na Maighdinn"
+ },
+ "VG": {
+ "name": "Eileanan Breatannach na Maighdinn"
+ },
+ "CK": {
+ "name": "Eileanan Cook"
+ },
+ "MH": {
+ "name": "Eileanan Mharshall"
+ },
+ "SB": {
+ "name": "Eileanan Sholaimh"
+ },
+ "IE": {
+ "name": "Èirinn"
+ },
+ "FJ": {
+ "name": "Fìdi"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GH": {
+ "name": "Gàna"
+ },
+ "GG": {
+ "name": "Geàrnsaidh"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GQ": {
+ "name": "Gini Mheadhan-Chriosach"
+ },
+ "PG": {
+ "name": "Gini Nuadh Phaputhach"
+ },
+ "GW": {
+ "name": "Gini-Bioso"
+ },
+ "GD": {
+ "name": "Greanàda"
+ },
+ "GP": {
+ "name": "Guadalup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatamala"
+ },
+ "GY": {
+ "name": "Guidheàna"
+ },
+ "GF": {
+ "name": "Guidheàna na Frainge"
+ },
+ "HT": {
+ "name": "Haidhti"
+ },
+ "HN": {
+ "name": "Hondùras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR na Sìne"
+ },
+ "IS": {
+ "name": "Innis Tìle"
+ },
+ "IQ": {
+ "name": "Ioràc"
+ },
+ "IR": {
+ "name": "Ioràn"
+ },
+ "JO": {
+ "name": "Iòrdan"
+ },
+ "IL": {
+ "name": "Iosrael"
+ },
+ "LA": {
+ "name": "Làthos"
+ },
+ "LB": {
+ "name": "Leabanon"
+ },
+ "LS": {
+ "name": "Leasoto"
+ },
+ "LR": {
+ "name": "Libèir"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Lichtenstein"
+ },
+ "LU": {
+ "name": "Lugsamburg"
+ },
+ "MO": {
+ "name": "Macàthu SAR na Sìne"
+ },
+ "MG": {
+ "name": "Madagasgar"
+ },
+ "ML": {
+ "name": "Màili"
+ },
+ "MQ": {
+ "name": "Mairtinic"
+ },
+ "MW": {
+ "name": "Malabhaidh"
+ },
+ "MY": {
+ "name": "Malaidhsea"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meagsago"
+ },
+ "UM": {
+ "name": "Meanbh-Eileanan Iomallach nan Stàitean Aonaichte"
+ },
+ "MM": {
+ "name": "Miànmar (Burma)"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MS": {
+ "name": "Montsarat"
+ },
+ "MR": {
+ "name": "Moratàinea"
+ },
+ "MA": {
+ "name": "Moroco"
+ },
+ "MZ": {
+ "name": "Mòsaimbic"
+ },
+ "AX": {
+ "name": "Na h-Eileanan Åland"
+ },
+ "BS": {
+ "name": "Na h-Eileanan Bhathama"
+ },
+ "KY": {
+ "name": "Na h-Eileanan Caimean"
+ },
+ "IC": {
+ "name": "Na h-Eileanan Canàrach"
+ },
+ "CC": {
+ "name": "Na h-Eileanan Cocos (Keeling)"
+ },
+ "FK": {
+ "name": "Na h-Eileanan Fàclannach"
+ },
+ "FO": {
+ "name": "Na h-Eileanan Fàro"
+ },
+ "PH": {
+ "name": "Na h-Eileanan Filipineach"
+ },
+ "MP": {
+ "name": "Na h-Eileanan Mairianach a Tuath"
+ },
+ "MV": {
+ "name": "Na h-Eileanan Mhaladaibh"
+ },
+ "MU": {
+ "name": "Na h-Eileanan Mhoiriseas"
+ },
+ "SC": {
+ "name": "Na h-Eileanan Sheiseall"
+ },
+ "TC": {
+ "name": "Na h-Eileanan Turcach is Caiceo"
+ },
+ "ID": {
+ "name": "Na h-Innd Innse"
+ },
+ "IN": {
+ "name": "Na h-Innseachan"
+ },
+ "AE": {
+ "name": "Na h-Iomaratan Arabach Aonaichte"
+ },
+ "FM": {
+ "name": "Na Meanbh-Eileanan"
+ },
+ "PS": {
+ "name": "Na Ranntairean Palastaineach"
+ },
+ "US": {
+ "name": "Na Stàitean Aonaichte"
+ },
+ "NL": {
+ "name": "Na Tìrean Ìsle"
+ },
+ "BQ": {
+ "name": "Na Tìrean Ìsle Caraibeach"
+ },
+ "NR": {
+ "name": "Nabhru"
+ },
+ "VC": {
+ "name": "Naomh Bhionsant agus Eileanan Greanadach"
+ },
+ "KN": {
+ "name": "Naomh Crìstean is Nibheis"
+ },
+ "LC": {
+ "name": "Naomh Lùisea"
+ },
+ "MF": {
+ "name": "Naomh Màrtainn"
+ },
+ "NP": {
+ "name": "Neapàl"
+ },
+ "NE": {
+ "name": "Nìgeir"
+ },
+ "NG": {
+ "name": "Nigèiria"
+ },
+ "NI": {
+ "name": "Niocaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "OM": {
+ "name": "Omàn"
+ },
+ "PK": {
+ "name": "Pagastàn"
+ },
+ "PW": {
+ "name": "Palabh"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paraguaidh"
+ },
+ "PE": {
+ "name": "Pearù"
+ },
+ "CF": {
+ "name": "Poblachd Meadhan Afraga"
+ },
+ "CZ": {
+ "name": "Poblachd na Seice"
+ },
+ "PF": {
+ "name": "Poilinèis na Frainge"
+ },
+ "PR": {
+ "name": "Porto Rìceo"
+ },
+ "IO": {
+ "name": "Ranntair Breatannach Cuan nan Innseachan"
+ },
+ "TF": {
+ "name": "Ranntairean a Deas na Frainge"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romàinia"
+ },
+ "RW": {
+ "name": "Rubhanda"
+ },
+ "ZM": {
+ "name": "Sàimbia"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "PM": {
+ "name": "Saint Pierre agus Miquelon"
+ },
+ "WS": {
+ "name": "Samotha"
+ },
+ "AS": {
+ "name": "Samotha na h-Aimeireaga"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé agus Príncipe"
+ },
+ "EH": {
+ "name": "Sathara an Iar"
+ },
+ "NZ": {
+ "name": "Sealainn Nuadh"
+ },
+ "SN": {
+ "name": "Seanagal"
+ },
+ "GS": {
+ "name": "Seòrsea a Deas is na h-Eileanan Sandwich a Deas"
+ },
+ "SL": {
+ "name": "Siarra Leòmhann"
+ },
+ "SG": {
+ "name": "Singeapòr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siridhea"
+ },
+ "SO": {
+ "name": "Somàilia"
+ },
+ "LK": {
+ "name": "Sri Lanca"
+ },
+ "SD": {
+ "name": "Sudàn"
+ },
+ "SS": {
+ "name": "Sudàn a Deas"
+ },
+ "SR": {
+ "name": "Suranam"
+ },
+ "SJ": {
+ "name": "Svalbard agus Jan Mayen"
+ },
+ "TW": {
+ "name": "Taidh-Bhàn"
+ },
+ "TJ": {
+ "name": "Taidigeastàn"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trianaid agus Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tubhalu"
+ },
+ "TN": {
+ "name": "Tuinisea"
+ },
+ "TM": {
+ "name": "Turcmanastàn"
+ },
+ "WF": {
+ "name": "Uallas agus Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguaidh"
+ },
+ "UZ": {
+ "name": "Usbagastàn"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gl.json b/library/intl/resources/country/gl.json
new file mode 100644
index 000000000..f230e9d10
--- /dev/null
+++ b/library/intl/resources/country/gl.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Acerbaixán"
+ },
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemaña"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antiga e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "DZ": {
+ "name": "Arxelia"
+ },
+ "AR": {
+ "name": "Arxentina"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BE": {
+ "name": "Bélxica"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia e Hercegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "ZW": {
+ "name": "Cimbabue"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "KP": {
+ "name": "Corea do Norte"
+ },
+ "KR": {
+ "name": "Corea do Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Árabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos de América"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "EG": {
+ "name": "Exipto"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fixi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Grenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Güiana"
+ },
+ "GF": {
+ "name": "Güiana Francesa"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong RAE de China"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "CX": {
+ "name": "Illa Christmas"
+ },
+ "AC": {
+ "name": "Illa de Ascensión"
+ },
+ "IM": {
+ "name": "Illa de Man"
+ },
+ "NF": {
+ "name": "Illa Norfolk"
+ },
+ "AX": {
+ "name": "Illas Aland"
+ },
+ "KY": {
+ "name": "Illas Caimán"
+ },
+ "IC": {
+ "name": "Illas Canarias"
+ },
+ "CC": {
+ "name": "Illas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Illas Cook"
+ },
+ "FO": {
+ "name": "Illas Feroe"
+ },
+ "FK": {
+ "name": "Illas Malvinas"
+ },
+ "MP": {
+ "name": "Illas Marianas do norte"
+ },
+ "MH": {
+ "name": "Illas Marshall"
+ },
+ "UM": {
+ "name": "Illas Menores Distantes dos EUA."
+ },
+ "PN": {
+ "name": "Illas Pitcairn"
+ },
+ "SB": {
+ "name": "Illas Salomón"
+ },
+ "TC": {
+ "name": "Illas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Illas Virxes Británicas"
+ },
+ "VI": {
+ "name": "Illas Virxes Estadounidenses"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau RAE de China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Níxer"
+ },
+ "NG": {
+ "name": "Nixeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledonia"
+ },
+ "NZ": {
+ "name": "Nova Celandia"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nova Guinea"
+ },
+ "PK": {
+ "name": "Paquistán"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KE": {
+ "name": "Quenia"
+ },
+ "KG": {
+ "name": "Quirguicistán"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Africana Central"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CD": {
+ "name": "República Democrática do Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RO": {
+ "name": "Romanía"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sahara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristovo e Nevis"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martiño"
+ },
+ "PM": {
+ "name": "San Pedro e Miguelón"
+ },
+ "ST": {
+ "name": "San Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "San Vicente e Granadinas"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "SC": {
+ "name": "Seixeles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suacilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán do sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suíza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Taxiquistán"
+ },
+ "IO": {
+ "name": "Territorio Británico do Océano Índico"
+ },
+ "TF": {
+ "name": "Territorios Franceses do Sul"
+ },
+ "PS": {
+ "name": "Territorios palestinos"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraína"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "JM": {
+ "name": "Xamaica"
+ },
+ "JP": {
+ "name": "Xapón"
+ },
+ "GE": {
+ "name": "Xeorxia"
+ },
+ "GS": {
+ "name": "Xeorxia do Sur e Illas Sandwich"
+ },
+ "GI": {
+ "name": "Xibraltar"
+ },
+ "DJ": {
+ "name": "Xibuti"
+ },
+ "JO": {
+ "name": "Xordania"
+ },
+ "ZM": {
+ "name": "Zambia"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gsw.json b/library/intl/resources/country/gsw.json
new file mode 100644
index 000000000..719beca7b
--- /dev/null
+++ b/library/intl/resources/country/gsw.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Aaland-Insle"
+ },
+ "AF": {
+ "name": "Afganischtan"
+ },
+ "EG": {
+ "name": "Ägüpte"
+ },
+ "AL": {
+ "name": "Albaanie"
+ },
+ "DZ": {
+ "name": "Algeerie"
+ },
+ "AS": {
+ "name": "Amerikaanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanischi Jungfere-Insle"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeaanie"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatoriaalgineea"
+ },
+ "AR": {
+ "name": "Argentiinie"
+ },
+ "ER": {
+ "name": "Äritreea"
+ },
+ "AM": {
+ "name": "Armeenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbäidschan"
+ },
+ "ET": {
+ "name": "Äthiopie"
+ },
+ "AU": {
+ "name": "Auschtraalie"
+ },
+ "BH": {
+ "name": "Bachräin"
+ },
+ "BS": {
+ "name": "Bahaamas"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliivie"
+ },
+ "BA": {
+ "name": "Bosnie und Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilie"
+ },
+ "VG": {
+ "name": "Britischi Jungfere-Insle"
+ },
+ "IO": {
+ "name": "Britischs Territoorium im Indische Oozean"
+ },
+ "BN": {
+ "name": "Brunäi Tarussalam"
+ },
+ "BG": {
+ "name": "Bulgaarie"
+ },
+ "BF": {
+ "name": "Burkina Faaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CN": {
+ "name": "Chiina"
+ },
+ "CK": {
+ "name": "Cook-Insle"
+ },
+ "CR": {
+ "name": "Coschta Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "KP": {
+ "name": "Demokraatischi Volksrepublik Koreea"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "JM": {
+ "name": "Dschamäika"
+ },
+ "JE": {
+ "name": "Dschörsi"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EE": {
+ "name": "Eestland"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebäiküschte"
+ },
+ "FK": {
+ "name": "Falkland-Insle"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FJ": {
+ "name": "Fitschi"
+ },
+ "FR": {
+ "name": "Frankriich"
+ },
+ "GF": {
+ "name": "Französisch-Guäjaana"
+ },
+ "PF": {
+ "name": "Französisch-Polineesie"
+ },
+ "TF": {
+ "name": "Französischi Süüd- und Antarktisgebiet"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GG": {
+ "name": "Gäärnsi"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Geoorgie"
+ },
+ "QA": {
+ "name": "Ggatar"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineea"
+ },
+ "GW": {
+ "name": "Gineea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griecheland"
+ },
+ "GL": {
+ "name": "Gröönland"
+ },
+ "GP": {
+ "name": "Guadälup"
+ },
+ "GY": {
+ "name": "Guäjaana"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IS": {
+ "name": "Iisland"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indoneesie"
+ },
+ "IM": {
+ "name": "Insle vo Män"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itaalie"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jeeme"
+ },
+ "JO": {
+ "name": "Jordaanie"
+ },
+ "KY": {
+ "name": "Käimän-Insle"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasachschtan"
+ },
+ "KE": {
+ "name": "Keenia"
+ },
+ "KG": {
+ "name": "Kirgiisischtan"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CC": {
+ "name": "Kokos-Insle"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komoore"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroaazie"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwäit"
+ },
+ "LA": {
+ "name": "Laaos"
+ },
+ "LS": {
+ "name": "Lesooto"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LI": {
+ "name": "Liächteschtäi"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libeeria"
+ },
+ "LT": {
+ "name": "Littaue"
+ },
+ "LY": {
+ "name": "Lüübie"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MG": {
+ "name": "Madagaschkar"
+ },
+ "YT": {
+ "name": "Majott"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MY": {
+ "name": "Maläisia"
+ },
+ "MV": {
+ "name": "Malediiwe"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinsle"
+ },
+ "MQ": {
+ "name": "Martinigg"
+ },
+ "MR": {
+ "name": "Mauretaanie"
+ },
+ "MU": {
+ "name": "Mauriizius"
+ },
+ "MK": {
+ "name": "Mazedoonie"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneesie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Monteneegro"
+ },
+ "MS": {
+ "name": "Moosörrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namiibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nicaraagua"
+ },
+ "NG": {
+ "name": "Nigeeria"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Nöikaledoonie"
+ },
+ "NZ": {
+ "name": "Nöiseeland"
+ },
+ "MP": {
+ "name": "Nördlichi Mariaane"
+ },
+ "NF": {
+ "name": "Norfolk-Insle"
+ },
+ "NO": {
+ "name": "Norweege"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AT": {
+ "name": "Ööschtriich"
+ },
+ "TL": {
+ "name": "Oschttimor"
+ },
+ "PK": {
+ "name": "Pakischtan"
+ },
+ "PS": {
+ "name": "Paläschtinänsischi Gebiet"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippiine"
+ },
+ "PN": {
+ "name": "Pitggäärn"
+ },
+ "PL": {
+ "name": "Poole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Riggo"
+ },
+ "KR": {
+ "name": "Republik Koreea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Reünioon"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumäänie"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "SB": {
+ "name": "Salomoone"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samooa"
+ },
+ "SM": {
+ "name": "San Mariino"
+ },
+ "ST": {
+ "name": "Sao Tome und Prinssipe"
+ },
+ "RS": {
+ "name": "Särbie"
+ },
+ "SA": {
+ "name": "Saudi-Araabie"
+ },
+ "ES": {
+ "name": "Schpanie"
+ },
+ "LK": {
+ "name": "Schri Lanka"
+ },
+ "SE": {
+ "name": "Schweede"
+ },
+ "CH": {
+ "name": "Schwiiz"
+ },
+ "SC": {
+ "name": "Seischälle"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sierra Leoone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapuur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakäi"
+ },
+ "SI": {
+ "name": "Sloweenie"
+ },
+ "SO": {
+ "name": "Somaalie"
+ },
+ "HK": {
+ "name": "Sonderverwaltigszone Hongkong"
+ },
+ "MO": {
+ "name": "Sonderverwaltigszone Macao"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthelemi"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Niuwis"
+ },
+ "LC": {
+ "name": "St. Lutschiia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierr und Miggelo"
+ },
+ "VC": {
+ "name": "St. Vincent und d’Grönadiine"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "ZA": {
+ "name": "Süüdafrika"
+ },
+ "GS": {
+ "name": "Süüdgeorgie und d’süüdlichi Sändwitsch-Insle"
+ },
+ "SY": {
+ "name": "Süürie"
+ },
+ "SJ": {
+ "name": "Svalbard und Jaan Määie"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "TJ": {
+ "name": "Tadschikischtan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "DK": {
+ "name": "Tänemark"
+ },
+ "TZ": {
+ "name": "Tansaniia"
+ },
+ "CD": {
+ "name": "Temokraatischi Republik Kongo"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "DM": {
+ "name": "Tominica"
+ },
+ "DO": {
+ "name": "Tominikaanischi Republik"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Toogo"
+ },
+ "TC": {
+ "name": "Törks- und Gaiggos-Insle"
+ },
+ "TT": {
+ "name": "Trinidad und Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechischi Republik"
+ },
+ "DJ": {
+ "name": "Tschibuuti"
+ },
+ "CL": {
+ "name": "Tschile"
+ },
+ "TN": {
+ "name": "Tuneesie"
+ },
+ "TR": {
+ "name": "Türggei"
+ },
+ "TM": {
+ "name": "Turkmeenischtan"
+ },
+ "DE": {
+ "name": "Tüütschland"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraiine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uschbeekischtan"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezueela"
+ },
+ "AE": {
+ "name": "Veräinigti Arabischi Emirate"
+ },
+ "US": {
+ "name": "Veräinigti Schtaate"
+ },
+ "GB": {
+ "name": "Veräinigts Chönigriich"
+ },
+ "WF": {
+ "name": "Wallis und Futuuna"
+ },
+ "VU": {
+ "name": "Wanuatu"
+ },
+ "EH": {
+ "name": "Weschtsahara"
+ },
+ "CX": {
+ "name": "Wienachts-Insle"
+ },
+ "VN": {
+ "name": "Wietnam"
+ },
+ "BY": {
+ "name": "Wiissrussland"
+ },
+ "CF": {
+ "name": "Zentraalafrikaanischi Republik"
+ },
+ "CY": {
+ "name": "Zypere"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gu.json b/library/intl/resources/country/gu.json
new file mode 100644
index 000000000..00bbacc90
--- /dev/null
+++ b/library/intl/resources/country/gu.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "અંગોલા"
+ },
+ "AZ": {
+ "name": "અઝરબૈજાન"
+ },
+ "AF": {
+ "name": "અફઘાનિસ્તાન"
+ },
+ "AS": {
+ "name": "અમેરીકન સમોઆ"
+ },
+ "AW": {
+ "name": "અરુબા"
+ },
+ "DZ": {
+ "name": "અલ્જીરિયા"
+ },
+ "AL": {
+ "name": "અલ્બેનિયા"
+ },
+ "IS": {
+ "name": "આઇસલેન્ડ"
+ },
+ "IM": {
+ "name": "આઈલ ઓફ મૅન"
+ },
+ "IE": {
+ "name": "આયર્લેંડ"
+ },
+ "AR": {
+ "name": "આર્જેન્ટીના"
+ },
+ "AM": {
+ "name": "આર્મેનિયા"
+ },
+ "GQ": {
+ "name": "ઇક્વેટોરિયલ ગિની"
+ },
+ "EG": {
+ "name": "ઇજિપ્ત"
+ },
+ "IL": {
+ "name": "ઇઝરાઇલ"
+ },
+ "IT": {
+ "name": "ઇટાલી"
+ },
+ "ET": {
+ "name": "ઇથિઓપિયા"
+ },
+ "ID": {
+ "name": "ઇન્ડોનેશિયા"
+ },
+ "IQ": {
+ "name": "ઇરાક"
+ },
+ "IR": {
+ "name": "ઈરાન"
+ },
+ "UZ": {
+ "name": "ઉઝ્બેકિસ્તાન"
+ },
+ "KP": {
+ "name": "ઉત્તર કોરિયા"
+ },
+ "MP": {
+ "name": "ઉત્તરીય મારિયાના આઇલેન્ડ્સ"
+ },
+ "UY": {
+ "name": "ઉરુગ્વે"
+ },
+ "AI": {
+ "name": "ઍંગ્વિલા"
+ },
+ "AD": {
+ "name": "ઍંડોરા"
+ },
+ "EC": {
+ "name": "એક્વાડોર"
+ },
+ "AQ": {
+ "name": "એન્ટાર્કટિકા"
+ },
+ "AG": {
+ "name": "એન્ટીગુઆ અને બરબુડા"
+ },
+ "ER": {
+ "name": "એરિટ્રિયા"
+ },
+ "SV": {
+ "name": "એલ સેલ્વાડોર"
+ },
+ "AX": {
+ "name": "એલેંડ આઇલેન્ડ્સ"
+ },
+ "AC": {
+ "name": "એસેન્શન આઇલેન્ડ"
+ },
+ "EE": {
+ "name": "એસ્ટોનિયા"
+ },
+ "AT": {
+ "name": "ઑસ્ટ્રિયા"
+ },
+ "AU": {
+ "name": "ઑસ્ટ્રેલિયા"
+ },
+ "OM": {
+ "name": "ઓમાન"
+ },
+ "KH": {
+ "name": "કંબોડિયા"
+ },
+ "KZ": {
+ "name": "કઝાકિસ્તાન"
+ },
+ "QA": {
+ "name": "કતાર"
+ },
+ "KI": {
+ "name": "કિરિબાટી"
+ },
+ "KG": {
+ "name": "કિર્ગિઝ્સ્તાન"
+ },
+ "CK": {
+ "name": "કુક આઇલેન્ડ્સ"
+ },
+ "CW": {
+ "name": "કુરાકાઓ"
+ },
+ "KW": {
+ "name": "કુવૈત"
+ },
+ "IC": {
+ "name": "કૅનેરી આઇલેન્ડ્સ"
+ },
+ "CV": {
+ "name": "કૅપ વર્ડે"
+ },
+ "CM": {
+ "name": "કૅમરૂન"
+ },
+ "CA": {
+ "name": "કેનેડા"
+ },
+ "KE": {
+ "name": "કેન્યા"
+ },
+ "KY": {
+ "name": "કેયમેન આઇલેન્ડ્સ"
+ },
+ "BQ": {
+ "name": "કેરેબિયન નેધરલેન્ડ્ઝ"
+ },
+ "CD": {
+ "name": "કોંગો - કિંશાસા"
+ },
+ "CG": {
+ "name": "કોંગો - બ્રાઝાવિલે"
+ },
+ "CC": {
+ "name": "કોકોઝ (કીલીંગ) આઇલેન્ડ્સ"
+ },
+ "CI": {
+ "name": "કોટ ડી આઇવરી"
+ },
+ "KM": {
+ "name": "કોમોરસ"
+ },
+ "CO": {
+ "name": "કોલમ્બિયા"
+ },
+ "XK": {
+ "name": "કોસોવો"
+ },
+ "CR": {
+ "name": "કોસ્ટા રિકા"
+ },
+ "CU": {
+ "name": "ક્યુબા"
+ },
+ "CX": {
+ "name": "ક્રિસમસ આઇલેન્ડ"
+ },
+ "HR": {
+ "name": "ક્રોએશિયા"
+ },
+ "GY": {
+ "name": "ગયાના"
+ },
+ "GN": {
+ "name": "ગિની"
+ },
+ "GW": {
+ "name": "ગિની-બિસાઉ"
+ },
+ "GA": {
+ "name": "ગેબન"
+ },
+ "GM": {
+ "name": "ગેમ્બિયા"
+ },
+ "GL": {
+ "name": "ગ્રીનલેન્ડ"
+ },
+ "GR": {
+ "name": "ગ્રીસ"
+ },
+ "GD": {
+ "name": "ગ્રેનેડા"
+ },
+ "GT": {
+ "name": "ગ્વાટેમાલા"
+ },
+ "GP": {
+ "name": "ગ્વાડેલોપ"
+ },
+ "GU": {
+ "name": "ગ્વામ"
+ },
+ "GG": {
+ "name": "ગ્વેર્નસે"
+ },
+ "GH": {
+ "name": "ઘાના"
+ },
+ "TD": {
+ "name": "ચાડ"
+ },
+ "CL": {
+ "name": "ચિલી"
+ },
+ "CN": {
+ "name": "ચીન"
+ },
+ "CZ": {
+ "name": "ચેક રીપબ્લિક"
+ },
+ "JM": {
+ "name": "જમૈકા"
+ },
+ "DE": {
+ "name": "જર્મની"
+ },
+ "JE": {
+ "name": "જર્સી"
+ },
+ "JP": {
+ "name": "જાપાન"
+ },
+ "DJ": {
+ "name": "જીબૌટી"
+ },
+ "GI": {
+ "name": "જીબ્રાલ્ટર"
+ },
+ "JO": {
+ "name": "જોર્ડન"
+ },
+ "GE": {
+ "name": "જ્યોર્જીયા"
+ },
+ "ZM": {
+ "name": "ઝામ્બિયા"
+ },
+ "ZW": {
+ "name": "ઝિમ્બાબ્વે"
+ },
+ "TC": {
+ "name": "ટર્ક્સ એન્ડ કૈકોસ આઇલેન્ડ્સ"
+ },
+ "TO": {
+ "name": "ટોંગા"
+ },
+ "TK": {
+ "name": "ટોકેલાઉ"
+ },
+ "TG": {
+ "name": "ટોગો"
+ },
+ "TN": {
+ "name": "ટ્યુનિશિયા"
+ },
+ "DG": {
+ "name": "ડિએગો ગારસિઆ"
+ },
+ "DK": {
+ "name": "ડેનમાર્ક"
+ },
+ "DO": {
+ "name": "ડોમિનિકન રીપબ્લિક"
+ },
+ "DM": {
+ "name": "ડોમિનિકા"
+ },
+ "TZ": {
+ "name": "તાંઝાનિયા"
+ },
+ "TW": {
+ "name": "તાઇવાન"
+ },
+ "TJ": {
+ "name": "તાજીકિસ્તાન"
+ },
+ "TL": {
+ "name": "તિમોર-લેસ્તે"
+ },
+ "TM": {
+ "name": "તુર્કમેનિસ્તાન"
+ },
+ "TR": {
+ "name": "તુર્કી"
+ },
+ "TV": {
+ "name": "તુવાલુ"
+ },
+ "TT": {
+ "name": "ત્રિનિદાદ અને ટોબેગો"
+ },
+ "TA": {
+ "name": "ત્રિસ્તાન દા કુન્હા"
+ },
+ "TH": {
+ "name": "થાઇલેંડ"
+ },
+ "ZA": {
+ "name": "દક્ષિણ આફ્રિકા"
+ },
+ "KR": {
+ "name": "દક્ષિણ કોરિયા"
+ },
+ "GS": {
+ "name": "દક્ષિણ જ્યોર્જીયા અને દક્ષિણ સેન્ડવિચ આઇલેન્ડ્સ"
+ },
+ "SS": {
+ "name": "દક્ષિણ સુદાન"
+ },
+ "NE": {
+ "name": "નાઇજર"
+ },
+ "NG": {
+ "name": "નાઇજીરીયા"
+ },
+ "NA": {
+ "name": "નામિબિયા"
+ },
+ "NI": {
+ "name": "નિકારાગુઆ"
+ },
+ "NU": {
+ "name": "નીયુ"
+ },
+ "NL": {
+ "name": "નેધરલેન્ડ"
+ },
+ "NP": {
+ "name": "નેપાળ"
+ },
+ "NO": {
+ "name": "નૉર્વે"
+ },
+ "NF": {
+ "name": "નોરફૉક આઇલેન્ડ"
+ },
+ "NR": {
+ "name": "નૌરુ"
+ },
+ "NC": {
+ "name": "ન્યુ સેલેડોનિયા"
+ },
+ "NZ": {
+ "name": "ન્યુઝીલેન્ડ"
+ },
+ "PA": {
+ "name": "પનામા"
+ },
+ "PW": {
+ "name": "પલાઉ"
+ },
+ "EH": {
+ "name": "પશ્ચિમી સહારા"
+ },
+ "PK": {
+ "name": "પાકિસ્તાન"
+ },
+ "PG": {
+ "name": "પાપુઆ ન્યૂ ગિની"
+ },
+ "PN": {
+ "name": "પીટકૈર્ન આઇલેન્ડ્સ"
+ },
+ "PY": {
+ "name": "પેરાગ્વે"
+ },
+ "PE": {
+ "name": "પેરુ"
+ },
+ "PS": {
+ "name": "પેલેસ્ટિનિયન ટેરિટરી"
+ },
+ "PT": {
+ "name": "પોર્ટુગલ"
+ },
+ "PL": {
+ "name": "પોલેંડ"
+ },
+ "PR": {
+ "name": "પ્યુઅર્ટો રિકો"
+ },
+ "FI": {
+ "name": "ફિનલેન્ડ"
+ },
+ "PH": {
+ "name": "ફિલીપાઇન્સ"
+ },
+ "FJ": {
+ "name": "ફીજી"
+ },
+ "FO": {
+ "name": "ફૅરો આઇલેન્ડ્સ"
+ },
+ "FK": {
+ "name": "ફૉકલેન્ડ આઇલેન્ડ્સ"
+ },
+ "FR": {
+ "name": "ફ્રાંસ"
+ },
+ "GF": {
+ "name": "ફ્રેંચ ગયાના"
+ },
+ "PF": {
+ "name": "ફ્રેંચ પોલિનેશિયા"
+ },
+ "TF": {
+ "name": "ફ્રેંચ સદર્ન ટેરિટરીઝ"
+ },
+ "BM": {
+ "name": "બર્મુડા"
+ },
+ "BG": {
+ "name": "બલ્ગેરિયા"
+ },
+ "BS": {
+ "name": "બહામાસ"
+ },
+ "BD": {
+ "name": "બાંગ્લાદેશ"
+ },
+ "BB": {
+ "name": "બાર્બાડોસ"
+ },
+ "BI": {
+ "name": "બુરુંડી"
+ },
+ "BF": {
+ "name": "બુર્કિના ફાસો"
+ },
+ "BJ": {
+ "name": "બેનિન"
+ },
+ "BY": {
+ "name": "બેલારુસ"
+ },
+ "BZ": {
+ "name": "બેલીઝ"
+ },
+ "BE": {
+ "name": "બેલ્જીયમ"
+ },
+ "BH": {
+ "name": "બેહરીન"
+ },
+ "BW": {
+ "name": "બોત્સ્વાના"
+ },
+ "BO": {
+ "name": "બોલિવિયા"
+ },
+ "BA": {
+ "name": "બોસ્નિયા અને હર્ઝેગોવિના"
+ },
+ "BR": {
+ "name": "બ્રાઝિલ"
+ },
+ "IO": {
+ "name": "બ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરી"
+ },
+ "VG": {
+ "name": "બ્રિટિશ વર્જિન આઇલેન્ડ્સ"
+ },
+ "BN": {
+ "name": "બ્રુનેઇ"
+ },
+ "IN": {
+ "name": "ભારત"
+ },
+ "BT": {
+ "name": "ભૂટાન"
+ },
+ "MN": {
+ "name": "મંગોલિયા"
+ },
+ "MO": {
+ "name": "મકાઉ SAR ચીન"
+ },
+ "MY": {
+ "name": "મલેશિયા"
+ },
+ "FM": {
+ "name": "માઇક્રોનેશિયા"
+ },
+ "MQ": {
+ "name": "માર્ટીનીક"
+ },
+ "MH": {
+ "name": "માર્શલ આઇલેન્ડ્સ"
+ },
+ "MV": {
+ "name": "માલદિવ્સ"
+ },
+ "MW": {
+ "name": "માલાવી"
+ },
+ "ML": {
+ "name": "માલી"
+ },
+ "MT": {
+ "name": "માલ્ટા"
+ },
+ "MX": {
+ "name": "મેક્સિકો"
+ },
+ "MG": {
+ "name": "મેડાગાસ્કર"
+ },
+ "YT": {
+ "name": "મેયોટ"
+ },
+ "MK": {
+ "name": "મેસેડોનિયા"
+ },
+ "ME": {
+ "name": "મૉન્ટેંનેગ્રો"
+ },
+ "MS": {
+ "name": "મોંટસેરાત"
+ },
+ "MZ": {
+ "name": "મોઝામ્બિક"
+ },
+ "MC": {
+ "name": "મોનાકો"
+ },
+ "MU": {
+ "name": "મોરિશિયસ"
+ },
+ "MA": {
+ "name": "મોરોક્કો"
+ },
+ "MD": {
+ "name": "મોલડોવા"
+ },
+ "MR": {
+ "name": "મૌરિટાનિયા"
+ },
+ "MM": {
+ "name": "મ્યાંમાર (બર્મા)"
+ },
+ "VI": {
+ "name": "યુ.એસ વર્જિન આઇલેન્ડ્સ"
+ },
+ "UA": {
+ "name": "યુક્રેન"
+ },
+ "UG": {
+ "name": "યુગાંડા"
+ },
+ "AE": {
+ "name": "યુનાઇટેડ આરબ અમીરાત"
+ },
+ "GB": {
+ "name": "યુનાઇટેડ કિંગડમ"
+ },
+ "YE": {
+ "name": "યેમેન"
+ },
+ "RW": {
+ "name": "રવાંડા"
+ },
+ "RU": {
+ "name": "રશિયા"
+ },
+ "RE": {
+ "name": "રીયુનિયન"
+ },
+ "RO": {
+ "name": "રોમાનિયા"
+ },
+ "LU": {
+ "name": "લક્ઝમબર્ગ"
+ },
+ "LR": {
+ "name": "લાઇબેરિયા"
+ },
+ "LA": {
+ "name": "લાઓસ"
+ },
+ "LV": {
+ "name": "લાત્વિયા"
+ },
+ "LT": {
+ "name": "લિથુઆનિયા"
+ },
+ "LY": {
+ "name": "લિબિયા"
+ },
+ "LB": {
+ "name": "લેબનોન"
+ },
+ "LS": {
+ "name": "લેસોથો"
+ },
+ "LI": {
+ "name": "લૈચટેંસ્ટેઇન"
+ },
+ "VU": {
+ "name": "વાનુઆતુ"
+ },
+ "VN": {
+ "name": "વિયેતનામ"
+ },
+ "VA": {
+ "name": "વેટિકન સિટી"
+ },
+ "VE": {
+ "name": "વેનેઝુએલા"
+ },
+ "WF": {
+ "name": "વૉલિસ એંડ ફ્યુચુના"
+ },
+ "SC": {
+ "name": "શેશેલ્સ"
+ },
+ "LK": {
+ "name": "શ્રીલંકા"
+ },
+ "US": {
+ "name": "સંયુકત રાજ્ય અમેરિકા"
+ },
+ "UM": {
+ "name": "સંયુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સ"
+ },
+ "WS": {
+ "name": "સમોઆ"
+ },
+ "RS": {
+ "name": "સર્બિયા"
+ },
+ "SA": {
+ "name": "સાઉદી અરેબિયા"
+ },
+ "ST": {
+ "name": "સાઓ ટૉમ અને પ્રિંસિપે"
+ },
+ "CY": {
+ "name": "સાયપ્રસ"
+ },
+ "SG": {
+ "name": "સિંગાપુર"
+ },
+ "SX": {
+ "name": "સિંટ માર્ટેન"
+ },
+ "SL": {
+ "name": "સીએરા લેઓન"
+ },
+ "SY": {
+ "name": "સીરિયા"
+ },
+ "SD": {
+ "name": "સુદાન"
+ },
+ "SR": {
+ "name": "સુરીનામ"
+ },
+ "SM": {
+ "name": "સૅન મેરિનો"
+ },
+ "KN": {
+ "name": "સેંટ કિટ્સ એંડ નેવિસ"
+ },
+ "PM": {
+ "name": "સેંટ પીએરે એન્ડ મિકીલોન"
+ },
+ "BL": {
+ "name": "સેંટ બાર્થલેમી"
+ },
+ "MF": {
+ "name": "સેંટ માર્ટિન"
+ },
+ "LC": {
+ "name": "સેંટ લુસિયા"
+ },
+ "SH": {
+ "name": "સેંટ હેલેના"
+ },
+ "CF": {
+ "name": "સેંટ્રલ આફ્રિકન રીપબ્લિક"
+ },
+ "SN": {
+ "name": "સેનેગલ"
+ },
+ "VC": {
+ "name": "સેન્ટ વિન્સેન્ટ એન્ડ ગ્રેનેડીન્સ"
+ },
+ "SO": {
+ "name": "સોમાલિયા"
+ },
+ "SB": {
+ "name": "સોલોમન આઇલેન્ડ્સ"
+ },
+ "ES": {
+ "name": "સ્પેન"
+ },
+ "EA": {
+ "name": "સ્યુટા અને મેલિલા"
+ },
+ "SK": {
+ "name": "સ્લોવેકિયા"
+ },
+ "SI": {
+ "name": "સ્લોવેનિયા"
+ },
+ "SZ": {
+ "name": "સ્વાઝિલેન્ડ"
+ },
+ "SJ": {
+ "name": "સ્વાલબર્ડ એન્ડ જેન મેયન"
+ },
+ "CH": {
+ "name": "સ્વિટ્ઝર્લૅન્ડ"
+ },
+ "SE": {
+ "name": "સ્વીડન"
+ },
+ "HU": {
+ "name": "હંગેરી"
+ },
+ "HT": {
+ "name": "હૈતિ"
+ },
+ "HK": {
+ "name": "હોંગકોંગ SAR ચીન"
+ },
+ "HN": {
+ "name": "હોન્ડુરસ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/guz.json b/library/intl/resources/country/guz.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/guz.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ha.json b/library/intl/resources/country/ha.json
new file mode 100644
index 000000000..0c4103141
--- /dev/null
+++ b/library/intl/resources/country/ha.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganistan"
+ },
+ "ZA": {
+ "name": "Afirka Ta Kudu"
+ },
+ "CI": {
+ "name": "Aibari Kwas"
+ },
+ "IS": {
+ "name": "Aisalan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "DZ": {
+ "name": "Aljeriya"
+ },
+ "US": {
+ "name": "Amurka"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa da Barbuba"
+ },
+ "AR": {
+ "name": "Arjantiniya"
+ },
+ "AM": {
+ "name": "Armeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IE": {
+ "name": "Ayalan"
+ },
+ "AZ": {
+ "name": "Azarbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baharan"
+ },
+ "BD": {
+ "name": "Bangiladas"
+ },
+ "VU": {
+ "name": "Banuwatu"
+ },
+ "BB": {
+ "name": "Barbadas"
+ },
+ "BM": {
+ "name": "Barmuda"
+ },
+ "BW": {
+ "name": "Baswana"
+ },
+ "VA": {
+ "name": "Batikan"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgiyom"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "VE": {
+ "name": "Benezuwela"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BR": {
+ "name": "Birazil"
+ },
+ "GB": {
+ "name": "Birtaniya"
+ },
+ "VN": {
+ "name": "Biyetinam"
+ },
+ "BO": {
+ "name": "Bolibiya"
+ },
+ "BA": {
+ "name": "Bosniya Harzagobina"
+ },
+ "BG": {
+ "name": "Bulgariya"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma, Miyamar"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burune"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "CN": {
+ "name": "Caina, Sin"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "Cayile"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "SV": {
+ "name": "El Salbador"
+ },
+ "ER": {
+ "name": "Eritireya"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "FR": {
+ "name": "Faransa"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlan"
+ },
+ "PF": {
+ "name": "Folinesiya Ta Faransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bisau"
+ },
+ "GF": {
+ "name": "Gini Ta Faransa"
+ },
+ "GQ": {
+ "name": "Gini Ta Ikwaita"
+ },
+ "GR": {
+ "name": "Girka"
+ },
+ "GD": {
+ "name": "Girnada"
+ },
+ "GL": {
+ "name": "Grinlan"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadaluf"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatamala"
+ },
+ "ET": {
+ "name": "Habasha"
+ },
+ "AE": {
+ "name": "Haɗaɗɗiyar Daular Larabawa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holan"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indunusiya"
+ },
+ "IQ": {
+ "name": "Iraƙi"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "IL": {
+ "name": "Iziraʼila"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuriyar Afirka Ta Tsakiya"
+ },
+ "CZ": {
+ "name": "Jamhuriyar Cak"
+ },
+ "CD": {
+ "name": "Jamhuriyar Dimokuraɗiyyar Kongo"
+ },
+ "DO": {
+ "name": "Jamhuriyar Dominika"
+ },
+ "DE": {
+ "name": "Jamus"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibaraltar"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jiwarjiya"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "NC": {
+ "name": "Kaledoniya Sabuwa"
+ },
+ "CM": {
+ "name": "Kamaru"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolambiya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Koreya Ta Arewa"
+ },
+ "KR": {
+ "name": "Koreya Ta Kudu"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kurowaishiya"
+ },
+ "KM": {
+ "name": "Kwamoras"
+ },
+ "CR": {
+ "name": "Kwasta Rika"
+ },
+ "QA": {
+ "name": "Kwatar"
+ },
+ "KW": {
+ "name": "Kwiyat"
+ },
+ "CU": {
+ "name": "Kyuba"
+ },
+ "SA": {
+ "name": "Ƙasar Makka"
+ },
+ "LB": {
+ "name": "Labanan"
+ },
+ "LR": {
+ "name": "Laberiya"
+ },
+ "LV": {
+ "name": "latibiya"
+ },
+ "LA": {
+ "name": "Lawas"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Licansitan"
+ },
+ "LT": {
+ "name": "Lituweniya"
+ },
+ "LU": {
+ "name": "Lukusambur"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MX": {
+ "name": "Makasiko"
+ },
+ "MY": {
+ "name": "Malaisiya"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldibi"
+ },
+ "MD": {
+ "name": "Maldoba"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MN": {
+ "name": "Mangoliya"
+ },
+ "MS": {
+ "name": "Manserati"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "EG": {
+ "name": "Masar, Misira"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayoti"
+ },
+ "FM": {
+ "name": "Mikuronesiya"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MR": {
+ "name": "Moritaniya"
+ },
+ "MU": {
+ "name": "Moritus"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Najeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nefal"
+ },
+ "NE": {
+ "name": "Nijar"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nuzilan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AU": {
+ "name": "Ostareliya"
+ },
+ "AT": {
+ "name": "Ostiriya"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palasɗinu"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa Nugini"
+ },
+ "PY": {
+ "name": "Paragai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitakarin"
+ },
+ "PL": {
+ "name": "Polan"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RU": {
+ "name": "Rasha"
+ },
+ "RE": {
+ "name": "Rawuniyan"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SC": {
+ "name": "Saishal"
+ },
+ "SL": {
+ "name": "Salewo"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa Ta Amurka"
+ },
+ "VC": {
+ "name": "San Binsan Da Girnadin"
+ },
+ "SH": {
+ "name": "San Helena"
+ },
+ "KN": {
+ "name": "San Kiti Da Nebis"
+ },
+ "LC": {
+ "name": "San Lusiya"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "PM": {
+ "name": "San Piyar Da Mikelan"
+ },
+ "ST": {
+ "name": "Sawo Tome Da Paransip"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CY": {
+ "name": "Sifurus"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SN": {
+ "name": "Sinigal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipen"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SK": {
+ "name": "Sulobakiya"
+ },
+ "SI": {
+ "name": "Sulobeniya"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Suwazilan"
+ },
+ "SE": {
+ "name": "Suwedan"
+ },
+ "CH": {
+ "name": "Suwizalan"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SY": {
+ "name": "Sham, Siriya"
+ },
+ "TH": {
+ "name": "Tailan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TK": {
+ "name": "Takelau"
+ },
+ "TO": {
+ "name": "Tanga"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TL": {
+ "name": "Timor Ta Gabas"
+ },
+ "TT": {
+ "name": "Tirinidad Da Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tubalu"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TC": {
+ "name": "Turkis Da Tsibiran Kaikwas"
+ },
+ "TR": {
+ "name": "Turkiyya"
+ },
+ "TM": {
+ "name": "Turkumenistan"
+ },
+ "VI": {
+ "name": "Tsibiran Birjin Ta Amurka"
+ },
+ "FK": {
+ "name": "Tsibiran Falkilan"
+ },
+ "KY": {
+ "name": "Tsibiran Kaiman"
+ },
+ "CV": {
+ "name": "Tsibiran Kap Barde"
+ },
+ "CK": {
+ "name": "Tsibiran Kuku"
+ },
+ "MP": {
+ "name": "Tsibiran Mariyana Na Arewa"
+ },
+ "MH": {
+ "name": "Tsibiran Marshal"
+ },
+ "SB": {
+ "name": "Tsibiran Salaman"
+ },
+ "VG": {
+ "name": "Tsibirin Birjin Na Birtaniya"
+ },
+ "NF": {
+ "name": "Tsibirin Narfalk"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UZ": {
+ "name": "Uzubekistan"
+ },
+ "WF": {
+ "name": "Walis Da Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yamal"
+ },
+ "IO": {
+ "name": "Yankin Birtaniya Na Tekun Indiya"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukaran"
+ },
+ "UY": {
+ "name": "Yurugai"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabuwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/he.json b/library/intl/resources/country/he.json
new file mode 100644
index 000000000..bf9160592
--- /dev/null
+++ b/library/intl/resources/country/he.json
@@ -0,0 +1,761 @@
+{
+ "UG": {
+ "name": "אוגנדה"
+ },
+ "UZ": {
+ "name": "אוזבקיסטן"
+ },
+ "AT": {
+ "name": "אוסטריה"
+ },
+ "AU": {
+ "name": "אוסטרליה"
+ },
+ "UA": {
+ "name": "אוקראינה"
+ },
+ "UY": {
+ "name": "אורוגוואי"
+ },
+ "AZ": {
+ "name": "אזרבייג׳ן"
+ },
+ "CX": {
+ "name": "אי חג המולד"
+ },
+ "AE": {
+ "name": "איחוד האמירויות הערביות"
+ },
+ "IT": {
+ "name": "איטליה"
+ },
+ "AX": {
+ "name": "איי אולנד"
+ },
+ "BS": {
+ "name": "איי בהאמה"
+ },
+ "VI": {
+ "name": "איי הבתולה האמריקניים"
+ },
+ "VG": {
+ "name": "איי הבתולה הבריטיים"
+ },
+ "WF": {
+ "name": "איי ווליס ופוטונה"
+ },
+ "TC": {
+ "name": "איי טורקס וקאיקוס"
+ },
+ "MP": {
+ "name": "איי מריאנה הצפוניים"
+ },
+ "MH": {
+ "name": "איי מרשל"
+ },
+ "NF": {
+ "name": "איי נורפוק"
+ },
+ "SC": {
+ "name": "איי סיישל"
+ },
+ "FO": {
+ "name": "איי פארו"
+ },
+ "FK": {
+ "name": "איי פוקלנד"
+ },
+ "PN": {
+ "name": "איי פיטקרן"
+ },
+ "CK": {
+ "name": "איי קוק"
+ },
+ "CC": {
+ "name": "איי קוקוס (קילינג)"
+ },
+ "KY": {
+ "name": "איי קיימן"
+ },
+ "SB": {
+ "name": "איי שלמה"
+ },
+ "UM": {
+ "name": "איים לחוף ארצות הברית"
+ },
+ "ID": {
+ "name": "אינדונזיה"
+ },
+ "IS": {
+ "name": "איסלנד"
+ },
+ "IR": {
+ "name": "איראן"
+ },
+ "IE": {
+ "name": "אירלנד"
+ },
+ "SV": {
+ "name": "אל סלבדור"
+ },
+ "AL": {
+ "name": "אלבניה"
+ },
+ "DZ": {
+ "name": "אלג׳יריה"
+ },
+ "AO": {
+ "name": "אנגולה"
+ },
+ "AI": {
+ "name": "אנגילה"
+ },
+ "AD": {
+ "name": "אנדורה"
+ },
+ "AQ": {
+ "name": "אנטארקטיקה"
+ },
+ "AG": {
+ "name": "אנטיגואה וברבודה"
+ },
+ "EE": {
+ "name": "אסטוניה"
+ },
+ "AF": {
+ "name": "אפגניסטן"
+ },
+ "EC": {
+ "name": "אקוודור"
+ },
+ "AR": {
+ "name": "ארגנטינה"
+ },
+ "AW": {
+ "name": "ארובה"
+ },
+ "ER": {
+ "name": "אריתריאה"
+ },
+ "AM": {
+ "name": "ארמניה"
+ },
+ "US": {
+ "name": "ארצות הברית"
+ },
+ "ET": {
+ "name": "אתיופיה"
+ },
+ "BT": {
+ "name": "בהוטן"
+ },
+ "BW": {
+ "name": "בוטסוואנה"
+ },
+ "BG": {
+ "name": "בולגריה"
+ },
+ "BO": {
+ "name": "בוליביה"
+ },
+ "BA": {
+ "name": "בוסניה והרצגובינה"
+ },
+ "BI": {
+ "name": "בורונדי"
+ },
+ "BF": {
+ "name": "בורקינה פאסו"
+ },
+ "BH": {
+ "name": "בחריין"
+ },
+ "BY": {
+ "name": "בלארוס"
+ },
+ "BE": {
+ "name": "בלגיה"
+ },
+ "BZ": {
+ "name": "בליז"
+ },
+ "BD": {
+ "name": "בנגלדש"
+ },
+ "BJ": {
+ "name": "בנין"
+ },
+ "BB": {
+ "name": "ברבדוס"
+ },
+ "BN": {
+ "name": "ברוניי"
+ },
+ "BR": {
+ "name": "ברזיל"
+ },
+ "BM": {
+ "name": "ברמודה"
+ },
+ "GS": {
+ "name": "ג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומיים"
+ },
+ "DJ": {
+ "name": "ג׳יבוטי"
+ },
+ "JM": {
+ "name": "ג׳מייקה"
+ },
+ "JE": {
+ "name": "ג׳רסי"
+ },
+ "GA": {
+ "name": "גאבון"
+ },
+ "GE": {
+ "name": "גאורגיה"
+ },
+ "GH": {
+ "name": "גאנה"
+ },
+ "GT": {
+ "name": "גואטמלה"
+ },
+ "GU": {
+ "name": "גואם"
+ },
+ "GP": {
+ "name": "גוואדלופ"
+ },
+ "GY": {
+ "name": "גיאנה"
+ },
+ "GF": {
+ "name": "גיאנה הצרפתית"
+ },
+ "GI": {
+ "name": "גיברלטר"
+ },
+ "GN": {
+ "name": "גיניאה"
+ },
+ "GQ": {
+ "name": "גיניאה המשוונית"
+ },
+ "GW": {
+ "name": "גיניאה-ביסאו"
+ },
+ "GM": {
+ "name": "גמביה"
+ },
+ "GL": {
+ "name": "גרינלנד"
+ },
+ "DE": {
+ "name": "גרמניה"
+ },
+ "GD": {
+ "name": "גרנדה"
+ },
+ "GG": {
+ "name": "גרנסי"
+ },
+ "DM": {
+ "name": "דומיניקה"
+ },
+ "DG": {
+ "name": "דייגו גרסיה"
+ },
+ "DK": {
+ "name": "דנמרק"
+ },
+ "ZA": {
+ "name": "דרום אפריקה"
+ },
+ "SS": {
+ "name": "דרום סודן"
+ },
+ "AC": {
+ "name": "האי אסנשן"
+ },
+ "IM": {
+ "name": "האי מאן"
+ },
+ "HT": {
+ "name": "האיטי"
+ },
+ "MV": {
+ "name": "האיים המלדיביים"
+ },
+ "IC": {
+ "name": "האיים הקנריים"
+ },
+ "BQ": {
+ "name": "האיים הקריביים ההולנדיים"
+ },
+ "IN": {
+ "name": "הודו"
+ },
+ "VA": {
+ "name": "הוותיקן"
+ },
+ "NL": {
+ "name": "הולנד"
+ },
+ "HK": {
+ "name": "הונג קונג - מחוז מנהלי מיוחד של סין"
+ },
+ "HU": {
+ "name": "הונגריה"
+ },
+ "HN": {
+ "name": "הונדורס"
+ },
+ "GB": {
+ "name": "הממלכה המאוחדת"
+ },
+ "DO": {
+ "name": "הרפובליקה הדומיניקנית"
+ },
+ "CF": {
+ "name": "הרפובליקה של מרכז אפריקה"
+ },
+ "PS": {
+ "name": "השטחים הפלסטיניים"
+ },
+ "VN": {
+ "name": "וייטנאם"
+ },
+ "VU": {
+ "name": "ונואטו"
+ },
+ "VE": {
+ "name": "ונצואלה"
+ },
+ "ZW": {
+ "name": "זימבאבווה"
+ },
+ "ZM": {
+ "name": "זמביה"
+ },
+ "CI": {
+ "name": "חוף השנהב"
+ },
+ "TJ": {
+ "name": "טג׳יקיסטן"
+ },
+ "TV": {
+ "name": "טובלו"
+ },
+ "TG": {
+ "name": "טוגו"
+ },
+ "TO": {
+ "name": "טונגה"
+ },
+ "TK": {
+ "name": "טוקלאו"
+ },
+ "TR": {
+ "name": "טורקיה"
+ },
+ "TM": {
+ "name": "טורקמניסטן"
+ },
+ "TW": {
+ "name": "טייוואן"
+ },
+ "TL": {
+ "name": "טימור לסטה"
+ },
+ "TZ": {
+ "name": "טנזניה"
+ },
+ "IO": {
+ "name": "טריטוריה בריטית באוקיאנוס ההודי"
+ },
+ "TF": {
+ "name": "טריטוריות דרומיות של צרפת"
+ },
+ "TT": {
+ "name": "טרינידד וטובגו"
+ },
+ "TA": {
+ "name": "טריסטן דה קונה"
+ },
+ "GR": {
+ "name": "יוון"
+ },
+ "JP": {
+ "name": "יפן"
+ },
+ "JO": {
+ "name": "ירדן"
+ },
+ "IL": {
+ "name": "ישראל"
+ },
+ "KW": {
+ "name": "כווית"
+ },
+ "CV": {
+ "name": "כף ורדה"
+ },
+ "LA": {
+ "name": "לאוס"
+ },
+ "LB": {
+ "name": "לבנון"
+ },
+ "LY": {
+ "name": "לוב"
+ },
+ "LU": {
+ "name": "לוקסמבורג"
+ },
+ "LV": {
+ "name": "לטביה"
+ },
+ "LR": {
+ "name": "ליבריה"
+ },
+ "LT": {
+ "name": "ליטא"
+ },
+ "LI": {
+ "name": "ליכטנשטיין"
+ },
+ "LS": {
+ "name": "לסוטו"
+ },
+ "MR": {
+ "name": "מאוריטניה"
+ },
+ "MU": {
+ "name": "מאוריציוס"
+ },
+ "YT": {
+ "name": "מאיוט"
+ },
+ "ML": {
+ "name": "מאלי"
+ },
+ "MG": {
+ "name": "מדגסקר"
+ },
+ "MZ": {
+ "name": "מוזמביק"
+ },
+ "MD": {
+ "name": "מולדובה"
+ },
+ "MN": {
+ "name": "מונגוליה"
+ },
+ "ME": {
+ "name": "מונטנגרו"
+ },
+ "MS": {
+ "name": "מונסראט"
+ },
+ "MC": {
+ "name": "מונקו"
+ },
+ "MM": {
+ "name": "מיאנמאר (בורמה)‎"
+ },
+ "FM": {
+ "name": "מיקרונזיה"
+ },
+ "MW": {
+ "name": "מלאווי"
+ },
+ "MY": {
+ "name": "מלזיה"
+ },
+ "MT": {
+ "name": "מלטה"
+ },
+ "EG": {
+ "name": "מצרים"
+ },
+ "MO": {
+ "name": "מקאו - מחוז מנהלי מיוחד של סין"
+ },
+ "MK": {
+ "name": "מקדוניה"
+ },
+ "MX": {
+ "name": "מקסיקו"
+ },
+ "MA": {
+ "name": "מרוקו"
+ },
+ "MQ": {
+ "name": "מרטיניק"
+ },
+ "NR": {
+ "name": "נאורו"
+ },
+ "NO": {
+ "name": "נורווגיה"
+ },
+ "NG": {
+ "name": "ניגריה"
+ },
+ "NZ": {
+ "name": "ניו זילנד"
+ },
+ "NU": {
+ "name": "ניווה"
+ },
+ "NE": {
+ "name": "ניז׳ר"
+ },
+ "NI": {
+ "name": "ניקרגואה"
+ },
+ "NA": {
+ "name": "נמיביה"
+ },
+ "NP": {
+ "name": "נפאל"
+ },
+ "ST": {
+ "name": "סאו טומה ופרינסיפה"
+ },
+ "EA": {
+ "name": "סאוטה ומלייה"
+ },
+ "EH": {
+ "name": "סהרה המערבית"
+ },
+ "SD": {
+ "name": "סודן"
+ },
+ "SZ": {
+ "name": "סווזילנד"
+ },
+ "SJ": {
+ "name": "סוולבארד ויאן מאיין"
+ },
+ "SO": {
+ "name": "סומליה"
+ },
+ "SY": {
+ "name": "סוריה"
+ },
+ "SR": {
+ "name": "סורינם"
+ },
+ "SL": {
+ "name": "סיירה לאונה"
+ },
+ "CN": {
+ "name": "סין"
+ },
+ "SG": {
+ "name": "סינגפור"
+ },
+ "SX": {
+ "name": "סינט מארטן"
+ },
+ "SI": {
+ "name": "סלובניה"
+ },
+ "SK": {
+ "name": "סלובקיה"
+ },
+ "WS": {
+ "name": "סמואה"
+ },
+ "AS": {
+ "name": "סמואה האמריקנית"
+ },
+ "SM": {
+ "name": "סן מרינו"
+ },
+ "SN": {
+ "name": "סנגל"
+ },
+ "BL": {
+ "name": "סנט ברתולומיאו"
+ },
+ "SH": {
+ "name": "סנט הלנה"
+ },
+ "VC": {
+ "name": "סנט וינסנט והגרנדינים"
+ },
+ "LC": {
+ "name": "סנט לוסיה"
+ },
+ "MF": {
+ "name": "סנט מרטין"
+ },
+ "PM": {
+ "name": "סנט פייר ומיקלון"
+ },
+ "KN": {
+ "name": "סנט קיטס ונוויס"
+ },
+ "ES": {
+ "name": "ספרד"
+ },
+ "RS": {
+ "name": "סרביה"
+ },
+ "LK": {
+ "name": "סרי לנקה"
+ },
+ "OM": {
+ "name": "עומאן"
+ },
+ "IQ": {
+ "name": "עיראק"
+ },
+ "SA": {
+ "name": "ערב הסעודית"
+ },
+ "PW": {
+ "name": "פאלאו"
+ },
+ "PL": {
+ "name": "פולין"
+ },
+ "PF": {
+ "name": "פולינזיה הצרפתית"
+ },
+ "PR": {
+ "name": "פורטו ריקו"
+ },
+ "PT": {
+ "name": "פורטוגל"
+ },
+ "FJ": {
+ "name": "פיג׳י"
+ },
+ "PH": {
+ "name": "פיליפינים"
+ },
+ "FI": {
+ "name": "פינלנד"
+ },
+ "PA": {
+ "name": "פנמה"
+ },
+ "PG": {
+ "name": "פפואה גיניאה החדשה"
+ },
+ "PK": {
+ "name": "פקיסטן"
+ },
+ "PY": {
+ "name": "פרגוואי"
+ },
+ "PE": {
+ "name": "פרו"
+ },
+ "TD": {
+ "name": "צ׳אד"
+ },
+ "CL": {
+ "name": "צ׳ילה"
+ },
+ "CZ": {
+ "name": "צ׳כיה"
+ },
+ "FR": {
+ "name": "צרפת"
+ },
+ "CU": {
+ "name": "קובה"
+ },
+ "CO": {
+ "name": "קולומביה"
+ },
+ "KM": {
+ "name": "קומורוס"
+ },
+ "CG": {
+ "name": "קונגו - ברזאויל"
+ },
+ "CD": {
+ "name": "קונגו - קינשאסה"
+ },
+ "XK": {
+ "name": "קוסובו"
+ },
+ "CR": {
+ "name": "קוסטה ריקה"
+ },
+ "CW": {
+ "name": "קוראסאו"
+ },
+ "KR": {
+ "name": "קוריאה הדרומית"
+ },
+ "KP": {
+ "name": "קוריאה הצפונית"
+ },
+ "KZ": {
+ "name": "קזחסטן"
+ },
+ "QA": {
+ "name": "קטאר"
+ },
+ "KG": {
+ "name": "קירגיזסטן"
+ },
+ "KI": {
+ "name": "קיריבאטי"
+ },
+ "NC": {
+ "name": "קלדוניה החדשה"
+ },
+ "KH": {
+ "name": "קמבודיה"
+ },
+ "CM": {
+ "name": "קמרון"
+ },
+ "CA": {
+ "name": "קנדה"
+ },
+ "KE": {
+ "name": "קניה"
+ },
+ "CY": {
+ "name": "קפריסין"
+ },
+ "HR": {
+ "name": "קרואטיה"
+ },
+ "RE": {
+ "name": "ראוניון"
+ },
+ "RW": {
+ "name": "רואנדה"
+ },
+ "RO": {
+ "name": "רומניה"
+ },
+ "RU": {
+ "name": "רוסיה"
+ },
+ "SE": {
+ "name": "שוודיה"
+ },
+ "CH": {
+ "name": "שווייץ"
+ },
+ "TH": {
+ "name": "תאילנד"
+ },
+ "TN": {
+ "name": "תוניסיה"
+ },
+ "YE": {
+ "name": "תימן"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hi.json b/library/intl/resources/country/hi.json
new file mode 100644
index 000000000..1e9ff1e75
--- /dev/null
+++ b/library/intl/resources/country/hi.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AQ": {
+ "name": "अंटार्कटिका"
+ },
+ "AZ": {
+ "name": "अज़रबैजान"
+ },
+ "AF": {
+ "name": "अफ़गानिस्तान"
+ },
+ "AS": {
+ "name": "अमेरिकी समोआ"
+ },
+ "AW": {
+ "name": "अरूबा"
+ },
+ "AR": {
+ "name": "अर्जेंटीना"
+ },
+ "SV": {
+ "name": "अल सल्वाडोर"
+ },
+ "DZ": {
+ "name": "अल्जीरिया"
+ },
+ "AL": {
+ "name": "अल्बानिया"
+ },
+ "AC": {
+ "name": "असेंशन द्वीप"
+ },
+ "IM": {
+ "name": "आइल ऑफ़ मैन"
+ },
+ "IS": {
+ "name": "आइसलैंड"
+ },
+ "IE": {
+ "name": "आयरलैंड"
+ },
+ "AM": {
+ "name": "आर्मेनिया"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "EC": {
+ "name": "इक्वाडोर"
+ },
+ "GQ": {
+ "name": "इक्वेटोरियल गिनी"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ET": {
+ "name": "इथियोपिया"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "ER": {
+ "name": "इरिट्रिया"
+ },
+ "IL": {
+ "name": "इसराइल"
+ },
+ "IR": {
+ "name": "ईरान"
+ },
+ "UZ": {
+ "name": "उज़्बेकिस्तान"
+ },
+ "KP": {
+ "name": "उत्तर कोरिया"
+ },
+ "MP": {
+ "name": "उत्तरी मारियाना द्वीपसमूह"
+ },
+ "UY": {
+ "name": "उरूग्वे"
+ },
+ "AI": {
+ "name": "एंग्विला"
+ },
+ "AG": {
+ "name": "एंटिगुआ और बरबुडा"
+ },
+ "AD": {
+ "name": "एंडोरा"
+ },
+ "AX": {
+ "name": "एलैंड द्वीपसमूह"
+ },
+ "EE": {
+ "name": "एस्टोनिया"
+ },
+ "AT": {
+ "name": "ऑस्ट्रिया"
+ },
+ "AU": {
+ "name": "ऑस्ट्रेलिया"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KH": {
+ "name": "कंबोडिया"
+ },
+ "KZ": {
+ "name": "कज़ाखस्तान"
+ },
+ "QA": {
+ "name": "क़तर"
+ },
+ "CA": {
+ "name": "कनाडा"
+ },
+ "CD": {
+ "name": "कांगो - किंशासा"
+ },
+ "CG": {
+ "name": "कांगो – ब्राज़ाविल"
+ },
+ "KI": {
+ "name": "किरिबाती"
+ },
+ "KG": {
+ "name": "किर्गिज़स्तान"
+ },
+ "CK": {
+ "name": "कुक द्वीपसमूह"
+ },
+ "KW": {
+ "name": "कुवैत"
+ },
+ "KE": {
+ "name": "केन्या"
+ },
+ "CV": {
+ "name": "केप वर्ड"
+ },
+ "KY": {
+ "name": "केमैन द्वीपसमूह"
+ },
+ "IC": {
+ "name": "कैनेरी द्वीपसमूह"
+ },
+ "CM": {
+ "name": "कैमरून"
+ },
+ "BQ": {
+ "name": "कैरिबियन नीदरलैंड"
+ },
+ "CC": {
+ "name": "कोकोस (कीलिंग) द्वीपसमूह"
+ },
+ "CI": {
+ "name": "कोट डी आइवर"
+ },
+ "KM": {
+ "name": "कोमोरोस"
+ },
+ "CO": {
+ "name": "कोलंबिया"
+ },
+ "XK": {
+ "name": "कोसोवो"
+ },
+ "CR": {
+ "name": "कोस्टारिका"
+ },
+ "CU": {
+ "name": "क्यूबा"
+ },
+ "CW": {
+ "name": "क्यूरासाओ"
+ },
+ "CX": {
+ "name": "क्रिसमस द्वीप"
+ },
+ "HR": {
+ "name": "क्रोएशिया"
+ },
+ "GY": {
+ "name": "गयाना"
+ },
+ "GG": {
+ "name": "गर्नसी"
+ },
+ "GM": {
+ "name": "गाम्बिया"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गुआम"
+ },
+ "GA": {
+ "name": "गैबॉन"
+ },
+ "GL": {
+ "name": "ग्रीनलैंड"
+ },
+ "GD": {
+ "name": "ग्रेनाडा"
+ },
+ "GT": {
+ "name": "ग्वाटेमाला"
+ },
+ "GP": {
+ "name": "ग्वाडेलूप"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणराज्य"
+ },
+ "JM": {
+ "name": "जमैका"
+ },
+ "DE": {
+ "name": "जर्मनी"
+ },
+ "JE": {
+ "name": "जर्सी"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "ज़ाम्बिया"
+ },
+ "DJ": {
+ "name": "जिबूती"
+ },
+ "GI": {
+ "name": "जिब्राल्टर"
+ },
+ "ZW": {
+ "name": "ज़िम्बाब्वे"
+ },
+ "GE": {
+ "name": "जॉर्जिया"
+ },
+ "JO": {
+ "name": "जॉर्डन"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "ट्यूनीशिया"
+ },
+ "DG": {
+ "name": "डिएगो गार्सिया"
+ },
+ "DK": {
+ "name": "डेनमार्क"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणराज्य"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TZ": {
+ "name": "तंज़ानिया"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिस्तान"
+ },
+ "TL": {
+ "name": "तिमोर-लेस्त"
+ },
+ "TC": {
+ "name": "तुर्क और कैकोज़ द्वीपसमूह"
+ },
+ "TM": {
+ "name": "तुर्कमेनिस्तान"
+ },
+ "TR": {
+ "name": "तुर्की"
+ },
+ "TV": {
+ "name": "तुवालू"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "त्रिनिदाद और टोबैगो"
+ },
+ "TA": {
+ "name": "त्रिस्टान डा कुना"
+ },
+ "TH": {
+ "name": "थाईलैंड"
+ },
+ "ZA": {
+ "name": "दक्षिण अफ़्रीका"
+ },
+ "KR": {
+ "name": "दक्षिण कोरिया"
+ },
+ "GS": {
+ "name": "दक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूह"
+ },
+ "SS": {
+ "name": "दक्षिण सूडान"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NG": {
+ "name": "नाइजीरिया"
+ },
+ "NR": {
+ "name": "नाउरु"
+ },
+ "NA": {
+ "name": "नामीबिया"
+ },
+ "NI": {
+ "name": "निकारागुआ"
+ },
+ "NL": {
+ "name": "नीदरलैंड"
+ },
+ "NU": {
+ "name": "नीयू"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नॉरफ़ॉक द्वीप"
+ },
+ "NO": {
+ "name": "नॉर्वे"
+ },
+ "NC": {
+ "name": "न्यू कैलेडोनिया"
+ },
+ "NZ": {
+ "name": "न्यूज़ीलैंड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पश्चिमी सहारा"
+ },
+ "PK": {
+ "name": "पाकिस्तान"
+ },
+ "PG": {
+ "name": "पापुआ न्यू गिनी"
+ },
+ "PN": {
+ "name": "पिटकैर्न द्वीपसमूह"
+ },
+ "PT": {
+ "name": "पुर्तगाल"
+ },
+ "PY": {
+ "name": "पेराग्वे"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PR": {
+ "name": "पोर्टो रिको"
+ },
+ "PL": {
+ "name": "पोलैंड"
+ },
+ "FJ": {
+ "name": "फ़िजी"
+ },
+ "FI": {
+ "name": "फ़िनलैंड"
+ },
+ "PH": {
+ "name": "फ़िलिपींस"
+ },
+ "PS": {
+ "name": "फ़िलिस्तीनी क्षेत्र"
+ },
+ "FO": {
+ "name": "फ़ेरो द्वीपसमूह"
+ },
+ "FK": {
+ "name": "फ़ॉकलैंड द्वीपसमूह"
+ },
+ "FR": {
+ "name": "फ़्रांस"
+ },
+ "TF": {
+ "name": "फ़्रांसीसी दक्षिणी क्षेत्र"
+ },
+ "GF": {
+ "name": "फ़्रेंच गयाना"
+ },
+ "PF": {
+ "name": "फ़्रेंच पोलिनेशिया"
+ },
+ "BM": {
+ "name": "बरमूडा"
+ },
+ "BH": {
+ "name": "बहरीन"
+ },
+ "BS": {
+ "name": "बहामास"
+ },
+ "BD": {
+ "name": "बांग्लादेश"
+ },
+ "BB": {
+ "name": "बारबाडोस"
+ },
+ "BI": {
+ "name": "बुरुंडी"
+ },
+ "BF": {
+ "name": "बुर्किना फ़ासो"
+ },
+ "BG": {
+ "name": "बुल्गारिया"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलीज़"
+ },
+ "BE": {
+ "name": "बेल्जियम"
+ },
+ "BW": {
+ "name": "बोत्स्वाना"
+ },
+ "BO": {
+ "name": "बोलीविया"
+ },
+ "BA": {
+ "name": "बोस्निया और हर्ज़ेगोविना"
+ },
+ "BR": {
+ "name": "ब्राज़ील"
+ },
+ "VG": {
+ "name": "ब्रिटिश वर्जिन द्वीपसमूह"
+ },
+ "IO": {
+ "name": "ब्रिटिश हिंद महासागरीय क्षेत्र"
+ },
+ "BN": {
+ "name": "ब्रूनेई"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूटान"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MO": {
+ "name": "मकाऊ (विशेष प्रशासनिक क्षेत्र चीन)"
+ },
+ "CF": {
+ "name": "मध्य अफ़्रीकी गणराज्य"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "FM": {
+ "name": "माइक्रोनेशिया"
+ },
+ "YT": {
+ "name": "मायोते"
+ },
+ "MQ": {
+ "name": "मार्टीनिक"
+ },
+ "MH": {
+ "name": "मार्शल द्वीपसमूह"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "माल्टा"
+ },
+ "EG": {
+ "name": "मिस्र"
+ },
+ "MG": {
+ "name": "मेडागास्कर"
+ },
+ "MX": {
+ "name": "मैक्सिको"
+ },
+ "MK": {
+ "name": "मैसिडोनिया"
+ },
+ "MR": {
+ "name": "मॉरिटानिया"
+ },
+ "MU": {
+ "name": "मॉरिशस"
+ },
+ "MD": {
+ "name": "मॉल्डोवा"
+ },
+ "MS": {
+ "name": "मोंटसेरात"
+ },
+ "ME": {
+ "name": "मोंटेनेग्रो"
+ },
+ "MZ": {
+ "name": "मोज़ांबिक"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MA": {
+ "name": "मोरक्को"
+ },
+ "MM": {
+ "name": "म्यांमार (बर्मा)"
+ },
+ "YE": {
+ "name": "यमन"
+ },
+ "UG": {
+ "name": "युगांडा"
+ },
+ "UM": {
+ "name": "यू.एस. आउटलाइंग द्वीपसमूह"
+ },
+ "VI": {
+ "name": "यू.एस. वर्जिन द्वीपसमूह"
+ },
+ "UA": {
+ "name": "यूक्रेन"
+ },
+ "GB": {
+ "name": "यूनाइटेड किंगडम"
+ },
+ "GR": {
+ "name": "यूनान"
+ },
+ "RW": {
+ "name": "रवांडा"
+ },
+ "RE": {
+ "name": "रियूनियन"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लग्ज़मबर्ग"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लातविया"
+ },
+ "LI": {
+ "name": "लिचेंस्टीन"
+ },
+ "LT": {
+ "name": "लिथुआनिया"
+ },
+ "LY": {
+ "name": "लीबिया"
+ },
+ "LB": {
+ "name": "लेबनान"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "VU": {
+ "name": "वनुआतू"
+ },
+ "WF": {
+ "name": "वालिस और फ़्यूचूना"
+ },
+ "VN": {
+ "name": "वियतनाम"
+ },
+ "VA": {
+ "name": "वेटिकन सिटी"
+ },
+ "VE": {
+ "name": "वेनेज़ुएला"
+ },
+ "LK": {
+ "name": "श्रीलंका"
+ },
+ "AE": {
+ "name": "संयुक्त अरब अमीरात"
+ },
+ "US": {
+ "name": "संयुक्त राज्य"
+ },
+ "SA": {
+ "name": "सऊदी अरब"
+ },
+ "WS": {
+ "name": "समोआ"
+ },
+ "RS": {
+ "name": "सर्बिया"
+ },
+ "CY": {
+ "name": "साइप्रस"
+ },
+ "ST": {
+ "name": "साओ टोम और प्रिंसिपे"
+ },
+ "SG": {
+ "name": "सिंगापुर"
+ },
+ "SX": {
+ "name": "सिंट मार्टिन"
+ },
+ "SL": {
+ "name": "सिएरा लियोन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SD": {
+ "name": "सूडान"
+ },
+ "SR": {
+ "name": "सूरीनाम"
+ },
+ "KN": {
+ "name": "सेंट किट्स और नेविस"
+ },
+ "PM": {
+ "name": "सेंट पिएरे और मिक्वेलान"
+ },
+ "BL": {
+ "name": "सेंट बार्थेलेमी"
+ },
+ "MF": {
+ "name": "सेंट मार्टिन"
+ },
+ "LC": {
+ "name": "सेंट लूसिया"
+ },
+ "VC": {
+ "name": "सेंट विंसेंट और ग्रेनाडाइंस"
+ },
+ "SH": {
+ "name": "सेंट हेलेना"
+ },
+ "EA": {
+ "name": "सेउटा और मेलिला"
+ },
+ "SN": {
+ "name": "सेनेगल"
+ },
+ "SC": {
+ "name": "सेशेल्स"
+ },
+ "SM": {
+ "name": "सैन मेरीनो"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमन द्वीपसमूह"
+ },
+ "ES": {
+ "name": "स्पेन"
+ },
+ "SK": {
+ "name": "स्लोवाकिया"
+ },
+ "SI": {
+ "name": "स्लोवेनिया"
+ },
+ "SZ": {
+ "name": "स्वाज़ीलैंड"
+ },
+ "SJ": {
+ "name": "स्वालबार्ड और जान मायेन"
+ },
+ "CH": {
+ "name": "स्विट्ज़रलैंड"
+ },
+ "SE": {
+ "name": "स्वीडन"
+ },
+ "HU": {
+ "name": "हंगरी"
+ },
+ "HK": {
+ "name": "हाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)"
+ },
+ "HT": {
+ "name": "हैती"
+ },
+ "HN": {
+ "name": "होंडूरास"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hr.json b/library/intl/resources/country/hr.json
new file mode 100644
index 000000000..ce93f3fcf
--- /dev/null
+++ b/library/intl/resources/country/hr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "AS": {
+ "name": "Američka Samoa"
+ },
+ "VI": {
+ "name": "Američki Djevičanski Otoci"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorusija"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićni Otok"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanski Djevičanski Otoci"
+ },
+ "IO": {
+ "name": "Britanski Indijskooceanski Teritorij"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "CY": {
+ "name": "Cipar"
+ },
+ "CK": {
+ "name": "Cookovi Otoci"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CZ": {
+ "name": "Češka Republika"
+ },
+ "CL": {
+ "name": "Čile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorska Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FK": {
+ "name": "Falklandski Otoci"
+ },
+ "FO": {
+ "name": "Farski Otoci"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne i Antarktičke Zemlje"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grčka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GP": {
+ "name": "Guadalupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja Bisau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong PUP Kina"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "TL": {
+ "name": "Istočni Timor"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Georgija i Južni Sendvički Otoci"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "Južnoafrička Republika"
+ },
+ "KY": {
+ "name": "Kajmanski Otoci"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarski Otoci"
+ },
+ "BQ": {
+ "name": "Karipski otoci Nizozemske"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosovi (Keeling) Otoci"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komori"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "MO": {
+ "name": "Makao PUP Kina"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "UM": {
+ "name": "Mali udaljeni otoci SAD-a"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalovi Otoci"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemska"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "DE": {
+ "name": "Njemačka"
+ },
+ "CI": {
+ "name": "Obala Bjelokosti"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AX": {
+ "name": "Otoci Aland"
+ },
+ "PN": {
+ "name": "Otoci Pitcairn"
+ },
+ "TC": {
+ "name": "Otoci Turks i Caicos"
+ },
+ "AC": {
+ "name": "Otok Ascension"
+ },
+ "IM": {
+ "name": "Otok Man"
+ },
+ "NF": {
+ "name": "Otok Norfolk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsko Područje"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunjska"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SB": {
+ "name": "Salomonski Otoci"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene Američke Države"
+ },
+ "KP": {
+ "name": "Sjeverna Koreja"
+ },
+ "MP": {
+ "name": "Sjeverni Marijanski Otoci"
+ },
+ "SK": {
+ "name": "Slovačka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "CF": {
+ "name": "Srednjoafrička Republika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazi"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "LC": {
+ "name": "Sveta Lucija"
+ },
+ "VA": {
+ "name": "Sveta Stolica"
+ },
+ "BL": {
+ "name": "Sveti Bartolomej"
+ },
+ "KN": {
+ "name": "Sveti Kristofor i Nevis"
+ },
+ "MF": {
+ "name": "Sveti Martin"
+ },
+ "PM": {
+ "name": "Sveti Petar i Mikelon"
+ },
+ "ST": {
+ "name": "Sveti Toma i Princip"
+ },
+ "VC": {
+ "name": "Sveti Vincent i Grenadini"
+ },
+ "ES": {
+ "name": "Španjolska"
+ },
+ "LK": {
+ "name": "Šri Lanka"
+ },
+ "SE": {
+ "name": "Švedska"
+ },
+ "CH": {
+ "name": "Švicarska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "CV": {
+ "name": "Zelenortska Republika"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hsb.json b/library/intl/resources/country/hsb.json
new file mode 100644
index 000000000..75614ad74
--- /dev/null
+++ b/library/intl/resources/country/hsb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AL": {
+ "name": "Albanska"
+ },
+ "DZ": {
+ "name": "Algeriska"
+ },
+ "UM": {
+ "name": "Ameriska Oceaniska"
+ },
+ "AS": {
+ "name": "Ameriska Samoa"
+ },
+ "VI": {
+ "name": "Ameriske knježniske kupy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinska"
+ },
+ "AM": {
+ "name": "Armenska"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Awstralska"
+ },
+ "AT": {
+ "name": "Awstriska"
+ },
+ "AZ": {
+ "name": "Azerbajdźan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiska"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Běłoruska"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BG": {
+ "name": "Bołharska"
+ },
+ "BO": {
+ "name": "Boliwiska"
+ },
+ "BA": {
+ "name": "Bosniska a Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilska"
+ },
+ "VG": {
+ "name": "Britiske knježniske kupy"
+ },
+ "IO": {
+ "name": "Britiski teritorij w Indiskim oceanje"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CF": {
+ "name": "Centralnoafriska republika"
+ },
+ "CZ": {
+ "name": "Čěska republika"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chilska"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "HR": {
+ "name": "Chorwatska"
+ },
+ "CK": {
+ "name": "Cookowe kupy"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska republika"
+ },
+ "DJ": {
+ "name": "Dźibuti"
+ },
+ "EG": {
+ "name": "Egyptowska"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "GQ": {
+ "name": "Ekwatorialna Gineja"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estiska"
+ },
+ "ET": {
+ "name": "Etiopiska"
+ },
+ "FK": {
+ "name": "Falklandske kupy"
+ },
+ "FO": {
+ "name": "Färöske kupy"
+ },
+ "FJ": {
+ "name": "Fidźi"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francoska"
+ },
+ "GF": {
+ "name": "Francoska Guyana"
+ },
+ "PF": {
+ "name": "Francoska Polyneziska"
+ },
+ "TF": {
+ "name": "Francoski južny a antarktiski teritorij"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GE": {
+ "name": "Georgiska"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GW": {
+ "name": "Gineja-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grjekska"
+ },
+ "GL": {
+ "name": "Grönlandska"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "CX": {
+ "name": "Hodowna kupa"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indiska"
+ },
+ "ID": {
+ "name": "Indoneska"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandska"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italska"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japanska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniska"
+ },
+ "ZA": {
+ "name": "Južna Afrika (Republika)"
+ },
+ "GS": {
+ "name": "Južna Georgiska a Južne Sandwichowe kupy"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južny Sudan"
+ },
+ "KY": {
+ "name": "Kajmanske kupy"
+ },
+ "KH": {
+ "name": "Kambodźa"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariske kupy"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nižozemska"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosowe kupy"
+ },
+ "CO": {
+ "name": "Kolumbiska"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "TC": {
+ "name": "kupy Turks a Caicos"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letiska"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libyska"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litawska"
+ },
+ "LU": {
+ "name": "Luxemburgska"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Madźarska"
+ },
+ "MK": {
+ "name": "Makedonska"
+ },
+ "MY": {
+ "name": "Malajzija"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallowe kupy"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mawretanska"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneziska"
+ },
+ "MD": {
+ "name": "Moldawska"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolska"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Němska"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nižozemska"
+ },
+ "NF": {
+ "name": "Norfolkowa kupa"
+ },
+ "NO": {
+ "name": "Norwegska"
+ },
+ "NC": {
+ "name": "Nowa Kaledoniska"
+ },
+ "NZ": {
+ "name": "Nowoseelandska"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinski awtonomny teritorij"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa-Nowa Gineja"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnowe kupy"
+ },
+ "PL": {
+ "name": "Pólska"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunska"
+ },
+ "RU": {
+ "name": "Ruska"
+ },
+ "SB": {
+ "name": "Salomony"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Sawdi-Arabska"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbiska"
+ },
+ "KP": {
+ "name": "Sewjerna Koreja"
+ },
+ "MP": {
+ "name": "Sewjerne Mariany"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Słowakska"
+ },
+ "SI": {
+ "name": "Słowjenska"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "ES": {
+ "name": "Španiska"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts a Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent a Grenadiny"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziska"
+ },
+ "SE": {
+ "name": "Šwedska"
+ },
+ "CH": {
+ "name": "Šwicarska"
+ },
+ "SY": {
+ "name": "Syriska"
+ },
+ "TJ": {
+ "name": "Tadźikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TH": {
+ "name": "Thailandska"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneziska"
+ },
+ "TM": {
+ "name": "Turkmeniska"
+ },
+ "TR": {
+ "name": "Turkowska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanske město"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "HK": {
+ "name": "Wosebita zarjadniska cona Hongkong"
+ },
+ "MO": {
+ "name": "Wosebita zarjadniska cona Macao"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "AE": {
+ "name": "Zjednoćene arabske emiraty"
+ },
+ "GB": {
+ "name": "Zjednoćene kralestwo"
+ },
+ "US": {
+ "name": "Zjednoćene staty Ameriki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hu.json b/library/intl/resources/country/hu.json
new file mode 100644
index 000000000..f08b47017
--- /dev/null
+++ b/library/intl/resources/country/hu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganisztán"
+ },
+ "AX": {
+ "name": "Åland-szigetek"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algéria"
+ },
+ "UM": {
+ "name": "Amerikai Csendes-óceáni Szigetek"
+ },
+ "AS": {
+ "name": "Amerikai Szamoa"
+ },
+ "VI": {
+ "name": "Amerikai Virgin-szigetek"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktisz"
+ },
+ "AG": {
+ "name": "Antigua és Barbuda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension-sziget"
+ },
+ "AU": {
+ "name": "Ausztrália"
+ },
+ "AT": {
+ "name": "Ausztria"
+ },
+ "AZ": {
+ "name": "Azerbajdzsán"
+ },
+ "BS": {
+ "name": "Bahama-szigetek"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhután"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosznia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazília"
+ },
+ "IO": {
+ "name": "Brit Indiai-óceáni Terület"
+ },
+ "VG": {
+ "name": "Brit Virgin-szigetek"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta és Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CY": {
+ "name": "Ciprus"
+ },
+ "KM": {
+ "name": "Comore-szigetek"
+ },
+ "CK": {
+ "name": "Cook-szigetek"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Csád"
+ },
+ "CZ": {
+ "name": "Csehország"
+ },
+ "DK": {
+ "name": "Dánia"
+ },
+ "ZA": {
+ "name": "Dél-afrikai Köztársaság"
+ },
+ "KR": {
+ "name": "Dél-Korea"
+ },
+ "SS": {
+ "name": "Dél-Szudán"
+ },
+ "GS": {
+ "name": "Déli-Georgia és Déli-Sandwich-szigetek"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikai Köztársaság"
+ },
+ "DJ": {
+ "name": "Dzsibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Egyenlítői-Guinea"
+ },
+ "US": {
+ "name": "Egyesült Államok"
+ },
+ "AE": {
+ "name": "Egyesült Arab Emirátus"
+ },
+ "GB": {
+ "name": "Egyesült Királyság"
+ },
+ "EG": {
+ "name": "Egyiptom"
+ },
+ "CI": {
+ "name": "Elefántcsontpart"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "KP": {
+ "name": "Észak-Korea"
+ },
+ "MP": {
+ "name": "Északi Mariana-szigetek"
+ },
+ "EE": {
+ "name": "Észtország"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FK": {
+ "name": "Falkland-szigetek"
+ },
+ "BY": {
+ "name": "Fehéroroszország"
+ },
+ "FO": {
+ "name": "Feröer-szigetek"
+ },
+ "FJ": {
+ "name": "Fidzsi-szigetek"
+ },
+ "FI": {
+ "name": "Finnország"
+ },
+ "TF": {
+ "name": "Francia Déli Területek"
+ },
+ "GF": {
+ "name": "Francia Guyana"
+ },
+ "PF": {
+ "name": "Francia Polinézia"
+ },
+ "FR": {
+ "name": "Franciaország"
+ },
+ "PH": {
+ "name": "Fülöp-szigetek"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghána"
+ },
+ "GI": {
+ "name": "Gibraltár"
+ },
+ "GR": {
+ "name": "Görögország"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GE": {
+ "name": "Grúzia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "BQ": {
+ "name": "Holland Karib-térség"
+ },
+ "NL": {
+ "name": "Hollandia"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong SAR Kína"
+ },
+ "HR": {
+ "name": "Horvátország"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonézia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Írország"
+ },
+ "IS": {
+ "name": "Izland"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japán"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "KY": {
+ "name": "Kajmán-szigetek"
+ },
+ "KH": {
+ "name": "Kambodzsa"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanári-szigetek"
+ },
+ "CX": {
+ "name": "Karácsony-sziget"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahsztán"
+ },
+ "TL": {
+ "name": "Kelet-Timor"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kína"
+ },
+ "KG": {
+ "name": "Kirgizisztán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kókusz-szigetek"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "CG": {
+ "name": "Kongó - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongó - Kinshasa"
+ },
+ "XK": {
+ "name": "Koszovó"
+ },
+ "CF": {
+ "name": "Közép-afrikai Köztársaság"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvait"
+ },
+ "LA": {
+ "name": "Laosz"
+ },
+ "PL": {
+ "name": "Lengyelország"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettország"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litvánia"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagaszkár"
+ },
+ "HU": {
+ "name": "Magyarország"
+ },
+ "MO": {
+ "name": "Makaó SAR Kína"
+ },
+ "MY": {
+ "name": "Malajzia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldív-szigetek"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Man-sziget"
+ },
+ "MA": {
+ "name": "Marokkó"
+ },
+ "MH": {
+ "name": "Marshall-szigetek"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexikó"
+ },
+ "MM": {
+ "name": "Mianmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronézia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegró"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Németország"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk-sziget"
+ },
+ "NO": {
+ "name": "Norvégia"
+ },
+ "EH": {
+ "name": "Nyugat-Szahara"
+ },
+ "IT": {
+ "name": "Olaszország"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "RU": {
+ "name": "Oroszország"
+ },
+ "AM": {
+ "name": "Örményország"
+ },
+ "PK": {
+ "name": "Pakisztán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palesztin Terület"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Pápua Új-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn-szigetek"
+ },
+ "PT": {
+ "name": "Portugália"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "KN": {
+ "name": "Saint Kitts és Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre és Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent és a Grenadine-szigetek"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salamon-szigetek"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Lucia"
+ },
+ "ST": {
+ "name": "Sao Tomé és Príncipe"
+ },
+ "SC": {
+ "name": "Seychelle-szigetek"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Spanyolország"
+ },
+ "SJ": {
+ "name": "Spitzbergák és Jan Mayen-szigetek"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "CH": {
+ "name": "Svájc"
+ },
+ "SE": {
+ "name": "Svédország"
+ },
+ "WS": {
+ "name": "Szamoa"
+ },
+ "SA": {
+ "name": "Szaúd-Arábia"
+ },
+ "SN": {
+ "name": "Szenegál"
+ },
+ "SH": {
+ "name": "Szent Ilona"
+ },
+ "RS": {
+ "name": "Szerbia"
+ },
+ "SG": {
+ "name": "Szingapúr"
+ },
+ "SY": {
+ "name": "Szíria"
+ },
+ "SK": {
+ "name": "Szlovákia"
+ },
+ "SI": {
+ "name": "Szlovénia"
+ },
+ "SO": {
+ "name": "Szomália"
+ },
+ "SD": {
+ "name": "Szudán"
+ },
+ "SZ": {
+ "name": "Szváziföld"
+ },
+ "TJ": {
+ "name": "Tádzsikisztán"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TH": {
+ "name": "Thaiföld"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TR": {
+ "name": "Törökország"
+ },
+ "TT": {
+ "name": "Trinidad és Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunézia"
+ },
+ "TC": {
+ "name": "Turks- és Caicos-szigetek"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TM": {
+ "name": "Türkmenisztán"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "NC": {
+ "name": "Új-Kaledónia"
+ },
+ "NZ": {
+ "name": "Új-Zéland"
+ },
+ "UA": {
+ "name": "Ukrajna"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Üzbegisztán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis- és Futuna-szigetek"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CV": {
+ "name": "Zöld-foki Köztársaság"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hy.json b/library/intl/resources/country/hy.json
new file mode 100644
index 000000000..09401a166
--- /dev/null
+++ b/library/intl/resources/country/hy.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Ադրբեջան"
+ },
+ "AX": {
+ "name": "Ալանդյան կղզիներ"
+ },
+ "AL": {
+ "name": "Ալբանիա"
+ },
+ "DZ": {
+ "name": "Ալժիր"
+ },
+ "US": {
+ "name": "Ամերիկայի Միացյալ Նահանգներ"
+ },
+ "AS": {
+ "name": "Ամերիկյան Սամոա"
+ },
+ "VI": {
+ "name": "Ամերիկյան Վիրջինյան կղզիներ"
+ },
+ "AI": {
+ "name": "Անգիլիա"
+ },
+ "AO": {
+ "name": "Անգոլա"
+ },
+ "AD": {
+ "name": "Անդորա"
+ },
+ "AQ": {
+ "name": "Անտարկտիդա"
+ },
+ "AG": {
+ "name": "Անտիգուա և Բարբուդա"
+ },
+ "AU": {
+ "name": "Ավստրալիա"
+ },
+ "AT": {
+ "name": "Ավստրիա"
+ },
+ "AR": {
+ "name": "Արգենտինա"
+ },
+ "AW": {
+ "name": "Արուբա"
+ },
+ "UM": {
+ "name": "Արտաքին կղզիներ (ԱՄՆ)"
+ },
+ "EH": {
+ "name": "Արևմտյան Սահարա"
+ },
+ "AF": {
+ "name": "Աֆղանստան"
+ },
+ "BS": {
+ "name": "Բահամյան կղզիներ"
+ },
+ "BH": {
+ "name": "Բահրեյն"
+ },
+ "BD": {
+ "name": "Բանգլադեշ"
+ },
+ "BB": {
+ "name": "Բարբադոս"
+ },
+ "BY": {
+ "name": "Բելառուս"
+ },
+ "BE": {
+ "name": "Բելգիա"
+ },
+ "BZ": {
+ "name": "Բելիզ"
+ },
+ "BJ": {
+ "name": "Բենին"
+ },
+ "BM": {
+ "name": "Բերմուդյան կղզիներ"
+ },
+ "BO": {
+ "name": "Բոլիվիա"
+ },
+ "BA": {
+ "name": "Բոսնիա և Հերցեգովինա"
+ },
+ "BW": {
+ "name": "Բոտսվանա"
+ },
+ "BT": {
+ "name": "Բութան"
+ },
+ "BG": {
+ "name": "Բուլղարիա"
+ },
+ "BF": {
+ "name": "Բուրկինա Ֆասո"
+ },
+ "BI": {
+ "name": "Բուրունդի"
+ },
+ "BR": {
+ "name": "Բրազիլիա"
+ },
+ "VG": {
+ "name": "Բրիտանական Վիրջինյան կղզիներ"
+ },
+ "BN": {
+ "name": "Բրունեյ"
+ },
+ "GA": {
+ "name": "Գաբոն"
+ },
+ "GM": {
+ "name": "Գամբիա"
+ },
+ "GY": {
+ "name": "Գայանա"
+ },
+ "GH": {
+ "name": "Գանա"
+ },
+ "DE": {
+ "name": "Գերմանիա"
+ },
+ "GG": {
+ "name": "Գերնսի"
+ },
+ "GU": {
+ "name": "Գուամ"
+ },
+ "GP": {
+ "name": "Գվադելուպա"
+ },
+ "GT": {
+ "name": "Գվատեմալա"
+ },
+ "GN": {
+ "name": "Գվինեա"
+ },
+ "GW": {
+ "name": "Գվինեա-Բիսաու"
+ },
+ "GD": {
+ "name": "Գրենադա"
+ },
+ "GL": {
+ "name": "Գրենլանդիա"
+ },
+ "DK": {
+ "name": "Դանիա"
+ },
+ "DG": {
+ "name": "Դիեգո Գարսիա"
+ },
+ "DM": {
+ "name": "Դոմինիկա"
+ },
+ "DO": {
+ "name": "Դոմինիկյան Հանրապետություն"
+ },
+ "EG": {
+ "name": "Եգիպտոս"
+ },
+ "ET": {
+ "name": "Եթովպիա"
+ },
+ "YE": {
+ "name": "Եմեն"
+ },
+ "ZM": {
+ "name": "Զամբիա"
+ },
+ "ZW": {
+ "name": "Զիմբաբվե"
+ },
+ "EC": {
+ "name": "Էկվադոր"
+ },
+ "EE": {
+ "name": "Էստոնիա"
+ },
+ "ER": {
+ "name": "Էրիտրեա"
+ },
+ "TH": {
+ "name": "Թաիլանդ"
+ },
+ "TW": {
+ "name": "Թայվան"
+ },
+ "TL": {
+ "name": "Թիմոր-Լեստե"
+ },
+ "TN": {
+ "name": "Թունիս"
+ },
+ "TR": {
+ "name": "Թուրքիա"
+ },
+ "TM": {
+ "name": "Թուրքմենստան"
+ },
+ "ID": {
+ "name": "Ինդոնեզիա"
+ },
+ "IE": {
+ "name": "Իռլանդիա"
+ },
+ "IS": {
+ "name": "Իսլանդիա"
+ },
+ "ES": {
+ "name": "Իսպանիա"
+ },
+ "IL": {
+ "name": "Իսրայել"
+ },
+ "IT": {
+ "name": "Իտալիա"
+ },
+ "IR": {
+ "name": "Իրան"
+ },
+ "IQ": {
+ "name": "Իրաք"
+ },
+ "LA": {
+ "name": "Լաոս"
+ },
+ "LV": {
+ "name": "Լատվիա"
+ },
+ "PL": {
+ "name": "Լեհաստան"
+ },
+ "LS": {
+ "name": "Լեսոտո"
+ },
+ "LB": {
+ "name": "Լիբանան"
+ },
+ "LR": {
+ "name": "Լիբերիա"
+ },
+ "LY": {
+ "name": "Լիբիա"
+ },
+ "LI": {
+ "name": "Լիխտենշտեյն"
+ },
+ "LT": {
+ "name": "Լիտվա"
+ },
+ "LU": {
+ "name": "Լյուքսեմբուրգ"
+ },
+ "HR": {
+ "name": "Խորվաթիա"
+ },
+ "CX": {
+ "name": "Ծննդյան կղզի"
+ },
+ "CV": {
+ "name": "Կաբո Վերդե"
+ },
+ "KH": {
+ "name": "Կամբոջա"
+ },
+ "CM": {
+ "name": "Կամերուն"
+ },
+ "KY": {
+ "name": "Կայմանյան կղզիներ"
+ },
+ "CA": {
+ "name": "Կանադա"
+ },
+ "IC": {
+ "name": "Կանարյան կղզիներ"
+ },
+ "QA": {
+ "name": "Կատար"
+ },
+ "BQ": {
+ "name": "Կարիբյան Նիդերլանդներ"
+ },
+ "CF": {
+ "name": "Կենտրոնական Աֆրիկյան Հանրապետություն"
+ },
+ "CY": {
+ "name": "Կիպրոս"
+ },
+ "KI": {
+ "name": "Կիրիբատի"
+ },
+ "CW": {
+ "name": "Կյուրասաո"
+ },
+ "CO": {
+ "name": "Կոլումբիա"
+ },
+ "CC": {
+ "name": "Կոկոսյան (Քիլինգ) կղզիներ"
+ },
+ "KM": {
+ "name": "Կոմորյան կղզիներ"
+ },
+ "CG": {
+ "name": "Կոնգո - Բրազավիլ"
+ },
+ "CD": {
+ "name": "Կոնգո - Կինշասա"
+ },
+ "XK": {
+ "name": "Կոսովո"
+ },
+ "CR": {
+ "name": "Կոստա-Ռիկա"
+ },
+ "CU": {
+ "name": "Կուբա"
+ },
+ "CK": {
+ "name": "Կուկի կղզիներ"
+ },
+ "HT": {
+ "name": "Հաիթի"
+ },
+ "AC": {
+ "name": "Համբարձման կղզի"
+ },
+ "AM": {
+ "name": "Հայաստան"
+ },
+ "GQ": {
+ "name": "Հասարակածային Գվինեա"
+ },
+ "KR": {
+ "name": "Հարավային Կորեա"
+ },
+ "GS": {
+ "name": "Հարավային Ջորջիա և Հարավային Սենդվիչյան կղզիներ"
+ },
+ "SS": {
+ "name": "Հարավային Սուդան"
+ },
+ "ZA": {
+ "name": "Հարավաֆրիկյան Հանրապետություն"
+ },
+ "KP": {
+ "name": "Հյուսիսային Կորեա"
+ },
+ "MP": {
+ "name": "Հյուսիսային Մարիանյան կղզիներ"
+ },
+ "IO": {
+ "name": "Հնդկական Օվկիանոսում Բրիտանական Տարածք"
+ },
+ "IN": {
+ "name": "Հնդկաստան"
+ },
+ "HN": {
+ "name": "Հոնդուրաս"
+ },
+ "HK": {
+ "name": "Հոնկոնգի ՀՎՇ"
+ },
+ "JO": {
+ "name": "Հորդանան"
+ },
+ "GR": {
+ "name": "Հունաստան"
+ },
+ "HU": {
+ "name": "Հունգարիա"
+ },
+ "KZ": {
+ "name": "Ղազախստան"
+ },
+ "KG": {
+ "name": "Ղրղզստան"
+ },
+ "JP": {
+ "name": "Ճապոնիա"
+ },
+ "MG": {
+ "name": "Մադագասկար"
+ },
+ "MY": {
+ "name": "Մալայզիա"
+ },
+ "MW": {
+ "name": "Մալավի"
+ },
+ "MV": {
+ "name": "Մալդիվներ"
+ },
+ "MT": {
+ "name": "Մալթա"
+ },
+ "ML": {
+ "name": "Մալի"
+ },
+ "MK": {
+ "name": "Մակեդոնիա"
+ },
+ "YT": {
+ "name": "Մայոտ"
+ },
+ "MU": {
+ "name": "Մավրիկիոս"
+ },
+ "MR": {
+ "name": "Մավրիտանիա"
+ },
+ "MH": {
+ "name": "Մարշալյան կղզիներ"
+ },
+ "MA": {
+ "name": "Մարոկո"
+ },
+ "MQ": {
+ "name": "Մարտինիկա"
+ },
+ "IM": {
+ "name": "Մեն կղզի"
+ },
+ "MX": {
+ "name": "Մեքսիկա"
+ },
+ "AE": {
+ "name": "Միացյալ Արաբական Էմիրություններ"
+ },
+ "GB": {
+ "name": "Միացյալ Թագավորություն"
+ },
+ "FM": {
+ "name": "Միկրոնեզիա"
+ },
+ "MM": {
+ "name": "Մյանմա (Բիրմա)"
+ },
+ "MZ": {
+ "name": "Մոզամբիկ"
+ },
+ "MD": {
+ "name": "Մոլդովա"
+ },
+ "MC": {
+ "name": "Մոնակո"
+ },
+ "MN": {
+ "name": "Մոնղոլիա"
+ },
+ "MS": {
+ "name": "Մոնտսերատ"
+ },
+ "NA": {
+ "name": "Նամիբիա"
+ },
+ "NR": {
+ "name": "Նաուրու"
+ },
+ "NP": {
+ "name": "Նեպալ"
+ },
+ "NE": {
+ "name": "Նիգեր"
+ },
+ "NG": {
+ "name": "Նիգերիա"
+ },
+ "NL": {
+ "name": "Նիդերլանդեր"
+ },
+ "NI": {
+ "name": "Նիկարագուա"
+ },
+ "NU": {
+ "name": "Նիուե"
+ },
+ "NZ": {
+ "name": "Նոր Զելանդիա"
+ },
+ "NC": {
+ "name": "Նոր Կալեդոնիա"
+ },
+ "NO": {
+ "name": "Նորվեգիա"
+ },
+ "NF": {
+ "name": "Նորֆոլկ կղզի"
+ },
+ "SE": {
+ "name": "Շվեդիա"
+ },
+ "CH": {
+ "name": "Շվեյցարիա"
+ },
+ "LK": {
+ "name": "Շրի Լանկա"
+ },
+ "UG": {
+ "name": "Ուգանդա"
+ },
+ "UZ": {
+ "name": "Ուզբեկստան"
+ },
+ "UA": {
+ "name": "Ուկրաինա"
+ },
+ "WF": {
+ "name": "Ուոլիս և Ֆուտունա"
+ },
+ "UY": {
+ "name": "Ուրուգվայ"
+ },
+ "TD": {
+ "name": "Չադ"
+ },
+ "CZ": {
+ "name": "Չեխիա"
+ },
+ "ME": {
+ "name": "Չեռնոգորիա"
+ },
+ "CL": {
+ "name": "Չիլի"
+ },
+ "CN": {
+ "name": "Չինաստան"
+ },
+ "MO": {
+ "name": "Չինաստանի Մակաո ՀՎՇ"
+ },
+ "PW": {
+ "name": "Պալաու"
+ },
+ "PK": {
+ "name": "Պակիստան"
+ },
+ "PS": {
+ "name": "Պաղեստինյան տարածքներ"
+ },
+ "PA": {
+ "name": "Պանամա"
+ },
+ "PG": {
+ "name": "Պապուա Նոր Գվինեա"
+ },
+ "PY": {
+ "name": "Պարագվայ"
+ },
+ "PE": {
+ "name": "Պերու"
+ },
+ "PN": {
+ "name": "Պիտկեռն կղզիներ"
+ },
+ "PT": {
+ "name": "Պորտուգալիա"
+ },
+ "PR": {
+ "name": "Պուերտո Ռիկո"
+ },
+ "JM": {
+ "name": "Ջամայկա"
+ },
+ "JE": {
+ "name": "Ջերսի"
+ },
+ "DJ": {
+ "name": "Ջիբուտի"
+ },
+ "GI": {
+ "name": "Ջիբրալթար"
+ },
+ "RE": {
+ "name": "Ռեյունիոն"
+ },
+ "RW": {
+ "name": "Ռուանդա"
+ },
+ "RO": {
+ "name": "Ռումինիա"
+ },
+ "RU": {
+ "name": "Ռուսաստան"
+ },
+ "SV": {
+ "name": "Սալվադոր"
+ },
+ "WS": {
+ "name": "Սամոա"
+ },
+ "SM": {
+ "name": "Սան Մարինո"
+ },
+ "ST": {
+ "name": "Սան Տոմե և Պրինսիպի"
+ },
+ "SA": {
+ "name": "Սաուդյան Արաբիա"
+ },
+ "SC": {
+ "name": "Սեյշելյան կղզիներ"
+ },
+ "MF": {
+ "name": "Սեն Մարտեն"
+ },
+ "PM": {
+ "name": "Սեն Պիեր և Միկելոն"
+ },
+ "SN": {
+ "name": "Սենեգալ"
+ },
+ "LC": {
+ "name": "Սենթ Լյուսիա"
+ },
+ "VC": {
+ "name": "Սենթ Վիսենտ և Գրենադիններ"
+ },
+ "KN": {
+ "name": "Սենթ Քիթս և Նևիս"
+ },
+ "EA": {
+ "name": "Սեուտա և Մելիլյա"
+ },
+ "RS": {
+ "name": "Սերբիա"
+ },
+ "SG": {
+ "name": "Սինգապուր"
+ },
+ "SX": {
+ "name": "Սինտ Մարտեն"
+ },
+ "SY": {
+ "name": "Սիրիա"
+ },
+ "SK": {
+ "name": "Սլովակիա"
+ },
+ "SI": {
+ "name": "Սլովենիա"
+ },
+ "SL": {
+ "name": "Սյերա-Լեոնե"
+ },
+ "SB": {
+ "name": "Սողոմոնյան կղզիներ"
+ },
+ "SO": {
+ "name": "Սոմալի"
+ },
+ "SD": {
+ "name": "Սուդան"
+ },
+ "BL": {
+ "name": "Սուրբ Բարթողոմեոսի կղզի"
+ },
+ "SH": {
+ "name": "Սուրբ Հեղինեի կղզի"
+ },
+ "SR": {
+ "name": "Սուրինամ"
+ },
+ "SZ": {
+ "name": "Սվազիլենդ"
+ },
+ "SJ": {
+ "name": "Սվալբարդ և Յան-Մայեն"
+ },
+ "VU": {
+ "name": "Վանուատու"
+ },
+ "VA": {
+ "name": "Վատիկան քաղաք-պետություն"
+ },
+ "VE": {
+ "name": "Վենեսուելա"
+ },
+ "VN": {
+ "name": "Վիետնամ"
+ },
+ "GE": {
+ "name": "Վրաստան"
+ },
+ "TZ": {
+ "name": "Տանզանիա"
+ },
+ "TJ": {
+ "name": "Տաջիկստան"
+ },
+ "TC": {
+ "name": "Տերկս և Կայկոս կղզիներ"
+ },
+ "TG": {
+ "name": "Տոգո"
+ },
+ "TK": {
+ "name": "Տոկելաու"
+ },
+ "TO": {
+ "name": "Տոնգա"
+ },
+ "TV": {
+ "name": "Տուվալու"
+ },
+ "TT": {
+ "name": "Տրինիդադ և Տոբագո"
+ },
+ "TA": {
+ "name": "Տրիստան դա Կունյա"
+ },
+ "CI": {
+ "name": "Փղոսկրի Ափ"
+ },
+ "KE": {
+ "name": "Քենիա"
+ },
+ "KW": {
+ "name": "Քուվեյթ"
+ },
+ "OM": {
+ "name": "Օման"
+ },
+ "FO": {
+ "name": "Ֆարերյան կղզիներ"
+ },
+ "PH": {
+ "name": "Ֆիլիպիններ"
+ },
+ "FI": {
+ "name": "Ֆինլանդիա"
+ },
+ "FJ": {
+ "name": "Ֆիջի"
+ },
+ "FK": {
+ "name": "Ֆոլկլենդյան կղզիներ"
+ },
+ "FR": {
+ "name": "Ֆրանսիա"
+ },
+ "GF": {
+ "name": "Ֆրանսիական Գվիանա"
+ },
+ "TF": {
+ "name": "Ֆրանսիական Հարավային Տարածքներ"
+ },
+ "PF": {
+ "name": "Ֆրանսիական Պոլինեզիա"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/id.json b/library/intl/resources/country/id.json
new file mode 100644
index 000000000..c75b113fc
--- /dev/null
+++ b/library/intl/resources/country/id.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika Selatan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljazair"
+ },
+ "US": {
+ "name": "Amerika Serikat"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua dan Barbuda"
+ },
+ "SA": {
+ "name": "Arab Saudi"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "NL": {
+ "name": "Belanda"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia dan Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Cad"
+ },
+ "EA": {
+ "name": "Ceuta dan Melilla"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CI": {
+ "name": "Cote d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia Selatan dan Kepulauan Sandwich Selatan"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ekuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Prancis"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "GB": {
+ "name": "Inggris"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandia"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Jepang"
+ },
+ "DE": {
+ "name": "Jerman"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "NC": {
+ "name": "Kaledonia Baru"
+ },
+ "KH": {
+ "name": "Kamboja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "BQ": {
+ "name": "Karibia Belanda"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "AX": {
+ "name": "Kepulauan Aland"
+ },
+ "IC": {
+ "name": "Kepulauan Canary"
+ },
+ "KY": {
+ "name": "Kepulauan Cayman"
+ },
+ "CC": {
+ "name": "Kepulauan Cocos"
+ },
+ "CK": {
+ "name": "Kepulauan Cook"
+ },
+ "FO": {
+ "name": "Kepulauan Faroe"
+ },
+ "FK": {
+ "name": "Kepulauan Malvinas"
+ },
+ "MP": {
+ "name": "Kepulauan Mariana Utara"
+ },
+ "MH": {
+ "name": "Kepulauan Marshall"
+ },
+ "NF": {
+ "name": "Kepulauan Norfolk"
+ },
+ "PN": {
+ "name": "Kepulauan Pitcairn"
+ },
+ "SB": {
+ "name": "Kepulauan Solomon"
+ },
+ "SJ": {
+ "name": "Kepulauan Svalbard dan Jan Mayen"
+ },
+ "UM": {
+ "name": "Kepulauan Terluar A.S."
+ },
+ "TC": {
+ "name": "Kepulauan Turks dan Caicos"
+ },
+ "VI": {
+ "name": "Kepulauan Virgin A.S."
+ },
+ "VG": {
+ "name": "Kepulauan Virgin Inggris"
+ },
+ "WF": {
+ "name": "Kepulauan Wallis dan Futuna"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "KR": {
+ "name": "Korea Selatan"
+ },
+ "KP": {
+ "name": "Korea Utara"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makau SAR China"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MV": {
+ "name": "Maladewa"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "EG": {
+ "name": "Mesir"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nugini"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Polandia"
+ },
+ "PF": {
+ "name": "Polinesia Prancis"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "FR": {
+ "name": "Prancis"
+ },
+ "PR": {
+ "name": "Puerto Riko"
+ },
+ "AC": {
+ "name": "Pulau Ascension"
+ },
+ "CX": {
+ "name": "Pulau Christmas"
+ },
+ "IM": {
+ "name": "Pulau Man"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Republik Afrika Tengah"
+ },
+ "CZ": {
+ "name": "Republik Cheska"
+ },
+ "DO": {
+ "name": "Republik Dominika"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Barat"
+ },
+ "BL": {
+ "name": "Saint Barthelemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts dan Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre dan Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent dan Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome dan Principe"
+ },
+ "NZ": {
+ "name": "Selandia Baru"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Siprus"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanyol"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Selatan"
+ },
+ "SY": {
+ "name": "Suriah"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Swedia"
+ },
+ "CH": {
+ "name": "Swiss"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "CV": {
+ "name": "Tanjung Verde"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad dan Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkimenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "AE": {
+ "name": "Uni Emirat Arab"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "IO": {
+ "name": "Wilayah Inggris di Samudra Hindia"
+ },
+ "TF": {
+ "name": "Wilayah Kutub Selatan Prancis"
+ },
+ "PS": {
+ "name": "Wilayah Palestina"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "JO": {
+ "name": "Yordania"
+ },
+ "GR": {
+ "name": "Yunani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/is.json b/library/intl/resources/country/is.json
new file mode 100644
index 000000000..00b3c4b7c
--- /dev/null
+++ b/library/intl/resources/country/is.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albanía"
+ },
+ "DZ": {
+ "name": "Alsír"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AI": {
+ "name": "Angvilla"
+ },
+ "AG": {
+ "name": "Antígva og Barbúda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Armenía"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "AC": {
+ "name": "Ascension-eyja"
+ },
+ "AZ": {
+ "name": "Aserbaídsjan"
+ },
+ "AT": {
+ "name": "Austurríki"
+ },
+ "AX": {
+ "name": "Álandseyjar"
+ },
+ "AU": {
+ "name": "Ástralía"
+ },
+ "BS": {
+ "name": "Bahamaeyjar"
+ },
+ "US": {
+ "name": "Bandaríkin"
+ },
+ "AS": {
+ "name": "Bandaríska Samóa"
+ },
+ "VI": {
+ "name": "Bandarísku Jómfrúaeyjar"
+ },
+ "BD": {
+ "name": "Bangladess"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barein"
+ },
+ "BE": {
+ "name": "Belgía"
+ },
+ "BZ": {
+ "name": "Belís"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermúdaeyjar"
+ },
+ "BA": {
+ "name": "Bosnía og Hersegóvína"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BO": {
+ "name": "Bólivía"
+ },
+ "BR": {
+ "name": "Brasilía"
+ },
+ "IO": {
+ "name": "Bresku Indlandshafseyjar"
+ },
+ "VG": {
+ "name": "Bresku Jómfrúaeyjar"
+ },
+ "GB": {
+ "name": "Bretland"
+ },
+ "BN": {
+ "name": "Brúnei"
+ },
+ "BG": {
+ "name": "Búlgaría"
+ },
+ "BF": {
+ "name": "Búrkína Fasó"
+ },
+ "BI": {
+ "name": "Búrúndí"
+ },
+ "BT": {
+ "name": "Bútan"
+ },
+ "KY": {
+ "name": "Caymaneyjar"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CK": {
+ "name": "Cooks-eyjar"
+ },
+ "CW": {
+ "name": "Curacao"
+ },
+ "DK": {
+ "name": "Danmörk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djíbútí"
+ },
+ "DM": {
+ "name": "Dóminíka"
+ },
+ "DO": {
+ "name": "Dóminíska lýðveldið"
+ },
+ "EG": {
+ "name": "Egyptaland"
+ },
+ "EE": {
+ "name": "Eistland"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Erítrea"
+ },
+ "ET": {
+ "name": "Eþíópía"
+ },
+ "FK": {
+ "name": "Falklandseyjar"
+ },
+ "PH": {
+ "name": "Filippseyjar"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FJ": {
+ "name": "Fídjieyjar"
+ },
+ "CI": {
+ "name": "Fílabeinsströndin"
+ },
+ "FR": {
+ "name": "Frakkland"
+ },
+ "GF": {
+ "name": "Franska Gvæjana"
+ },
+ "PF": {
+ "name": "Franska Pólýnesía"
+ },
+ "TF": {
+ "name": "Frönsku suðlægu landsvæðin"
+ },
+ "FO": {
+ "name": "Færeyjar"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambía"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgía"
+ },
+ "GI": {
+ "name": "Gíbraltar"
+ },
+ "GN": {
+ "name": "Gínea"
+ },
+ "GW": {
+ "name": "Gínea-Bissá"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grikkland"
+ },
+ "CV": {
+ "name": "Grænhöfðaeyjar"
+ },
+ "GL": {
+ "name": "Grænland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gvadelúpeyjar"
+ },
+ "GU": {
+ "name": "Gvam"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GY": {
+ "name": "Gvæjana"
+ },
+ "HT": {
+ "name": "Haítí"
+ },
+ "PS": {
+ "name": "Heimastjórnarsvæði Palestínumanna"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Hondúras"
+ },
+ "BY": {
+ "name": "Hvíta-Rússland"
+ },
+ "IN": {
+ "name": "Indland"
+ },
+ "ID": {
+ "name": "Indónesía"
+ },
+ "IQ": {
+ "name": "Írak"
+ },
+ "IR": {
+ "name": "Íran"
+ },
+ "IE": {
+ "name": "Írland"
+ },
+ "IS": {
+ "name": "Ísland"
+ },
+ "IL": {
+ "name": "Ísrael"
+ },
+ "IT": {
+ "name": "Ítalía"
+ },
+ "JM": {
+ "name": "Jamaíka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CX": {
+ "name": "Jólaey"
+ },
+ "JO": {
+ "name": "Jórdanía"
+ },
+ "KH": {
+ "name": "Kambódía"
+ },
+ "CM": {
+ "name": "Kamerún"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaríeyjar"
+ },
+ "BQ": {
+ "name": "Karíbahafshluti Hollands"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenía"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "CN": {
+ "name": "Kína"
+ },
+ "KI": {
+ "name": "Kíribatí"
+ },
+ "CG": {
+ "name": "Kongó-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongó-Kinshasa"
+ },
+ "CR": {
+ "name": "Kostaríka"
+ },
+ "CC": {
+ "name": "Kókoseyjar (Keeling)"
+ },
+ "CO": {
+ "name": "Kólumbía"
+ },
+ "KM": {
+ "name": "Kómoreyjar"
+ },
+ "XK": {
+ "name": "Kósóvó"
+ },
+ "HR": {
+ "name": "Króatía"
+ },
+ "CU": {
+ "name": "Kúba"
+ },
+ "KW": {
+ "name": "Kúveit"
+ },
+ "CY": {
+ "name": "Kýpur"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesótó"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litháen"
+ },
+ "LB": {
+ "name": "Líbanon"
+ },
+ "LR": {
+ "name": "Líbería"
+ },
+ "LY": {
+ "name": "Líbía"
+ },
+ "LU": {
+ "name": "Lúxemborg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedónía"
+ },
+ "MY": {
+ "name": "Malasía"
+ },
+ "MW": {
+ "name": "Malaví"
+ },
+ "MV": {
+ "name": "Maldíveyjar"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokkó"
+ },
+ "MH": {
+ "name": "Marshalleyjar"
+ },
+ "MQ": {
+ "name": "Martiník"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MR": {
+ "name": "Máritanía"
+ },
+ "MU": {
+ "name": "Máritíus"
+ },
+ "MX": {
+ "name": "Mexíkó"
+ },
+ "CF": {
+ "name": "Mið-Afríkulýðveldið"
+ },
+ "GQ": {
+ "name": "Miðbaugs-Gínea"
+ },
+ "FM": {
+ "name": "Míkrónesía"
+ },
+ "MM": {
+ "name": "Mjanmar (Búrma)"
+ },
+ "MD": {
+ "name": "Moldóva"
+ },
+ "MN": {
+ "name": "Mongólía"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MC": {
+ "name": "Mónakó"
+ },
+ "MZ": {
+ "name": "Mósambík"
+ },
+ "IM": {
+ "name": "Mön"
+ },
+ "NA": {
+ "name": "Namibía"
+ },
+ "NR": {
+ "name": "Nárú"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nígería"
+ },
+ "NI": {
+ "name": "Níkaragva"
+ },
+ "KP": {
+ "name": "Norður-Kórea"
+ },
+ "MP": {
+ "name": "Norður-Maríanaeyjar"
+ },
+ "NO": {
+ "name": "Noregur"
+ },
+ "NF": {
+ "name": "Norfolkeyja"
+ },
+ "NC": {
+ "name": "Nýja-Kaledónía"
+ },
+ "NZ": {
+ "name": "Nýja-Sjáland"
+ },
+ "OM": {
+ "name": "Óman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palá"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papúa Nýja-Gínea"
+ },
+ "PY": {
+ "name": "Paragvæ"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PN": {
+ "name": "Pitcairn-eyjar"
+ },
+ "PT": {
+ "name": "Portúgal"
+ },
+ "PL": {
+ "name": "Pólland"
+ },
+ "PR": {
+ "name": "Púertó Ríkó"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Rúanda"
+ },
+ "RO": {
+ "name": "Rúmenía"
+ },
+ "RU": {
+ "name": "Rússland"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SB": {
+ "name": "Salómonseyjar"
+ },
+ "ZM": {
+ "name": "Sambía"
+ },
+ "AE": {
+ "name": "Sameinuðu arabísku furstadæmin"
+ },
+ "WS": {
+ "name": "Samóa"
+ },
+ "SM": {
+ "name": "San Marínó"
+ },
+ "SH": {
+ "name": "Sankti Helena"
+ },
+ "KN": {
+ "name": "Sankti Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Sankti Lúsía"
+ },
+ "PM": {
+ "name": "Sankti Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Sankti Vinsent og Grenadíneyjar"
+ },
+ "ST": {
+ "name": "Saó Tóme og Prinsípe"
+ },
+ "SA": {
+ "name": "Sádi-Arabía"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbía"
+ },
+ "SC": {
+ "name": "Seychelles-eyjar"
+ },
+ "ZW": {
+ "name": "Simbabve"
+ },
+ "SG": {
+ "name": "Singapúr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Síerra Leóne"
+ },
+ "CL": {
+ "name": "Síle"
+ },
+ "HK": {
+ "name": "Sjálfstjórnarsvæðið Hong Kong"
+ },
+ "MO": {
+ "name": "Sjálfstjórnarsvæðið Makaó"
+ },
+ "SK": {
+ "name": "Slóvakía"
+ },
+ "SI": {
+ "name": "Slóvenía"
+ },
+ "UM": {
+ "name": "Smáeyjar Bandaríkjanna"
+ },
+ "SO": {
+ "name": "Sómalía"
+ },
+ "ES": {
+ "name": "Spánn"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "ZA": {
+ "name": "Suður-Afríka"
+ },
+ "GS": {
+ "name": "Suður-Georgía og Suður-Sandvíkureyjar"
+ },
+ "KR": {
+ "name": "Suður-Kórea"
+ },
+ "SS": {
+ "name": "Suður-Súdan"
+ },
+ "AQ": {
+ "name": "Suðurskautslandið"
+ },
+ "SD": {
+ "name": "Súdan"
+ },
+ "SR": {
+ "name": "Súrínam"
+ },
+ "SJ": {
+ "name": "Svalbarði og Jan Mayen"
+ },
+ "ME": {
+ "name": "Svartfjallaland"
+ },
+ "SZ": {
+ "name": "Svasíland"
+ },
+ "CH": {
+ "name": "Sviss"
+ },
+ "SE": {
+ "name": "Svíþjóð"
+ },
+ "SY": {
+ "name": "Sýrland"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TH": {
+ "name": "Taíland"
+ },
+ "TW": {
+ "name": "Taívan"
+ },
+ "TZ": {
+ "name": "Tansanía"
+ },
+ "CZ": {
+ "name": "Tékkland"
+ },
+ "TL": {
+ "name": "Tímor-Leste"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Tógó"
+ },
+ "TK": {
+ "name": "Tókelá"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TT": {
+ "name": "Trínidad og Tóbagó"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "TC": {
+ "name": "Turks- og Caicoseyjar"
+ },
+ "TN": {
+ "name": "Túnis"
+ },
+ "TM": {
+ "name": "Túrkmenistan"
+ },
+ "TV": {
+ "name": "Túvalú"
+ },
+ "TR": {
+ "name": "Tyrkland"
+ },
+ "HU": {
+ "name": "Ungverjaland"
+ },
+ "UG": {
+ "name": "Úganda"
+ },
+ "UA": {
+ "name": "Úkraína"
+ },
+ "UY": {
+ "name": "Úrúgvæ"
+ },
+ "UZ": {
+ "name": "Úsbekistan"
+ },
+ "VU": {
+ "name": "Vanúatú"
+ },
+ "VA": {
+ "name": "Vatíkanið"
+ },
+ "VE": {
+ "name": "Venesúela"
+ },
+ "EH": {
+ "name": "Vestur-Sahara"
+ },
+ "VN": {
+ "name": "Víetnam"
+ },
+ "WF": {
+ "name": "Wallis- og Fútúnaeyjar"
+ },
+ "DE": {
+ "name": "Þýskaland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/it.json b/library/intl/resources/country/it.json
new file mode 100644
index 000000000..779d0b18d
--- /dev/null
+++ b/library/intl/resources/country/it.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartide"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaigian"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgio"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Erzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasile"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambogia"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Capo Verde"
+ },
+ "BQ": {
+ "name": "Caraibi Olandesi"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "TD": {
+ "name": "Ciad"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CN": {
+ "name": "Cina"
+ },
+ "CY": {
+ "name": "Cipro"
+ },
+ "VA": {
+ "name": "Città del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "KP": {
+ "name": "Corea del Nord"
+ },
+ "KR": {
+ "name": "Corea del Sud"
+ },
+ "CI": {
+ "name": "Costa d’Avorio"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croazia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarca"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egitto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirati Arabi Uniti"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "RU": {
+ "name": "Federazione Russa"
+ },
+ "FJ": {
+ "name": "Figi"
+ },
+ "PH": {
+ "name": "Filippine"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia del Sud e isole Sandwich meridionali"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "JM": {
+ "name": "Giamaica"
+ },
+ "JP": {
+ "name": "Giappone"
+ },
+ "GI": {
+ "name": "Gibilterra"
+ },
+ "DJ": {
+ "name": "Gibuti"
+ },
+ "JO": {
+ "name": "Giordania"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana Francese"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Equatoriale"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "AC": {
+ "name": "Isola di Ascensione"
+ },
+ "CX": {
+ "name": "Isola di Christmas"
+ },
+ "IM": {
+ "name": "Isola di Man"
+ },
+ "NF": {
+ "name": "Isola Norfolk"
+ },
+ "AX": {
+ "name": "Isole Aland"
+ },
+ "IC": {
+ "name": "Isole Canarie"
+ },
+ "KY": {
+ "name": "Isole Cayman"
+ },
+ "CC": {
+ "name": "Isole Cocos"
+ },
+ "CK": {
+ "name": "Isole Cook"
+ },
+ "FK": {
+ "name": "Isole Falkland"
+ },
+ "FO": {
+ "name": "Isole Faroe"
+ },
+ "MP": {
+ "name": "Isole Marianne Settentrionali"
+ },
+ "MH": {
+ "name": "Isole Marshall"
+ },
+ "UM": {
+ "name": "Isole minori lontane dagli USA"
+ },
+ "PN": {
+ "name": "Isole Pitcairn"
+ },
+ "SB": {
+ "name": "Isole Solomon"
+ },
+ "TC": {
+ "name": "Isole Turks e Caicos"
+ },
+ "VI": {
+ "name": "Isole Vergini Americane"
+ },
+ "VG": {
+ "name": "Isole Vergini Britanniche"
+ },
+ "IL": {
+ "name": "Israele"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonia"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Lussemburgo"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocco"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Messico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambico"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Nuova Caledonia"
+ },
+ "NZ": {
+ "name": "Nuova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Paesi Bassi"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua Nuova Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perù"
+ },
+ "PF": {
+ "name": "Polinesia Francese"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portogallo"
+ },
+ "PR": {
+ "name": "Portorico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "RAS di Hong Kong"
+ },
+ "MO": {
+ "name": "RAS di Macao"
+ },
+ "GB": {
+ "name": "Regno Unito"
+ },
+ "CZ": {
+ "name": "Repubblica Ceca"
+ },
+ "CF": {
+ "name": "Repubblica Centrafricana"
+ },
+ "MK": {
+ "name": "Repubblica di Macedonia"
+ },
+ "DO": {
+ "name": "Repubblica Dominicana"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "EH": {
+ "name": "Sahara Occidentale"
+ },
+ "KN": {
+ "name": "Saint Kitts e Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent e Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americane"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Sant’Elena"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovacchia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spagna"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stati Uniti"
+ },
+ "ZA": {
+ "name": "Sudafrica"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan del Sud"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezia"
+ },
+ "CH": {
+ "name": "Svizzera"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tagikistan"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Territori australi francesi"
+ },
+ "PS": {
+ "name": "Territori palestinesi"
+ },
+ "IO": {
+ "name": "Territorio Britannico dell’Oceano Indiano"
+ },
+ "TL": {
+ "name": "Timor Est"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turchia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungheria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ja.json b/library/intl/resources/country/ja.json
new file mode 100644
index 000000000..2ba91fa11
--- /dev/null
+++ b/library/intl/resources/country/ja.json
@@ -0,0 +1,761 @@
+{
+ "IS": {
+ "name": "アイスランド"
+ },
+ "IE": {
+ "name": "アイルランド"
+ },
+ "AZ": {
+ "name": "アゼルバイジャン"
+ },
+ "AC": {
+ "name": "アセンション島"
+ },
+ "AF": {
+ "name": "アフガニスタン"
+ },
+ "US": {
+ "name": "アメリカ合衆国"
+ },
+ "AE": {
+ "name": "アラブ首長国連邦"
+ },
+ "DZ": {
+ "name": "アルジェリア"
+ },
+ "AR": {
+ "name": "アルゼンチン"
+ },
+ "AW": {
+ "name": "アルバ"
+ },
+ "AL": {
+ "name": "アルバニア"
+ },
+ "AM": {
+ "name": "アルメニア"
+ },
+ "AI": {
+ "name": "アンギラ"
+ },
+ "AO": {
+ "name": "アンゴラ"
+ },
+ "AG": {
+ "name": "アンティグア・バーブーダ"
+ },
+ "AD": {
+ "name": "アンドラ"
+ },
+ "YE": {
+ "name": "イエメン"
+ },
+ "GB": {
+ "name": "イギリス"
+ },
+ "IL": {
+ "name": "イスラエル"
+ },
+ "IT": {
+ "name": "イタリア"
+ },
+ "IQ": {
+ "name": "イラク"
+ },
+ "IR": {
+ "name": "イラン"
+ },
+ "IN": {
+ "name": "インド"
+ },
+ "ID": {
+ "name": "インドネシア"
+ },
+ "WF": {
+ "name": "ウォリス・フツナ"
+ },
+ "UG": {
+ "name": "ウガンダ"
+ },
+ "UA": {
+ "name": "ウクライナ"
+ },
+ "UZ": {
+ "name": "ウズベキスタン"
+ },
+ "UY": {
+ "name": "ウルグアイ"
+ },
+ "EC": {
+ "name": "エクアドル"
+ },
+ "EG": {
+ "name": "エジプト"
+ },
+ "EE": {
+ "name": "エストニア"
+ },
+ "ET": {
+ "name": "エチオピア"
+ },
+ "ER": {
+ "name": "エリトリア"
+ },
+ "SV": {
+ "name": "エルサルバドル"
+ },
+ "AU": {
+ "name": "オーストラリア"
+ },
+ "AT": {
+ "name": "オーストリア"
+ },
+ "AX": {
+ "name": "オーランド諸島"
+ },
+ "OM": {
+ "name": "オマーン"
+ },
+ "NL": {
+ "name": "オランダ"
+ },
+ "BQ": {
+ "name": "オランダ領カリブ"
+ },
+ "GH": {
+ "name": "ガーナ"
+ },
+ "CV": {
+ "name": "カーボベルデ"
+ },
+ "GG": {
+ "name": "ガーンジー"
+ },
+ "GY": {
+ "name": "ガイアナ"
+ },
+ "KZ": {
+ "name": "カザフスタン"
+ },
+ "QA": {
+ "name": "カタール"
+ },
+ "CA": {
+ "name": "カナダ"
+ },
+ "IC": {
+ "name": "カナリア諸島"
+ },
+ "GA": {
+ "name": "ガボン"
+ },
+ "CM": {
+ "name": "カメルーン"
+ },
+ "GM": {
+ "name": "ガンビア"
+ },
+ "KH": {
+ "name": "カンボジア"
+ },
+ "GN": {
+ "name": "ギニア"
+ },
+ "GW": {
+ "name": "ギニアビサウ"
+ },
+ "CY": {
+ "name": "キプロス"
+ },
+ "CU": {
+ "name": "キューバ"
+ },
+ "CW": {
+ "name": "キュラソー"
+ },
+ "GR": {
+ "name": "ギリシャ"
+ },
+ "KI": {
+ "name": "キリバス"
+ },
+ "KG": {
+ "name": "キルギス"
+ },
+ "GT": {
+ "name": "グアテマラ"
+ },
+ "GP": {
+ "name": "グアドループ"
+ },
+ "GU": {
+ "name": "グアム"
+ },
+ "KW": {
+ "name": "クウェート"
+ },
+ "CK": {
+ "name": "クック諸島"
+ },
+ "GL": {
+ "name": "グリーンランド"
+ },
+ "CX": {
+ "name": "クリスマス島"
+ },
+ "GE": {
+ "name": "グルジア"
+ },
+ "GD": {
+ "name": "グレナダ"
+ },
+ "HR": {
+ "name": "クロアチア"
+ },
+ "KY": {
+ "name": "ケイマン諸島"
+ },
+ "KE": {
+ "name": "ケニア"
+ },
+ "CI": {
+ "name": "コートジボワール"
+ },
+ "CC": {
+ "name": "ココス(キーリング)諸島"
+ },
+ "CR": {
+ "name": "コスタリカ"
+ },
+ "XK": {
+ "name": "コソボ"
+ },
+ "KM": {
+ "name": "コモロ"
+ },
+ "CO": {
+ "name": "コロンビア"
+ },
+ "CG": {
+ "name": "コンゴ共和国(ブラザビル)"
+ },
+ "CD": {
+ "name": "コンゴ民主共和国(キンシャサ)"
+ },
+ "SA": {
+ "name": "サウジアラビア"
+ },
+ "WS": {
+ "name": "サモア"
+ },
+ "BL": {
+ "name": "サン・バルテルミー島"
+ },
+ "MF": {
+ "name": "サン・マルタン"
+ },
+ "ST": {
+ "name": "サントメ・プリンシペ"
+ },
+ "ZM": {
+ "name": "ザンビア"
+ },
+ "PM": {
+ "name": "サンピエール島・ミクロン島"
+ },
+ "SM": {
+ "name": "サンマリノ"
+ },
+ "SL": {
+ "name": "シエラレオネ"
+ },
+ "DJ": {
+ "name": "ジブチ"
+ },
+ "GI": {
+ "name": "ジブラルタル"
+ },
+ "JE": {
+ "name": "ジャージー"
+ },
+ "JM": {
+ "name": "ジャマイカ"
+ },
+ "SY": {
+ "name": "シリア"
+ },
+ "SG": {
+ "name": "シンガポール"
+ },
+ "SX": {
+ "name": "シント・マールテン"
+ },
+ "ZW": {
+ "name": "ジンバブエ"
+ },
+ "CH": {
+ "name": "スイス"
+ },
+ "SE": {
+ "name": "スウェーデン"
+ },
+ "SD": {
+ "name": "スーダン"
+ },
+ "SJ": {
+ "name": "スバールバル諸島・ヤンマイエン島"
+ },
+ "ES": {
+ "name": "スペイン"
+ },
+ "SR": {
+ "name": "スリナム"
+ },
+ "LK": {
+ "name": "スリランカ"
+ },
+ "SK": {
+ "name": "スロバキア"
+ },
+ "SI": {
+ "name": "スロベニア"
+ },
+ "SZ": {
+ "name": "スワジランド"
+ },
+ "EA": {
+ "name": "セウタ・メリリャ"
+ },
+ "SC": {
+ "name": "セーシェル"
+ },
+ "SN": {
+ "name": "セネガル"
+ },
+ "RS": {
+ "name": "セルビア"
+ },
+ "KN": {
+ "name": "セントクリストファー・ネイビス"
+ },
+ "VC": {
+ "name": "セントビンセント・グレナディーン諸島"
+ },
+ "SH": {
+ "name": "セントヘレナ"
+ },
+ "LC": {
+ "name": "セントルシア"
+ },
+ "SO": {
+ "name": "ソマリア"
+ },
+ "SB": {
+ "name": "ソロモン諸島"
+ },
+ "TC": {
+ "name": "タークス・カイコス諸島"
+ },
+ "TH": {
+ "name": "タイ"
+ },
+ "TJ": {
+ "name": "タジキスタン"
+ },
+ "TZ": {
+ "name": "タンザニア"
+ },
+ "CZ": {
+ "name": "チェコ共和国"
+ },
+ "TD": {
+ "name": "チャド"
+ },
+ "TN": {
+ "name": "チュニジア"
+ },
+ "CL": {
+ "name": "チリ"
+ },
+ "TV": {
+ "name": "ツバル"
+ },
+ "DG": {
+ "name": "ディエゴガルシア島"
+ },
+ "DK": {
+ "name": "デンマーク"
+ },
+ "DE": {
+ "name": "ドイツ"
+ },
+ "TG": {
+ "name": "トーゴ"
+ },
+ "TK": {
+ "name": "トケラウ"
+ },
+ "DO": {
+ "name": "ドミニカ共和国"
+ },
+ "DM": {
+ "name": "ドミニカ国"
+ },
+ "TA": {
+ "name": "トリスタン・ダ・クーニャ"
+ },
+ "TT": {
+ "name": "トリニダード・トバゴ"
+ },
+ "TM": {
+ "name": "トルクメニスタン"
+ },
+ "TR": {
+ "name": "トルコ"
+ },
+ "TO": {
+ "name": "トンガ"
+ },
+ "NG": {
+ "name": "ナイジェリア"
+ },
+ "NR": {
+ "name": "ナウル"
+ },
+ "NA": {
+ "name": "ナミビア"
+ },
+ "NU": {
+ "name": "ニウエ島"
+ },
+ "NI": {
+ "name": "ニカラグア"
+ },
+ "NE": {
+ "name": "ニジェール"
+ },
+ "NC": {
+ "name": "ニューカレドニア"
+ },
+ "NZ": {
+ "name": "ニュージーランド"
+ },
+ "NP": {
+ "name": "ネパール"
+ },
+ "NF": {
+ "name": "ノーフォーク島"
+ },
+ "NO": {
+ "name": "ノルウェー"
+ },
+ "BH": {
+ "name": "バーレーン"
+ },
+ "HT": {
+ "name": "ハイチ"
+ },
+ "PK": {
+ "name": "パキスタン"
+ },
+ "VA": {
+ "name": "バチカン市国"
+ },
+ "PA": {
+ "name": "パナマ"
+ },
+ "VU": {
+ "name": "バヌアツ"
+ },
+ "BS": {
+ "name": "バハマ"
+ },
+ "PG": {
+ "name": "パプアニューギニア"
+ },
+ "BM": {
+ "name": "バミューダ"
+ },
+ "PW": {
+ "name": "パラオ"
+ },
+ "PY": {
+ "name": "パラグアイ"
+ },
+ "BB": {
+ "name": "バルバドス"
+ },
+ "PS": {
+ "name": "パレスチナ"
+ },
+ "HU": {
+ "name": "ハンガリー"
+ },
+ "BD": {
+ "name": "バングラデシュ"
+ },
+ "PN": {
+ "name": "ピトケアン諸島"
+ },
+ "FJ": {
+ "name": "フィジー"
+ },
+ "PH": {
+ "name": "フィリピン"
+ },
+ "FI": {
+ "name": "フィンランド"
+ },
+ "BT": {
+ "name": "ブータン"
+ },
+ "PR": {
+ "name": "プエルトリコ"
+ },
+ "FO": {
+ "name": "フェロー諸島"
+ },
+ "FK": {
+ "name": "フォークランド諸島"
+ },
+ "BR": {
+ "name": "ブラジル"
+ },
+ "FR": {
+ "name": "フランス"
+ },
+ "BG": {
+ "name": "ブルガリア"
+ },
+ "BF": {
+ "name": "ブルキナファソ"
+ },
+ "BN": {
+ "name": "ブルネイ"
+ },
+ "BI": {
+ "name": "ブルンジ"
+ },
+ "VN": {
+ "name": "ベトナム"
+ },
+ "BJ": {
+ "name": "ベナン"
+ },
+ "VE": {
+ "name": "ベネズエラ"
+ },
+ "BY": {
+ "name": "ベラルーシ"
+ },
+ "BZ": {
+ "name": "ベリーズ"
+ },
+ "PE": {
+ "name": "ペルー"
+ },
+ "BE": {
+ "name": "ベルギー"
+ },
+ "PL": {
+ "name": "ポーランド"
+ },
+ "BA": {
+ "name": "ボスニア・ヘルツェゴビナ"
+ },
+ "BW": {
+ "name": "ボツワナ"
+ },
+ "BO": {
+ "name": "ボリビア"
+ },
+ "PT": {
+ "name": "ポルトガル"
+ },
+ "HN": {
+ "name": "ホンジュラス"
+ },
+ "MH": {
+ "name": "マーシャル諸島"
+ },
+ "MK": {
+ "name": "マケドニア"
+ },
+ "MG": {
+ "name": "マダガスカル"
+ },
+ "YT": {
+ "name": "マヨット島"
+ },
+ "MW": {
+ "name": "マラウイ"
+ },
+ "ML": {
+ "name": "マリ"
+ },
+ "MT": {
+ "name": "マルタ"
+ },
+ "MQ": {
+ "name": "マルティニーク"
+ },
+ "MY": {
+ "name": "マレーシア"
+ },
+ "IM": {
+ "name": "マン島"
+ },
+ "FM": {
+ "name": "ミクロネシア連邦"
+ },
+ "MM": {
+ "name": "ミャンマー"
+ },
+ "MX": {
+ "name": "メキシコ"
+ },
+ "MU": {
+ "name": "モーリシャス"
+ },
+ "MR": {
+ "name": "モーリタニア"
+ },
+ "MZ": {
+ "name": "モザンビーク"
+ },
+ "MC": {
+ "name": "モナコ"
+ },
+ "MV": {
+ "name": "モルディブ"
+ },
+ "MD": {
+ "name": "モルドバ"
+ },
+ "MA": {
+ "name": "モロッコ"
+ },
+ "MN": {
+ "name": "モンゴル"
+ },
+ "ME": {
+ "name": "モンテネグロ"
+ },
+ "MS": {
+ "name": "モントセラト"
+ },
+ "JO": {
+ "name": "ヨルダン"
+ },
+ "LA": {
+ "name": "ラオス"
+ },
+ "LV": {
+ "name": "ラトビア"
+ },
+ "LT": {
+ "name": "リトアニア"
+ },
+ "LY": {
+ "name": "リビア"
+ },
+ "LI": {
+ "name": "リヒテンシュタイン"
+ },
+ "LR": {
+ "name": "リベリア"
+ },
+ "RO": {
+ "name": "ルーマニア"
+ },
+ "LU": {
+ "name": "ルクセンブルグ"
+ },
+ "RW": {
+ "name": "ルワンダ"
+ },
+ "LS": {
+ "name": "レソト"
+ },
+ "LB": {
+ "name": "レバノン"
+ },
+ "RE": {
+ "name": "レユニオン島"
+ },
+ "RU": {
+ "name": "ロシア"
+ },
+ "IO": {
+ "name": "英領インド洋地域"
+ },
+ "VG": {
+ "name": "英領ヴァージン諸島"
+ },
+ "EH": {
+ "name": "西サハラ"
+ },
+ "GQ": {
+ "name": "赤道ギニア"
+ },
+ "TW": {
+ "name": "台湾"
+ },
+ "KR": {
+ "name": "大韓民国"
+ },
+ "CF": {
+ "name": "中央アフリカ共和国"
+ },
+ "MO": {
+ "name": "中華人民共和国マカオ特別行政区"
+ },
+ "HK": {
+ "name": "中華人民共和国香港特別行政区"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "KP": {
+ "name": "朝鮮民主主義人民共和国"
+ },
+ "TL": {
+ "name": "東ティモール"
+ },
+ "ZA": {
+ "name": "南アフリカ"
+ },
+ "GS": {
+ "name": "南ジョージア島・南サンドイッチ諸島"
+ },
+ "SS": {
+ "name": "南スーダン"
+ },
+ "AQ": {
+ "name": "南極"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "GF": {
+ "name": "仏領ギアナ"
+ },
+ "PF": {
+ "name": "仏領ポリネシア"
+ },
+ "TF": {
+ "name": "仏領極南諸島"
+ },
+ "VI": {
+ "name": "米領ヴァージン諸島"
+ },
+ "AS": {
+ "name": "米領サモア"
+ },
+ "UM": {
+ "name": "米領太平洋諸島"
+ },
+ "MP": {
+ "name": "北マリアナ諸島"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/jgo.json b/library/intl/resources/country/jgo.json
new file mode 100644
index 000000000..f8f649e53
--- /dev/null
+++ b/library/intl/resources/country/jgo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AR": {
+ "name": "Ajɛntîn"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljɛlî"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "IN": {
+ "name": "Ándɛ"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AO": {
+ "name": "Aŋgɔ́la"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "TD": {
+ "name": "Cât"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cíllɛ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "EG": {
+ "name": "Ɛjíptɛ"
+ },
+ "EC": {
+ "name": "Ɛkwandɔ̂"
+ },
+ "ER": {
+ "name": "Ɛlitɛlɛ́ya"
+ },
+ "ES": {
+ "name": "Ɛspániya"
+ },
+ "ET": {
+ "name": "Ɛtiyɔpî"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FR": {
+ "name": "Fɛlánci"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IQ": {
+ "name": "Ilâk"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IL": {
+ "name": "Islayɛ̂l"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italî"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japɔ̂n"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CM": {
+ "name": "Kamɛlûn"
+ },
+ "CA": {
+ "name": "Kanadâ"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kɛ́nya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CO": {
+ "name": "Kɔllɔmbî"
+ },
+ "KM": {
+ "name": "Kɔmɔ́lɔshi"
+ },
+ "CD": {
+ "name": "Kɔ́ŋgɔ-Kinshása"
+ },
+ "CG": {
+ "name": "Kɔ́ŋgɔ-Mbɛlazavîl"
+ },
+ "CI": {
+ "name": "Kɔ́t Ndivwâ"
+ },
+ "CU": {
+ "name": "Kúba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lɛsɔ́tɔ"
+ },
+ "RE": {
+ "name": "Lɛ́uniyɔ̂n"
+ },
+ "LR": {
+ "name": "Libɛrî"
+ },
+ "LY": {
+ "name": "Libî"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "RU": {
+ "name": "Lusî"
+ },
+ "RW": {
+ "name": "Luwánda"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MW": {
+ "name": "Maláwi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Malî"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MG": {
+ "name": "Mándaŋgasɛkâ"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayɔ̂t"
+ },
+ "BR": {
+ "name": "Mbɛlazîl"
+ },
+ "BJ": {
+ "name": "Mbɛnɛ̂ŋ"
+ },
+ "BO": {
+ "name": "Mbɔlivî"
+ },
+ "BW": {
+ "name": "Mbɔtswána"
+ },
+ "BF": {
+ "name": "Mbulukína Fásɔ"
+ },
+ "BI": {
+ "name": "Mbulundí"
+ },
+ "MX": {
+ "name": "Mɛksîk"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Mɔlitanî"
+ },
+ "MA": {
+ "name": "Mɔlɔ̂k"
+ },
+ "MZ": {
+ "name": "Mɔzambîk"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namimbî"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Nijɛ̂"
+ },
+ "NG": {
+ "name": "Ninjɛliyâ"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "DE": {
+ "name": "Njáman"
+ },
+ "DJ": {
+ "name": "Njimbúti"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Nɔlɛvɛ́jɛ"
+ },
+ "GA": {
+ "name": "Ŋgabɔ̂ŋ"
+ },
+ "GM": {
+ "name": "Ŋgambî"
+ },
+ "GH": {
+ "name": "Ŋgána"
+ },
+ "GR": {
+ "name": "Ŋgɛlɛ̂k"
+ },
+ "GN": {
+ "name": "Ŋginɛ̂"
+ },
+ "GQ": {
+ "name": "Ŋginɛ̂ Ɛkwatɔliyâl"
+ },
+ "GW": {
+ "name": "Ŋginɛ̂ Mbisáwu"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Pɛlû"
+ },
+ "SC": {
+ "name": "Pɛsɛ́shɛl"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "ST": {
+ "name": "Sáwɔŋ Tɔmɛ́ nɛ́ Pɛlínsipɛ"
+ },
+ "RS": {
+ "name": "Sɛlɛbî"
+ },
+ "SN": {
+ "name": "Sɛnɛgâl"
+ },
+ "CN": {
+ "name": "Shîn"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Siyɛ́la Lɛɔ̂n"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "SO": {
+ "name": "Sɔmalî"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sundân"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilân"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Sẅísɛ"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzanî"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Tɔ́ŋgɔ"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizî"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UG": {
+ "name": "Uŋgánda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Vɛnɛzwɛ́la"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambî"
+ },
+ "ZW": {
+ "name": "Zimbámbwɛ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/jmc.json b/library/intl/resources/country/jmc.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/jmc.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ka.json b/library/intl/resources/country/ka.json
new file mode 100644
index 000000000..72d5d68da
--- /dev/null
+++ b/library/intl/resources/country/ka.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ავსტრალია"
+ },
+ "AT": {
+ "name": "ავსტრია"
+ },
+ "AF": {
+ "name": "ავღანეთი"
+ },
+ "AZ": {
+ "name": "აზერბაიჯანი"
+ },
+ "AX": {
+ "name": "ალანდის კუნძულები"
+ },
+ "AL": {
+ "name": "ალბანეთი"
+ },
+ "DZ": {
+ "name": "ალჟირი"
+ },
+ "AC": {
+ "name": "ამაღლების კუნძული"
+ },
+ "US": {
+ "name": "ამერიკის შეერთებული შტატები"
+ },
+ "AS": {
+ "name": "ამერიკული სამოა"
+ },
+ "AI": {
+ "name": "ანგვილა"
+ },
+ "AO": {
+ "name": "ანგოლა"
+ },
+ "AD": {
+ "name": "ანდორა"
+ },
+ "AQ": {
+ "name": "ანტარქტიკა"
+ },
+ "AG": {
+ "name": "ანტიგუა და ბარბუდა"
+ },
+ "AE": {
+ "name": "არაბთა გაერთიანებული საამიროები"
+ },
+ "AR": {
+ "name": "არგენტინა"
+ },
+ "AW": {
+ "name": "არუბა"
+ },
+ "VI": {
+ "name": "აშშ-ის ვირჯინიის კუნძულები"
+ },
+ "UM": {
+ "name": "აშშ-ის შორეული კუნძულები"
+ },
+ "NZ": {
+ "name": "ახალი ზელანდია"
+ },
+ "NC": {
+ "name": "ახალი კალედონია"
+ },
+ "BD": {
+ "name": "ბანგლადეში"
+ },
+ "BB": {
+ "name": "ბარბადოსი"
+ },
+ "BS": {
+ "name": "ბაჰამის კუნძულები"
+ },
+ "BH": {
+ "name": "ბაჰრეინი"
+ },
+ "BE": {
+ "name": "ბელგია"
+ },
+ "BZ": {
+ "name": "ბელიზი"
+ },
+ "BY": {
+ "name": "ბელორუსია"
+ },
+ "BJ": {
+ "name": "ბენინი"
+ },
+ "BM": {
+ "name": "ბერმუდი"
+ },
+ "BO": {
+ "name": "ბოლივია"
+ },
+ "BA": {
+ "name": "ბოსნია და ჰერცეგოვინა"
+ },
+ "BW": {
+ "name": "ბოტსვანა"
+ },
+ "BR": {
+ "name": "ბრაზილია"
+ },
+ "VG": {
+ "name": "ბრიტანეთის ვირჯინიის კუნძულები"
+ },
+ "IO": {
+ "name": "ბრიტანული ტერიტორია ინდოეთის ოკეანეში"
+ },
+ "BN": {
+ "name": "ბრუნეი"
+ },
+ "BG": {
+ "name": "ბულგარეთი"
+ },
+ "BF": {
+ "name": "ბურკინა-ფასო"
+ },
+ "BI": {
+ "name": "ბურუნდი"
+ },
+ "BT": {
+ "name": "ბუტანი"
+ },
+ "GA": {
+ "name": "გაბონი"
+ },
+ "GY": {
+ "name": "გაიანა"
+ },
+ "GM": {
+ "name": "გამბია"
+ },
+ "GH": {
+ "name": "განა"
+ },
+ "DE": {
+ "name": "გერმანია"
+ },
+ "GG": {
+ "name": "გერნსი"
+ },
+ "GP": {
+ "name": "გვადელუპე"
+ },
+ "GT": {
+ "name": "გვატემალა"
+ },
+ "GN": {
+ "name": "გვინეა"
+ },
+ "GW": {
+ "name": "გვინეა-ბისაუ"
+ },
+ "GI": {
+ "name": "გიბრალტარი"
+ },
+ "GD": {
+ "name": "გრენადა"
+ },
+ "GL": {
+ "name": "გრენლანდია"
+ },
+ "GU": {
+ "name": "გუამი"
+ },
+ "DK": {
+ "name": "დანია"
+ },
+ "EH": {
+ "name": "დასავლეთი საჰარა"
+ },
+ "GB": {
+ "name": "დიდი ბრიტანეთი"
+ },
+ "DG": {
+ "name": "დიეგო-გარსია"
+ },
+ "DM": {
+ "name": "დომინიკა"
+ },
+ "DO": {
+ "name": "დომინიკანის რესპუბლიკა"
+ },
+ "EG": {
+ "name": "ეგვიპტე"
+ },
+ "ET": {
+ "name": "ეთიოპია"
+ },
+ "EC": {
+ "name": "ეკვადორი"
+ },
+ "GQ": {
+ "name": "ეკვატორული გვინეა"
+ },
+ "IQ": {
+ "name": "ერაყი"
+ },
+ "ER": {
+ "name": "ერიტრეა"
+ },
+ "ES": {
+ "name": "ესპანეთი"
+ },
+ "EE": {
+ "name": "ესტონეთი"
+ },
+ "VU": {
+ "name": "ვანუატუ"
+ },
+ "VE": {
+ "name": "ვენესუელა"
+ },
+ "VN": {
+ "name": "ვიეტნამი"
+ },
+ "ZM": {
+ "name": "ზამბია"
+ },
+ "ZW": {
+ "name": "ზიმბაბვე"
+ },
+ "TR": {
+ "name": "თურქეთი"
+ },
+ "TM": {
+ "name": "თურქმენეთი"
+ },
+ "JM": {
+ "name": "იამაიკა"
+ },
+ "JP": {
+ "name": "იაპონია"
+ },
+ "YE": {
+ "name": "იემენი"
+ },
+ "IN": {
+ "name": "ინდოეთი"
+ },
+ "ID": {
+ "name": "ინდონეზია"
+ },
+ "JO": {
+ "name": "იორდანია"
+ },
+ "IR": {
+ "name": "ირანი"
+ },
+ "IE": {
+ "name": "ირლანდია"
+ },
+ "IS": {
+ "name": "ისლანდია"
+ },
+ "IL": {
+ "name": "ისრაელი"
+ },
+ "IT": {
+ "name": "იტალია"
+ },
+ "CV": {
+ "name": "კაბო-ვერდე"
+ },
+ "KY": {
+ "name": "კაიმანის კუნძულები"
+ },
+ "KH": {
+ "name": "კამბოჯა"
+ },
+ "CM": {
+ "name": "კამერუნი"
+ },
+ "CA": {
+ "name": "კანადა"
+ },
+ "IC": {
+ "name": "კანარის კუნძულები"
+ },
+ "BQ": {
+ "name": "კარიბის ნიდერლანდები"
+ },
+ "QA": {
+ "name": "კატარი"
+ },
+ "KE": {
+ "name": "კენია"
+ },
+ "CY": {
+ "name": "კვიპროსი"
+ },
+ "KI": {
+ "name": "კირიბატი"
+ },
+ "CW": {
+ "name": "კიურასაო"
+ },
+ "CO": {
+ "name": "კოლუმბია"
+ },
+ "KM": {
+ "name": "კომორის კუნძულები"
+ },
+ "CG": {
+ "name": "კონგო - ბრაზავილი"
+ },
+ "CD": {
+ "name": "კონგო - კინშასა"
+ },
+ "XK": {
+ "name": "კოსოვო"
+ },
+ "CR": {
+ "name": "კოსტა-რიკა"
+ },
+ "CI": {
+ "name": "კოტ-დივუარი"
+ },
+ "CU": {
+ "name": "კუბა"
+ },
+ "CK": {
+ "name": "კუკის კუნძულები"
+ },
+ "LA": {
+ "name": "ლაოსი"
+ },
+ "LV": {
+ "name": "ლატვია"
+ },
+ "LS": {
+ "name": "ლესოთო"
+ },
+ "LB": {
+ "name": "ლიბანი"
+ },
+ "LR": {
+ "name": "ლიბერია"
+ },
+ "LY": {
+ "name": "ლიბია"
+ },
+ "LT": {
+ "name": "ლიტვა"
+ },
+ "LI": {
+ "name": "ლიხტენშტეინი"
+ },
+ "LU": {
+ "name": "ლუქსემბურგი"
+ },
+ "MG": {
+ "name": "მადაგასკარი"
+ },
+ "MU": {
+ "name": "მავრიკი"
+ },
+ "MR": {
+ "name": "მავრიტანია"
+ },
+ "YT": {
+ "name": "მაიოტა"
+ },
+ "MO": {
+ "name": "მაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინეთი"
+ },
+ "MK": {
+ "name": "მაკედონია"
+ },
+ "MW": {
+ "name": "მალავი"
+ },
+ "MY": {
+ "name": "მალაიზია"
+ },
+ "MV": {
+ "name": "მალდივის კუნძულები"
+ },
+ "ML": {
+ "name": "მალი"
+ },
+ "MT": {
+ "name": "მალტა"
+ },
+ "MA": {
+ "name": "მაროკო"
+ },
+ "MQ": {
+ "name": "მარტინიკა"
+ },
+ "MH": {
+ "name": "მარშალის კუნძულები"
+ },
+ "IM": {
+ "name": "მენის კუნძული"
+ },
+ "MX": {
+ "name": "მექსიკა"
+ },
+ "MM": {
+ "name": "მიანმარი (ბირმა)"
+ },
+ "FM": {
+ "name": "მიკრონეზია"
+ },
+ "MZ": {
+ "name": "მოზამბიკი"
+ },
+ "MD": {
+ "name": "მოლდოვა"
+ },
+ "MC": {
+ "name": "მონაკო"
+ },
+ "MS": {
+ "name": "მონსერატი"
+ },
+ "ME": {
+ "name": "მონტენეგრო"
+ },
+ "MN": {
+ "name": "მონღოლეთი"
+ },
+ "NA": {
+ "name": "ნამიბია"
+ },
+ "NR": {
+ "name": "ნაურუ"
+ },
+ "NP": {
+ "name": "ნეპალი"
+ },
+ "NE": {
+ "name": "ნიგერი"
+ },
+ "NG": {
+ "name": "ნიგერია"
+ },
+ "NL": {
+ "name": "ნიდერლანდები"
+ },
+ "NI": {
+ "name": "ნიკარაგუა"
+ },
+ "NU": {
+ "name": "ნიუე"
+ },
+ "NO": {
+ "name": "ნორვეგია"
+ },
+ "NF": {
+ "name": "ნორფოლკის კუნძული"
+ },
+ "OM": {
+ "name": "ომანი"
+ },
+ "PK": {
+ "name": "პაკისტანი"
+ },
+ "PW": {
+ "name": "პალაუ"
+ },
+ "PS": {
+ "name": "პალესტინის ტერიტორიები"
+ },
+ "PA": {
+ "name": "პანამა"
+ },
+ "PG": {
+ "name": "პაპუა-ახალი გვინეა"
+ },
+ "PY": {
+ "name": "პარაგვაი"
+ },
+ "PE": {
+ "name": "პერუ"
+ },
+ "PN": {
+ "name": "პიტკერნის კუნძულები"
+ },
+ "PL": {
+ "name": "პოლონეთი"
+ },
+ "PT": {
+ "name": "პორტუგალია"
+ },
+ "PR": {
+ "name": "პუერტო-რიკო"
+ },
+ "RE": {
+ "name": "რეუნიონი"
+ },
+ "RW": {
+ "name": "რუანდა"
+ },
+ "RO": {
+ "name": "რუმინეთი"
+ },
+ "RU": {
+ "name": "რუსეთი"
+ },
+ "GR": {
+ "name": "საბერძნეთი"
+ },
+ "SV": {
+ "name": "სალვადორი"
+ },
+ "WS": {
+ "name": "სამოა"
+ },
+ "ZA": {
+ "name": "სამხრეთ აფრიკა"
+ },
+ "GS": {
+ "name": "სამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნძულები"
+ },
+ "KR": {
+ "name": "სამხრეთი კორეა"
+ },
+ "SS": {
+ "name": "სამხრეთი სუდანი"
+ },
+ "SM": {
+ "name": "სან-მარინო"
+ },
+ "ST": {
+ "name": "სან-ტომე და პრინსიპი"
+ },
+ "SA": {
+ "name": "საუდის არაბეთი"
+ },
+ "FR": {
+ "name": "საფრანგეთი"
+ },
+ "GE": {
+ "name": "საქართველო"
+ },
+ "SC": {
+ "name": "სეიშელის კუნძულები"
+ },
+ "BL": {
+ "name": "სენ-ბართლემი"
+ },
+ "MF": {
+ "name": "სენ-მარტენი"
+ },
+ "PM": {
+ "name": "სენ-პიერი და მიკელონი"
+ },
+ "SN": {
+ "name": "სენეგალი"
+ },
+ "VC": {
+ "name": "სენტ-ვინსენტი და გრენადინები"
+ },
+ "KN": {
+ "name": "სენტ-კიტსი და ნევისი"
+ },
+ "LC": {
+ "name": "სენტ-ლუსია"
+ },
+ "RS": {
+ "name": "სერბეთი"
+ },
+ "EA": {
+ "name": "სეუტა და მელილა"
+ },
+ "SZ": {
+ "name": "სვაზილენდი"
+ },
+ "SL": {
+ "name": "სიერა-ლეონე"
+ },
+ "SG": {
+ "name": "სინგაპური"
+ },
+ "SX": {
+ "name": "სინტ-მარტენი"
+ },
+ "SY": {
+ "name": "სირია"
+ },
+ "SK": {
+ "name": "სლოვაკეთი"
+ },
+ "SI": {
+ "name": "სლოვენია"
+ },
+ "SB": {
+ "name": "სოლომონის კუნძულები"
+ },
+ "SO": {
+ "name": "სომალი"
+ },
+ "AM": {
+ "name": "სომხეთი"
+ },
+ "SD": {
+ "name": "სუდანი"
+ },
+ "SR": {
+ "name": "სურინამი"
+ },
+ "TW": {
+ "name": "ტაივანი"
+ },
+ "TH": {
+ "name": "ტაილანდი"
+ },
+ "TZ": {
+ "name": "ტანზანია"
+ },
+ "TJ": {
+ "name": "ტაჯიკეთი"
+ },
+ "TC": {
+ "name": "ტერკსის და კაიკოსის კუნძულები"
+ },
+ "TL": {
+ "name": "ტიმორ-ლეშტი"
+ },
+ "TG": {
+ "name": "ტოგო"
+ },
+ "TK": {
+ "name": "ტოკელაუ"
+ },
+ "TO": {
+ "name": "ტონგა"
+ },
+ "TT": {
+ "name": "ტრინიდადი და ტობაგო"
+ },
+ "TA": {
+ "name": "ტრისტან-და-კუნია"
+ },
+ "TV": {
+ "name": "ტუვალუ"
+ },
+ "TN": {
+ "name": "ტუნისი"
+ },
+ "UG": {
+ "name": "უგანდა"
+ },
+ "UZ": {
+ "name": "უზბეკეთი"
+ },
+ "UA": {
+ "name": "უკრაინა"
+ },
+ "HU": {
+ "name": "უნგრეთი"
+ },
+ "WF": {
+ "name": "უოლისი და ფუტუნა"
+ },
+ "UY": {
+ "name": "ურუგვაი"
+ },
+ "FO": {
+ "name": "ფარერის კუნძულები"
+ },
+ "PH": {
+ "name": "ფილიპინები"
+ },
+ "FI": {
+ "name": "ფინეთი"
+ },
+ "FJ": {
+ "name": "ფიჯი"
+ },
+ "FK": {
+ "name": "ფოლკლენდის კუნძულები"
+ },
+ "GF": {
+ "name": "ფრანგული გვიანა"
+ },
+ "PF": {
+ "name": "ფრანგული პოლინეზია"
+ },
+ "TF": {
+ "name": "ფრანგული სამხრეთის ტერიტორიები"
+ },
+ "VA": {
+ "name": "ქალაქი ვატიკანი"
+ },
+ "CC": {
+ "name": "ქოქოსის (კილინგის) კუნძულები"
+ },
+ "KW": {
+ "name": "ქუვეითი"
+ },
+ "KZ": {
+ "name": "ყაზახეთი"
+ },
+ "KG": {
+ "name": "ყირგიზეთი"
+ },
+ "SE": {
+ "name": "შვედეთი"
+ },
+ "CH": {
+ "name": "შვეიცარია"
+ },
+ "CX": {
+ "name": "შობის კუნძული"
+ },
+ "SJ": {
+ "name": "შპიცბერგენი და იან-მაიენი"
+ },
+ "LK": {
+ "name": "შრი-ლანკა"
+ },
+ "TD": {
+ "name": "ჩადი"
+ },
+ "CZ": {
+ "name": "ჩეხეთის რესპუბლიკა"
+ },
+ "CL": {
+ "name": "ჩილე"
+ },
+ "CN": {
+ "name": "ჩინეთი"
+ },
+ "MP": {
+ "name": "ჩრდილოეთ მარიანას კუნძულები"
+ },
+ "KP": {
+ "name": "ჩრდილოეთი კორეა"
+ },
+ "CF": {
+ "name": "ცენტრალური აფრიკის რესპუბლიკა"
+ },
+ "SH": {
+ "name": "წმინდა ელენეს კუნძული"
+ },
+ "HR": {
+ "name": "ხორვატია"
+ },
+ "JE": {
+ "name": "ჯერსი"
+ },
+ "DJ": {
+ "name": "ჯიბუტი"
+ },
+ "HT": {
+ "name": "ჰაიტი"
+ },
+ "HN": {
+ "name": "ჰონდურასი"
+ },
+ "HK": {
+ "name": "ჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთი"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kab.json b/library/intl/resources/country/kab.json
new file mode 100644
index 000000000..e247f8ebf
--- /dev/null
+++ b/library/intl/resources/country/kab.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afɣanistan"
+ },
+ "IO": {
+ "name": "Akal Aglizi deg Ugaraw Ahendi"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arjuntin"
+ },
+ "AM": {
+ "name": "Arminya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "Awanek n Vatikan"
+ },
+ "AZ": {
+ "name": "Azrabijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baḥrin"
+ },
+ "BD": {
+ "name": "Bangladac"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BE": {
+ "name": "Belǧik"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bilarus"
+ },
+ "BZ": {
+ "name": "Biliz"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BR": {
+ "name": "Brizil"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BG": {
+ "name": "Bulgari"
+ },
+ "BO": {
+ "name": "Bulivi"
+ },
+ "BI": {
+ "name": "Burandi"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BA": {
+ "name": "Busna d Hersek"
+ },
+ "BW": {
+ "name": "Bustwana"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "KH": {
+ "name": "Cambudya"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Čček"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili"
+ },
+ "CY": {
+ "name": "Cipr"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Duminik"
+ },
+ "OM": {
+ "name": "Ɛuman"
+ },
+ "PS": {
+ "name": "Falisṭin d Ɣezza"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlund"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "DJ": {
+ "name": "Ǧibuti"
+ },
+ "GD": {
+ "name": "Grunad"
+ },
+ "GL": {
+ "name": "Grunland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guwana"
+ },
+ "GP": {
+ "name": "Gwadalupi"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatimala"
+ },
+ "GH": {
+ "name": "Ɣana"
+ },
+ "GF": {
+ "name": "Ɣana tafransist"
+ },
+ "GN": {
+ "name": "Ɣinya"
+ },
+ "PG": {
+ "name": "Ɣinya Tamaynut Tapaput"
+ },
+ "GQ": {
+ "name": "Ɣinya Tasebgast"
+ },
+ "GW": {
+ "name": "Ɣinya-Bisaw"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hunduras"
+ },
+ "HU": {
+ "name": "Hungri"
+ },
+ "EC": {
+ "name": "Ikwaṭur"
+ },
+ "ID": {
+ "name": "Indunizi"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "ER": {
+ "name": "Iritiria"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "EE": {
+ "name": "Istunya"
+ },
+ "IL": {
+ "name": "Izrayil"
+ },
+ "JM": {
+ "name": "Jamyika"
+ },
+ "JP": {
+ "name": "Jappu"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "GE": {
+ "name": "Jiyurji"
+ },
+ "NC": {
+ "name": "Kalidunya Tamaynut"
+ },
+ "CM": {
+ "name": "Kamirun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazaxistan"
+ },
+ "HR": {
+ "name": "Kerwasya"
+ },
+ "KE": {
+ "name": "Kinya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigistan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CO": {
+ "name": "Kulumbi"
+ },
+ "KM": {
+ "name": "Kumur"
+ },
+ "CG": {
+ "name": "Kungu"
+ },
+ "KP": {
+ "name": "Kurya, Ufella"
+ },
+ "KR": {
+ "name": "Kurya, Wadda"
+ },
+ "CR": {
+ "name": "Kusta Rika"
+ },
+ "CI": {
+ "name": "Kuṭ Divwar"
+ },
+ "KW": {
+ "name": "Kuwayt"
+ },
+ "CN": {
+ "name": "Lacin"
+ },
+ "GR": {
+ "name": "Lagris"
+ },
+ "JO": {
+ "name": "Lajurdani"
+ },
+ "AL": {
+ "name": "Lalbani"
+ },
+ "DE": {
+ "name": "Lalman"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LA": {
+ "name": "Laws"
+ },
+ "LI": {
+ "name": "Layctenstan"
+ },
+ "DZ": {
+ "name": "Lezzayer"
+ },
+ "IQ": {
+ "name": "Lɛiraq"
+ },
+ "IN": {
+ "name": "Lhend"
+ },
+ "LR": {
+ "name": "Libirya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "IE": {
+ "name": "Lirlund"
+ },
+ "LT": {
+ "name": "Liṭwanya"
+ },
+ "LS": {
+ "name": "Lizuṭu"
+ },
+ "MA": {
+ "name": "Lmerruk"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "LU": {
+ "name": "Luksamburg"
+ },
+ "YE": {
+ "name": "Lyamen"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madaɣecqer"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldib"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malizya"
+ },
+ "MT": {
+ "name": "Malṭ"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MK": {
+ "name": "Masidwan"
+ },
+ "EG": {
+ "name": "Maṣr"
+ },
+ "YT": {
+ "name": "Mayuṭ"
+ },
+ "MX": {
+ "name": "Meksik"
+ },
+ "FM": {
+ "name": "Mikrunizya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Muldabi"
+ },
+ "MC": {
+ "name": "Munaku"
+ },
+ "MN": {
+ "name": "Mungulya"
+ },
+ "MS": {
+ "name": "Munsirat"
+ },
+ "MU": {
+ "name": "Muris"
+ },
+ "MR": {
+ "name": "Muriṭanya"
+ },
+ "MZ": {
+ "name": "Muzembiq"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijirya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NP": {
+ "name": "Nipal"
+ },
+ "NU": {
+ "name": "Niwi"
+ },
+ "NR": {
+ "name": "Nuru"
+ },
+ "NO": {
+ "name": "Nurvij"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panam"
+ },
+ "PY": {
+ "name": "Paragway"
+ },
+ "PE": {
+ "name": "Piru"
+ },
+ "PN": {
+ "name": "Pitkarin"
+ },
+ "PL": {
+ "name": "Pulund"
+ },
+ "PF": {
+ "name": "Pulunizi tafransist"
+ },
+ "PR": {
+ "name": "Purtu Riku"
+ },
+ "PT": {
+ "name": "Purtugal"
+ },
+ "QA": {
+ "name": "Qaṭar"
+ },
+ "RU": {
+ "name": "Rrus"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SV": {
+ "name": "Salvadur"
+ },
+ "WS": {
+ "name": "Samwa"
+ },
+ "AS": {
+ "name": "Samwa Tamarikanit"
+ },
+ "KN": {
+ "name": "San Kits d Nivis"
+ },
+ "LC": {
+ "name": "San Lučya"
+ },
+ "SM": {
+ "name": "San Marinu"
+ },
+ "PM": {
+ "name": "San Pyar d Miklun"
+ },
+ "VC": {
+ "name": "San Vansu d Grunadin"
+ },
+ "SH": {
+ "name": "Sant Ilina"
+ },
+ "ST": {
+ "name": "Saw Tumi d Pransip"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seycel"
+ },
+ "SG": {
+ "name": "Singafur"
+ },
+ "SN": {
+ "name": "Sinigal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Sira Lyun"
+ },
+ "SK": {
+ "name": "Sluvakya"
+ },
+ "SI": {
+ "name": "Sluvinya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanya"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SA": {
+ "name": "Suɛudiya Taɛrabt"
+ },
+ "SO": {
+ "name": "Ṣumal"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilund"
+ },
+ "SE": {
+ "name": "Swid"
+ },
+ "CH": {
+ "name": "Swis"
+ },
+ "ZA": {
+ "name": "Tafriqt Wadda"
+ },
+ "GB": {
+ "name": "Tagelda Yedduklen"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Ṭanzanya"
+ },
+ "TH": {
+ "name": "Ṭayland"
+ },
+ "TW": {
+ "name": "Ṭaywan"
+ },
+ "IT": {
+ "name": "Ṭelyan"
+ },
+ "CF": {
+ "name": "Tigduda n Tefriqt Talemmast"
+ },
+ "DO": {
+ "name": "Tigduda Taduminikit"
+ },
+ "CD": {
+ "name": "Tigduda Tagdudant n Kungu"
+ },
+ "AE": {
+ "name": "Tigeldunin Yedduklen Taɛrabin"
+ },
+ "FK": {
+ "name": "Tigzirin n Falkland"
+ },
+ "KY": {
+ "name": "Tigzirin n Kamyan"
+ },
+ "CK": {
+ "name": "Tigzirin n Kuk"
+ },
+ "MH": {
+ "name": "Tigzirin n Marcal"
+ },
+ "MP": {
+ "name": "Tigzirin n Maryan Ufella"
+ },
+ "SB": {
+ "name": "Tigzirin n Sulumun"
+ },
+ "CV": {
+ "name": "Tigzirin n yixef azegzaw"
+ },
+ "NF": {
+ "name": "Tigzirin Tinawfukin"
+ },
+ "VG": {
+ "name": "Tigzirin Tiverjiniyin Tigliziyin"
+ },
+ "RE": {
+ "name": "Timlilit"
+ },
+ "NL": {
+ "name": "Timura-Yessakesren"
+ },
+ "TT": {
+ "name": "Ṭrindad d Ṭubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Ṭugu"
+ },
+ "TK": {
+ "name": "Ṭuklu"
+ },
+ "TL": {
+ "name": "Tumur Asamar"
+ },
+ "TN": {
+ "name": "Tunes"
+ },
+ "TO": {
+ "name": "Ṭunga"
+ },
+ "TR": {
+ "name": "Ṭurk"
+ },
+ "TC": {
+ "name": "Ṭurk d Tegzirin n Kaykus"
+ },
+ "TM": {
+ "name": "Ṭurkmanistan"
+ },
+ "TV": {
+ "name": "Ṭuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uɣanda"
+ },
+ "UA": {
+ "name": "Ukran"
+ },
+ "AD": {
+ "name": "Undura"
+ },
+ "AI": {
+ "name": "Ungiya"
+ },
+ "AO": {
+ "name": "Ungula"
+ },
+ "AG": {
+ "name": "Untiga d Barbuda"
+ },
+ "UY": {
+ "name": "Urugway"
+ },
+ "AU": {
+ "name": "Ustrali"
+ },
+ "AT": {
+ "name": "Ustriya"
+ },
+ "ET": {
+ "name": "Utyupi"
+ },
+ "UZ": {
+ "name": "Uzbaxistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VE": {
+ "name": "Venzwila"
+ },
+ "VN": {
+ "name": "Vyeṭnam"
+ },
+ "VI": {
+ "name": "W.D. Tigzirin n Virginya"
+ },
+ "WF": {
+ "name": "Wallis d Futuna"
+ },
+ "US": {
+ "name": "WDM"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "NZ": {
+ "name": "Ziland Tamaynut"
+ },
+ "ZW": {
+ "name": "Zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kam.json b/library/intl/resources/country/kam.json
new file mode 100644
index 000000000..f14e98d5e
--- /dev/null
+++ b/library/intl/resources/country/kam.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "CK": {
+ "name": "Isiwa sya Cook"
+ },
+ "KY": {
+ "name": "Isiwa sya Kayman"
+ },
+ "SB": {
+ "name": "Isiwa sya Solomon"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kananda"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "CN": {
+ "name": "Kyaina"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "BI": {
+ "name": "Mbulundi"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misili"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "ZM": {
+ "name": "Nzambia"
+ },
+ "ZW": {
+ "name": "Nzimbambwe"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UG": {
+ "name": "Ukanda"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "FR": {
+ "name": "Uvalanza"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kde.json b/library/intl/resources/country/kde.json
new file mode 100644
index 000000000..6f68bfaed
--- /dev/null
+++ b/library/intl/resources/country/kde.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "Adyentina"
+ },
+ "ZA": {
+ "name": "Afilika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljelia"
+ },
+ "AM": {
+ "name": "Almenia"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Balbuda"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austlalia"
+ },
+ "AT": {
+ "name": "Austlia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabadyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Belmuda"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BR": {
+ "name": "Blazili"
+ },
+ "BN": {
+ "name": "Blunei"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BF": {
+ "name": "Buchinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgalia"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Chisiwa cha Cook"
+ },
+ "FK": {
+ "name": "Chisiwa cha Falkland"
+ },
+ "KY": {
+ "name": "Chisiwa cha Kemen"
+ },
+ "MH": {
+ "name": "Chisiwa cha Malushal"
+ },
+ "MP": {
+ "name": "Chisiwa cha Marian cha Kasikazini"
+ },
+ "NF": {
+ "name": "Chisiwa cha Nolufok"
+ },
+ "SB": {
+ "name": "Chisiwa cha Solomon"
+ },
+ "TC": {
+ "name": "Chisiwa cha Tuluchi na Kaiko"
+ },
+ "VI": {
+ "name": "Chisiwa Chivihi cha Malekani"
+ },
+ "VG": {
+ "name": "Chisiwa Chivihi cha Wingalesa"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "GI": {
+ "name": "Diblalta"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "AE": {
+ "name": "Dimiliki dya Vakulungwa va Chalabu"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "JM": {
+ "name": "Dyamaika"
+ },
+ "JP": {
+ "name": "Dyapani"
+ },
+ "DJ": {
+ "name": "Dyibuti"
+ },
+ "GE": {
+ "name": "Dyodya"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "ER": {
+ "name": "Elitilea"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Glenada"
+ },
+ "GL": {
+ "name": "Glinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufalansa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondulasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungalia"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IL": {
+ "name": "Islaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "CF": {
+ "name": "Jamuhuli ya Afilika ya Paching’ati"
+ },
+ "CZ": {
+ "name": "Jamuhuli ya Chechi"
+ },
+ "CD": {
+ "name": "Jamuhuli ya Chidemoklasia ya kuKongo"
+ },
+ "DO": {
+ "name": "Jamuhuli ya Dominika"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KZ": {
+ "name": "Kazachistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kilibati"
+ },
+ "KG": {
+ "name": "Kiligizistani"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "HR": {
+ "name": "Kolasia"
+ },
+ "KP": {
+ "name": "Kolea Kasikazini"
+ },
+ "KR": {
+ "name": "Kolea Kusini"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostalika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuplosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libelia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "IO": {
+ "name": "Lieneo lyaki Nngalesa Nbahali ya Hindi"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MQ": {
+ "name": "Malitiniki"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "YT": {
+ "name": "Maole"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikilonesia"
+ },
+ "EG": {
+ "name": "Misli"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MR": {
+ "name": "Molitania"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Monselati"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "PS": {
+ "name": "Nchingu wa Magalibi wa Mpanda wa kuGaza wa kuPales"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nidyeli"
+ },
+ "NG": {
+ "name": "Nidyelia"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "GB": {
+ "name": "Nngalesa"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PY": {
+ "name": "Palagwai"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitikeluni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieli na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Glenadini"
+ },
+ "ST": {
+ "name": "Saotome na Prinsipe"
+ },
+ "SA": {
+ "name": "Saudia"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siela Leoni"
+ },
+ "SY": {
+ "name": "Silia"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tadikistani"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TT": {
+ "name": "Tilinidad na Tobago"
+ },
+ "TL": {
+ "name": "Timoli ya Mashaliki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tuluchimenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uadyemi"
+ },
+ "BE": {
+ "name": "Ubelgidi"
+ },
+ "DE": {
+ "name": "Udyerumani"
+ },
+ "FR": {
+ "name": "Ufalansa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugilichi"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "UA": {
+ "name": "Uklaini"
+ },
+ "PT": {
+ "name": "Uleno"
+ },
+ "UY": {
+ "name": "Ulugwai"
+ },
+ "RU": {
+ "name": "Ulusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluchi"
+ },
+ "UZ": {
+ "name": "Uzibechistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kea.json b/library/intl/resources/country/kea.json
new file mode 100644
index 000000000..426744a03
--- /dev/null
+++ b/library/intl/resources/country/kea.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistãu"
+ },
+ "ZA": {
+ "name": "Afrika di Sul"
+ },
+ "HT": {
+ "name": "Aiti"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alimanha"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "DZ": {
+ "name": "Arjelia"
+ },
+ "AR": {
+ "name": "Arjentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijãu"
+ },
+ "BS": {
+ "name": "Baamas"
+ },
+ "BD": {
+ "name": "Bangladexi"
+ },
+ "BH": {
+ "name": "Barain"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belizi"
+ },
+ "BE": {
+ "name": "Béljika"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Erzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butãu"
+ },
+ "DG": {
+ "name": "Diegu Garsia"
+ },
+ "DK": {
+ "name": "Dinamarka"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Ejitu"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiradus Arabi Unidu"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "GA": {
+ "name": "Gabãu"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernzi"
+ },
+ "GY": {
+ "name": "Giana"
+ },
+ "GF": {
+ "name": "Giana Franseza"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine Ekuatorial"
+ },
+ "GW": {
+ "name": "Gine-Bisau"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Gresia"
+ },
+ "GL": {
+ "name": "Gronelandia"
+ },
+ "GP": {
+ "name": "Guadalupi"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatimala"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "AC": {
+ "name": "Ilha di Asensãu"
+ },
+ "IM": {
+ "name": "Ilha di Man"
+ },
+ "CX": {
+ "name": "Ilha di Natal"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "IO": {
+ "name": "Ilhas Britanika di Indiku"
+ },
+ "FO": {
+ "name": "Ilhas Faroe"
+ },
+ "KY": {
+ "name": "Ilhas Kaimãu"
+ },
+ "CC": {
+ "name": "Ilhas Kokus"
+ },
+ "CK": {
+ "name": "Ilhas Kuk"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas di Norti"
+ },
+ "MH": {
+ "name": "Ilhas Marxal"
+ },
+ "MU": {
+ "name": "Ilhas Maurisia"
+ },
+ "UM": {
+ "name": "Ilhas Minoris Distantis de Stadus Unidus"
+ },
+ "NF": {
+ "name": "Ilhas Norfolk"
+ },
+ "SB": {
+ "name": "Ilhas Salumon"
+ },
+ "TC": {
+ "name": "Ilhas Turkas i Kaikus"
+ },
+ "VG": {
+ "name": "Ilhas Virjens Britanikas"
+ },
+ "VI": {
+ "name": "Ilhas Virjens Merkanu"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "ER": {
+ "name": "Iritreia"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IR": {
+ "name": "Iron"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "ET": {
+ "name": "Itiopia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japãu"
+ },
+ "GS": {
+ "name": "Jeórjia di Sul i Ilhas di Sanduixi di Sul"
+ },
+ "JE": {
+ "name": "Jersi"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "GE": {
+ "name": "Jiorjia"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "CV": {
+ "name": "Kabu Verdi"
+ },
+ "CM": {
+ "name": "Kamarõis"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "KM": {
+ "name": "Kamoris"
+ },
+ "CA": {
+ "name": "Kanadá"
+ },
+ "IC": {
+ "name": "Kanárias"
+ },
+ "BQ": {
+ "name": "Karaibas olandes"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistãu"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgiston"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongu - Brazavili"
+ },
+ "CD": {
+ "name": "Kongu - Kinxasa"
+ },
+ "KP": {
+ "name": "Koreia di Norti"
+ },
+ "KR": {
+ "name": "Koreia di Sul"
+ },
+ "CI": {
+ "name": "Kosta di Marfin"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "XK": {
+ "name": "Kozovu"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kueiti"
+ },
+ "CO": {
+ "name": "Kulombia"
+ },
+ "CW": {
+ "name": "Kurasau"
+ },
+ "LA": {
+ "name": "Laus"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LS": {
+ "name": "Lezotu"
+ },
+ "LB": {
+ "name": "Libanu"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LI": {
+ "name": "Lixenstain"
+ },
+ "LU": {
+ "name": "Luxemburgu"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MY": {
+ "name": "Malazia"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokus"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MK": {
+ "name": "Masidonia"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MX": {
+ "name": "Mexiku"
+ },
+ "MM": {
+ "name": "Mianmar"
+ },
+ "FM": {
+ "name": "Mikronezia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaku"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "ME": {
+ "name": "Montenegru"
+ },
+ "MZ": {
+ "name": "Musambiki"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Kalidonia"
+ },
+ "NZ": {
+ "name": "Nova Zilandia"
+ },
+ "NL": {
+ "name": "Olanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HN": {
+ "name": "Onduras"
+ },
+ "PK": {
+ "name": "Pakistãu"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palistina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nova Gine"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pirkairn"
+ },
+ "PF": {
+ "name": "Polinezia Franseza"
+ },
+ "PR": {
+ "name": "Portu Riku"
+ },
+ "PL": {
+ "name": "Pulonia"
+ },
+ "PT": {
+ "name": "Purtugal"
+ },
+ "GB": {
+ "name": "Reinu Unidu"
+ },
+ "MO": {
+ "name": "Rejiãu Administrativu Special di Makau"
+ },
+ "HK": {
+ "name": "Rejiãu Administrativu Special di Ong Kong"
+ },
+ "DO": {
+ "name": "Repúblika Dominikana"
+ },
+ "CF": {
+ "name": "Republika Sentru-Afrikanu"
+ },
+ "CZ": {
+ "name": "Republika Txeka"
+ },
+ "RO": {
+ "name": "Romenia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RE": {
+ "name": "Runion"
+ },
+ "RU": {
+ "name": "Rúsia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Merkanu"
+ },
+ "SM": {
+ "name": "San Marinu"
+ },
+ "PM": {
+ "name": "San Piere i Mikelon"
+ },
+ "SH": {
+ "name": "Santa Ilena"
+ },
+ "LC": {
+ "name": "Santa Lúsia"
+ },
+ "EH": {
+ "name": "Sara Osidental"
+ },
+ "BL": {
+ "name": "Sãu Bartolomeu"
+ },
+ "VC": {
+ "name": "Sãu Bisenti i Granadinas"
+ },
+ "KN": {
+ "name": "Sãu Kristovãu i Nevis"
+ },
+ "MF": {
+ "name": "Sãu Martinhu di Fransa"
+ },
+ "SX": {
+ "name": "Sãu Martinhu di Olanda"
+ },
+ "ST": {
+ "name": "Sãu Tume i Prinsipi"
+ },
+ "SC": {
+ "name": "Seixelis"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sera Lioa"
+ },
+ "RS": {
+ "name": "Servia"
+ },
+ "EA": {
+ "name": "Seuta i Melila"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "ES": {
+ "name": "Spanha"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadus Unidos di Merka"
+ },
+ "EE": {
+ "name": "Stonia"
+ },
+ "SZ": {
+ "name": "Suazilándia"
+ },
+ "SD": {
+ "name": "Sudãu"
+ },
+ "SS": {
+ "name": "Sudãu di Sul"
+ },
+ "SE": {
+ "name": "Suesia"
+ },
+ "CH": {
+ "name": "Suisa"
+ },
+ "SO": {
+ "name": "Sumalia"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Maien"
+ },
+ "TJ": {
+ "name": "Tadjikistãu"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiuan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Terras Franses di Sul"
+ },
+ "TL": {
+ "name": "Timor Lesti"
+ },
+ "TG": {
+ "name": "Togu"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobagu"
+ },
+ "TA": {
+ "name": "Tristan da Kunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkumenistãu"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txadi"
+ },
+ "WF": {
+ "name": "Ualis i Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrania"
+ },
+ "HU": {
+ "name": "Ungria"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistãu"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanu"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "VE": {
+ "name": "Vinizuela"
+ },
+ "CL": {
+ "name": "Xili"
+ },
+ "CN": {
+ "name": "Xina"
+ },
+ "CY": {
+ "name": "Xipri"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabui"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/khq.json b/library/intl/resources/country/khq.json
new file mode 100644
index 000000000..bdbd80aee
--- /dev/null
+++ b/library/intl/resources/country/khq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayceland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "Kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Šiili"
+ },
+ "CN": {
+ "name": "Šiin"
+ },
+ "CY": {
+ "name": "Šiipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ki.json b/library/intl/resources/country/ki.json
new file mode 100644
index 000000000..0d37a4225
--- /dev/null
+++ b/library/intl/resources/country/ki.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "CN": {
+ "name": "Caina"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CU": {
+ "name": "Kiumba"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "BI": {
+ "name": "Mburundi"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NG": {
+ "name": "Nainjeria"
+ },
+ "NA": {
+ "name": "Namimbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "GH": {
+ "name": "Ngana"
+ },
+ "GB": {
+ "name": "Ngeretha"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "JP": {
+ "name": "Njabani"
+ },
+ "DE": {
+ "name": "Njeremani"
+ },
+ "JO": {
+ "name": "Njorondani"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somaria"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "FR": {
+ "name": "Ubaranja"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kk.json b/library/intl/resources/country/kk.json
new file mode 100644
index 000000000..5262049b3
--- /dev/null
+++ b/library/intl/resources/country/kk.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралия"
+ },
+ "AT": {
+ "name": "Австрия"
+ },
+ "US": {
+ "name": "АҚШ"
+ },
+ "VI": {
+ "name": "АҚШ-тың Виргин аралдары"
+ },
+ "UM": {
+ "name": "АҚШ-тың ішкі кіші аралдары"
+ },
+ "AX": {
+ "name": "Аланд аралдары"
+ },
+ "AL": {
+ "name": "Албания"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Американ Самоасы"
+ },
+ "AI": {
+ "name": "Ангилья"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктика"
+ },
+ "AG": {
+ "name": "Антигуа мен Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AM": {
+ "name": "Армения"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AF": {
+ "name": "Ауғанстан"
+ },
+ "AZ": {
+ "name": "Әзербайжан"
+ },
+ "SH": {
+ "name": "Әулие Елена аралы"
+ },
+ "BS": {
+ "name": "Багам аралдары"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "EH": {
+ "name": "Батыс Сахара"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "Беларусь"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "Бельгия"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд аралдары"
+ },
+ "BG": {
+ "name": "Болгария"
+ },
+ "BO": {
+ "name": "Боливия"
+ },
+ "BA": {
+ "name": "Босния және Герцеговина"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразилия"
+ },
+ "VG": {
+ "name": "Британдық Виргин аралдары"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "AE": {
+ "name": "Біріккен Араб Эмираттары"
+ },
+ "GB": {
+ "name": "Бірікккен Корольдік"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "Венгрия"
+ },
+ "VE": {
+ "name": "Венесуэла"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "Гамбия"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинея"
+ },
+ "GW": {
+ "name": "Гвинея-Бисау"
+ },
+ "DE": {
+ "name": "Германия"
+ },
+ "GG": {
+ "name": "Гернси"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "NL": {
+ "name": "Голландия"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландия"
+ },
+ "GR": {
+ "name": "Греция"
+ },
+ "GE": {
+ "name": "Грузия"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "AC": {
+ "name": "Ғибадат аралы"
+ },
+ "DK": {
+ "name": "Дания"
+ },
+ "JE": {
+ "name": "Джерси"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего-Гарсия"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминикан Республикасы"
+ },
+ "NZ": {
+ "name": "Жаңа Зеландия"
+ },
+ "NC": {
+ "name": "Жаңа Каледония"
+ },
+ "JP": {
+ "name": "Жапония"
+ },
+ "ZM": {
+ "name": "Замбия"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "ID": {
+ "name": "Индонезия"
+ },
+ "JO": {
+ "name": "Иордания"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирландия"
+ },
+ "IS": {
+ "name": "Исландия"
+ },
+ "ES": {
+ "name": "Испания"
+ },
+ "IT": {
+ "name": "Италия"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KY": {
+ "name": "Кайман аралдары"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар аралдары"
+ },
+ "BQ": {
+ "name": "Кариб Нидерландысы"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кения"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос аралдары"
+ },
+ "CO": {
+ "name": "Колумбия"
+ },
+ "KM": {
+ "name": "Комор"
+ },
+ "CD": {
+ "name": "Конго"
+ },
+ "CG": {
+ "name": "Конго-Браззавиль Республикасы"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CX": {
+ "name": "Кристмас аралы"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CK": {
+ "name": "Кук аралдары"
+ },
+ "CW": {
+ "name": "Кюрасао"
+ },
+ "KZ": {
+ "name": "Қазақстан"
+ },
+ "KG": {
+ "name": "Қырғызстан"
+ },
+ "CN": {
+ "name": "Қытай"
+ },
+ "HK": {
+ "name": "Қытай Халық Республикасының Гонг-Конг арнайы әкімшілік ауданы"
+ },
+ "MO": {
+ "name": "Қытай Халық Республикасының Макао арнайы әкімшілік ауданы"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвия"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либерия"
+ },
+ "LY": {
+ "name": "Либия"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "Мавритания"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MK": {
+ "name": "Македония"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайзия"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив Республикасы"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалл аралдары"
+ },
+ "MX": {
+ "name": "Мексика"
+ },
+ "FM": {
+ "name": "Микронезия"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MS": {
+ "name": "Монтсеррат"
+ },
+ "MN": {
+ "name": "Моңғолия"
+ },
+ "MA": {
+ "name": "Морокко"
+ },
+ "EG": {
+ "name": "Мысыр"
+ },
+ "MM": {
+ "name": "Мьянма (Бирма)"
+ },
+ "IM": {
+ "name": "Мэн аралы"
+ },
+ "NA": {
+ "name": "Намибия"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерия"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуэ"
+ },
+ "NO": {
+ "name": "Норвегия"
+ },
+ "NF": {
+ "name": "Норфолк аралы"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "ZA": {
+ "name": "Оңтүстік Африка республикасы"
+ },
+ "GS": {
+ "name": "Оңтүстік Георгия және Оңтүстік Сандвичев аралы"
+ },
+ "KP": {
+ "name": "Оңтүстік Корея"
+ },
+ "SS": {
+ "name": "Оңтүстік Судан"
+ },
+ "CF": {
+ "name": "Орталық Африка Республикасы"
+ },
+ "UZ": {
+ "name": "Өзбекстан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестина аймақтары"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа — Жаңа Гвинея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PK": {
+ "name": "Пәкістан"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкэрн аралдары"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "Португалия"
+ },
+ "PR": {
+ "name": "Пуэрто-Рико"
+ },
+ "RU": {
+ "name": "Ресей"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румыния"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе мен Принсипи"
+ },
+ "SA": {
+ "name": "Сауд Арабиясы"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SC": {
+ "name": "Сейшель аралдары"
+ },
+ "BL": {
+ "name": "Сен-Бартелеми"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пьер және Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-Винсент және Гренадиндер"
+ },
+ "KN": {
+ "name": "Сент-Китс және Невис"
+ },
+ "LC": {
+ "name": "Сент-Люсия"
+ },
+ "RS": {
+ "name": "Сербия"
+ },
+ "EA": {
+ "name": "Сеута мен Мелилья"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Мартен"
+ },
+ "SY": {
+ "name": "Сирия"
+ },
+ "SK": {
+ "name": "Словакия"
+ },
+ "SI": {
+ "name": "Словения"
+ },
+ "SB": {
+ "name": "Соломон аралдары"
+ },
+ "KR": {
+ "name": "Солтүстік Корея"
+ },
+ "MP": {
+ "name": "Солтүстік Мариан аралдары"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "Танзания"
+ },
+ "TJ": {
+ "name": "Тәжікстан"
+ },
+ "TL": {
+ "name": "Тимор-Лесте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад пен Тобаго"
+ },
+ "TA": {
+ "name": "Тристан-да-Кунья"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TC": {
+ "name": "Туркс пен Кайкос"
+ },
+ "TR": {
+ "name": "Түркия"
+ },
+ "TM": {
+ "name": "Түрікменстан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "WF": {
+ "name": "Уоллис пен Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "IO": {
+ "name": "Үнді мұхитындағы Британ аймағы"
+ },
+ "IN": {
+ "name": "Үндістан"
+ },
+ "FO": {
+ "name": "Фарер аралдары"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филиппиндер"
+ },
+ "FI": {
+ "name": "Финляндия"
+ },
+ "FK": {
+ "name": "Фолкленд аралдары"
+ },
+ "FR": {
+ "name": "Франция"
+ },
+ "TF": {
+ "name": "Францияның солтүстік аймағы"
+ },
+ "GF": {
+ "name": "Француз Гвианасы"
+ },
+ "PF": {
+ "name": "Француз Полинезиясы"
+ },
+ "HR": {
+ "name": "Хорватия"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черногория"
+ },
+ "CZ": {
+ "name": "Чех Республикасы"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "Швейцария"
+ },
+ "SE": {
+ "name": "Швеция"
+ },
+ "SJ": {
+ "name": "Шпицберген мен Ян-Майен"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваторлық Гвинея"
+ },
+ "ER": {
+ "name": "Эритрея"
+ },
+ "EE": {
+ "name": "Эстония"
+ },
+ "ET": {
+ "name": "Эфиопия"
+ },
+ "JM": {
+ "name": "Ямайка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kl.json b/library/intl/resources/country/kl.json
new file mode 100644
index 000000000..a770f7ee2
--- /dev/null
+++ b/library/intl/resources/country/kl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistani"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua aamma Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension qeqertaq"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "SD": {
+ "name": "Avannarleqsudan"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia aamma Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman qeqertaq"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta aamma Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CC": {
+ "name": "Cocos qeqertaq"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CK": {
+ "name": "Cook qeqertaq"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlandi"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falklandi qeqertaq"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finlandi"
+ },
+ "FR": {
+ "name": "Frankrigi"
+ },
+ "MF": {
+ "name": "Frankrigi Saint Martin"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grækenlandi"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Hollandi"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "BY": {
+ "name": "Hvideruslandi"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandi"
+ },
+ "IS": {
+ "name": "Islandi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "CX": {
+ "name": "Jul-qeqertaq"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanaria qeqertaq"
+ },
+ "KZ": {
+ "name": "Kasakhstani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "KP": {
+ "name": "Korea Avannarleq"
+ },
+ "KR": {
+ "name": "Korea Kujalleq"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "ZA": {
+ "name": "Kujalleqafrika"
+ },
+ "SS": {
+ "name": "Kujalleqsudan"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letlandi"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtensteini"
+ },
+ "LT": {
+ "name": "Litaueni"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "US": {
+ "name": "Naalagaaffeqatigiit"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NC": {
+ "name": "Nutaaq Caledonia"
+ },
+ "NZ": {
+ "name": "Nutaaq Zeelandi"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nutaaq Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poleni"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "AQ": {
+ "name": "Qalasersuaq Kujalleq"
+ },
+ "QA": {
+ "name": "Quatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumænia"
+ },
+ "RU": {
+ "name": "Ruslandi"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Killiit"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts aamma Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre aamma Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé aamma Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "FO": {
+ "name": "Savalimmiut"
+ },
+ "CH": {
+ "name": "Schweizi"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard aamma Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandi"
+ },
+ "TL": {
+ "name": "Timor Kangilliit"
+ },
+ "CZ": {
+ "name": "Tjekkia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad aamma Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "GB": {
+ "name": "Tuluit Nunaat"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistani"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tysklandi"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarni"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis aamma Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AT": {
+ "name": "Østrigi"
+ },
+ "AX": {
+ "name": "Ålandi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kln.json b/library/intl/resources/country/kln.json
new file mode 100644
index 000000000..ee8ae7c39
--- /dev/null
+++ b/library/intl/resources/country/kln.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "AF": {
+ "name": "Emetab Afghanistan"
+ },
+ "CF": {
+ "name": "Emetab Afrika nebo Kwen"
+ },
+ "ZA": {
+ "name": "Emetab Afrika nebo Murot tai"
+ },
+ "AL": {
+ "name": "Emetab Albania"
+ },
+ "DZ": {
+ "name": "Emetab Algeria"
+ },
+ "AS": {
+ "name": "Emetab American Samoa"
+ },
+ "US": {
+ "name": "Emetab amerika"
+ },
+ "AD": {
+ "name": "Emetab Andorra"
+ },
+ "AO": {
+ "name": "Emetab Angola"
+ },
+ "AI": {
+ "name": "Emetab Anguilla"
+ },
+ "AG": {
+ "name": "Emetab Antigua ak Barbuda"
+ },
+ "AR": {
+ "name": "Emetab Argentina"
+ },
+ "AM": {
+ "name": "Emetab Armenia"
+ },
+ "AW": {
+ "name": "Emetab Aruba"
+ },
+ "AU": {
+ "name": "Emetab Australia"
+ },
+ "AT": {
+ "name": "Emetab Austria"
+ },
+ "AZ": {
+ "name": "Emetab Azerbaijan"
+ },
+ "BS": {
+ "name": "Emetab Bahamas"
+ },
+ "BH": {
+ "name": "Emetab Bahrain"
+ },
+ "BD": {
+ "name": "Emetab Bangladesh"
+ },
+ "BB": {
+ "name": "Emetab Barbados"
+ },
+ "BY": {
+ "name": "Emetab Belarus"
+ },
+ "BE": {
+ "name": "Emetab Belgium"
+ },
+ "BZ": {
+ "name": "Emetab Belize"
+ },
+ "BJ": {
+ "name": "Emetab Benin"
+ },
+ "BM": {
+ "name": "Emetab Bermuda"
+ },
+ "BT": {
+ "name": "Emetab Bhutan"
+ },
+ "BO": {
+ "name": "Emetab Bolivia"
+ },
+ "BA": {
+ "name": "Emetab Bosnia ak Herzegovina"
+ },
+ "BW": {
+ "name": "Emetab Botswana"
+ },
+ "BR": {
+ "name": "Emetab Brazil"
+ },
+ "BN": {
+ "name": "Emetab Brunei"
+ },
+ "BG": {
+ "name": "Emetab Bulgaria"
+ },
+ "BF": {
+ "name": "Emetab Burkina Faso"
+ },
+ "BI": {
+ "name": "Emetab Burundi"
+ },
+ "KH": {
+ "name": "Emetab Cambodia"
+ },
+ "CM": {
+ "name": "Emetab Cameroon"
+ },
+ "CA": {
+ "name": "Emetab Canada"
+ },
+ "TD": {
+ "name": "Emetab Chad"
+ },
+ "CL": {
+ "name": "Emetab Chile"
+ },
+ "CN": {
+ "name": "Emetab China"
+ },
+ "CO": {
+ "name": "Emetab Colombia"
+ },
+ "KM": {
+ "name": "Emetab Comoros"
+ },
+ "CG": {
+ "name": "Emetab Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Emetab Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Emetab Costa Rica"
+ },
+ "CI": {
+ "name": "Emetab Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Emetab Croatia"
+ },
+ "CU": {
+ "name": "Emetab Cuba"
+ },
+ "CY": {
+ "name": "Emetab Cyprus"
+ },
+ "CZ": {
+ "name": "Emetab Czech Republic"
+ },
+ "DK": {
+ "name": "Emetab Denmark"
+ },
+ "DJ": {
+ "name": "Emetab Djibouti"
+ },
+ "DM": {
+ "name": "Emetab Dominica"
+ },
+ "DO": {
+ "name": "Emetab Dominican Republic"
+ },
+ "EC": {
+ "name": "Emetab Ecuador"
+ },
+ "SV": {
+ "name": "Emetab El Salvador"
+ },
+ "GQ": {
+ "name": "Emetab Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Emetab Eritrea"
+ },
+ "EE": {
+ "name": "Emetab Estonia"
+ },
+ "ET": {
+ "name": "Emetab Ethiopia"
+ },
+ "FJ": {
+ "name": "Emetab Fiji"
+ },
+ "FI": {
+ "name": "Emetab Finland"
+ },
+ "FR": {
+ "name": "Emetab France"
+ },
+ "GA": {
+ "name": "Emetab Gabon"
+ },
+ "GM": {
+ "name": "Emetab Gambia"
+ },
+ "GE": {
+ "name": "Emetab Georgia"
+ },
+ "DE": {
+ "name": "Emetab Geruman"
+ },
+ "GH": {
+ "name": "Emetab Ghana"
+ },
+ "GI": {
+ "name": "Emetab Gibraltar"
+ },
+ "GR": {
+ "name": "Emetab Greece"
+ },
+ "GL": {
+ "name": "Emetab Greenland"
+ },
+ "GD": {
+ "name": "Emetab Grenada"
+ },
+ "GP": {
+ "name": "Emetab Guadeloupe"
+ },
+ "GU": {
+ "name": "Emetab Guam"
+ },
+ "GT": {
+ "name": "Emetab Guatemala"
+ },
+ "GF": {
+ "name": "Emetab Guiana nebo Ufaransa"
+ },
+ "GN": {
+ "name": "Emetab Guinea"
+ },
+ "GW": {
+ "name": "Emetab Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Emetab Guyana"
+ },
+ "HT": {
+ "name": "Emetab Haiti"
+ },
+ "SH": {
+ "name": "Emetab Helena Ne tilil"
+ },
+ "NL": {
+ "name": "Emetab Holand"
+ },
+ "HN": {
+ "name": "Emetab Honduras"
+ },
+ "HU": {
+ "name": "Emetab Hungary"
+ },
+ "IS": {
+ "name": "Emetab Iceland"
+ },
+ "IN": {
+ "name": "Emetab India"
+ },
+ "ID": {
+ "name": "Emetab Indonesia"
+ },
+ "IR": {
+ "name": "Emetab Iran"
+ },
+ "IQ": {
+ "name": "Emetab Iraq"
+ },
+ "IE": {
+ "name": "Emetab Ireland"
+ },
+ "IL": {
+ "name": "Emetab Israel"
+ },
+ "IT": {
+ "name": "Emetab Italy"
+ },
+ "JM": {
+ "name": "Emetab Jamaica"
+ },
+ "JP": {
+ "name": "Emetab Japan"
+ },
+ "JO": {
+ "name": "Emetab Jordan"
+ },
+ "KZ": {
+ "name": "Emetab Kazakhstan"
+ },
+ "KE": {
+ "name": "Emetab Kenya"
+ },
+ "AE": {
+ "name": "Emetab kibagenge nebo arabuk"
+ },
+ "GB": {
+ "name": "Emetab Kibagenge nebo Uingereza"
+ },
+ "KI": {
+ "name": "Emetab Kiribati"
+ },
+ "KP": {
+ "name": "Emetab Korea nebo murot katam"
+ },
+ "KR": {
+ "name": "Emetab korea nebo murot tai"
+ },
+ "KW": {
+ "name": "Emetab Kuwait"
+ },
+ "KG": {
+ "name": "Emetab Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Emetab Laos"
+ },
+ "LV": {
+ "name": "Emetab Latvia"
+ },
+ "LB": {
+ "name": "Emetab Lebanon"
+ },
+ "LS": {
+ "name": "Emetab Lesotho"
+ },
+ "LR": {
+ "name": "Emetab Liberia"
+ },
+ "LY": {
+ "name": "Emetab Libya"
+ },
+ "LI": {
+ "name": "Emetab Liechtenstein"
+ },
+ "LT": {
+ "name": "Emetab Lithuania"
+ },
+ "LC": {
+ "name": "Emetab Lucia Ne"
+ },
+ "LU": {
+ "name": "Emetab Luxembourg"
+ },
+ "MK": {
+ "name": "Emetab Macedonia"
+ },
+ "MG": {
+ "name": "Emetab Madagascar"
+ },
+ "MW": {
+ "name": "Emetab Malawi"
+ },
+ "MY": {
+ "name": "Emetab Malaysia"
+ },
+ "MV": {
+ "name": "Emetab Maldives"
+ },
+ "ML": {
+ "name": "Emetab Mali"
+ },
+ "MT": {
+ "name": "Emetab Malta"
+ },
+ "MQ": {
+ "name": "Emetab Martinique"
+ },
+ "MR": {
+ "name": "Emetab Mauritania"
+ },
+ "MU": {
+ "name": "Emetab Mauritius"
+ },
+ "YT": {
+ "name": "Emetab Mayotte"
+ },
+ "MX": {
+ "name": "Emetab Mexico"
+ },
+ "FM": {
+ "name": "Emetab Micronesia"
+ },
+ "EG": {
+ "name": "Emetab Misiri"
+ },
+ "MD": {
+ "name": "Emetab Moldova"
+ },
+ "MC": {
+ "name": "Emetab Monaco"
+ },
+ "MN": {
+ "name": "Emetab Mongolia"
+ },
+ "MS": {
+ "name": "Emetab Montserrat"
+ },
+ "MA": {
+ "name": "Emetab Morocco"
+ },
+ "MZ": {
+ "name": "Emetab Mozambique"
+ },
+ "MM": {
+ "name": "Emetab Myanmar"
+ },
+ "NA": {
+ "name": "Emetab Namibia"
+ },
+ "NR": {
+ "name": "Emetab Nauru"
+ },
+ "NP": {
+ "name": "Emetab Nepal"
+ },
+ "NC": {
+ "name": "Emetab New Caledonia"
+ },
+ "NZ": {
+ "name": "Emetab New Zealand"
+ },
+ "NI": {
+ "name": "Emetab Nicaragua"
+ },
+ "NE": {
+ "name": "Emetab niger"
+ },
+ "NG": {
+ "name": "Emetab Nigeria"
+ },
+ "NU": {
+ "name": "Emetab Niue"
+ },
+ "NO": {
+ "name": "Emetab Norway"
+ },
+ "OM": {
+ "name": "Emetab Oman"
+ },
+ "PK": {
+ "name": "Emetab Pakistan"
+ },
+ "PW": {
+ "name": "Emetab Palau"
+ },
+ "PS": {
+ "name": "Emetab Palestine"
+ },
+ "PA": {
+ "name": "Emetab Panama"
+ },
+ "PG": {
+ "name": "Emetab Papua New Guinea"
+ },
+ "PY": {
+ "name": "Emetab Paraguay"
+ },
+ "PE": {
+ "name": "Emetab Peru"
+ },
+ "PM": {
+ "name": "Emetab Peter Ne titil ak Miquelon"
+ },
+ "PH": {
+ "name": "Emetab Philippines"
+ },
+ "PN": {
+ "name": "Emetab Pitcairn"
+ },
+ "PL": {
+ "name": "Emetab Poland"
+ },
+ "PF": {
+ "name": "Emetab Polynesia nebo ufaransa"
+ },
+ "PT": {
+ "name": "Emetab Portugal"
+ },
+ "PR": {
+ "name": "Emetab Puerto Rico"
+ },
+ "QA": {
+ "name": "Emetab Qatar"
+ },
+ "RE": {
+ "name": "Emetab Réunion"
+ },
+ "RO": {
+ "name": "Emetab Romania"
+ },
+ "RU": {
+ "name": "Emetab Russia"
+ },
+ "RW": {
+ "name": "Emetab Rwanda"
+ },
+ "KN": {
+ "name": "Emetab Saint Kitts ak Nevis"
+ },
+ "WS": {
+ "name": "Emetab Samoa"
+ },
+ "SM": {
+ "name": "Emetab San Marino"
+ },
+ "ST": {
+ "name": "Emetab São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Emetab Saudi Arabia"
+ },
+ "SN": {
+ "name": "Emetab Senegal"
+ },
+ "SC": {
+ "name": "Emetab Seychelles"
+ },
+ "SL": {
+ "name": "Emetab Sierra Leone"
+ },
+ "SG": {
+ "name": "Emetab Singapore"
+ },
+ "SK": {
+ "name": "Emetab Slovakia"
+ },
+ "SI": {
+ "name": "Emetab Slovenia"
+ },
+ "SO": {
+ "name": "Emetab Somalia"
+ },
+ "ES": {
+ "name": "Emetab Spain"
+ },
+ "LK": {
+ "name": "Emetab Sri Lanka"
+ },
+ "SD": {
+ "name": "Emetab Sudan"
+ },
+ "SR": {
+ "name": "Emetab Suriname"
+ },
+ "SZ": {
+ "name": "Emetab Swaziland"
+ },
+ "SE": {
+ "name": "Emetab Sweden"
+ },
+ "CH": {
+ "name": "Emetab Switzerland"
+ },
+ "SY": {
+ "name": "Emetab Syria"
+ },
+ "TW": {
+ "name": "Emetab Taiwan"
+ },
+ "TJ": {
+ "name": "Emetab Tajikistan"
+ },
+ "TZ": {
+ "name": "Emetab Tanzania"
+ },
+ "TH": {
+ "name": "Emetab Thailand"
+ },
+ "TL": {
+ "name": "Emetab Timor nebo Murot tai"
+ },
+ "TG": {
+ "name": "Emetab Togo"
+ },
+ "TK": {
+ "name": "Emetab Tokelau"
+ },
+ "TO": {
+ "name": "Emetab Tonga"
+ },
+ "TT": {
+ "name": "Emetab Trinidad ak Tobago"
+ },
+ "TN": {
+ "name": "Emetab Tunisia"
+ },
+ "TR": {
+ "name": "Emetab Turkey"
+ },
+ "TM": {
+ "name": "Emetab Turkmenistan"
+ },
+ "TV": {
+ "name": "Emetab Tuvalu"
+ },
+ "UG": {
+ "name": "Emetab Uganda"
+ },
+ "UA": {
+ "name": "Emetab Ukrainie"
+ },
+ "UY": {
+ "name": "Emetab Uruguay"
+ },
+ "UZ": {
+ "name": "Emetab Uzibekistani"
+ },
+ "VU": {
+ "name": "Emetab Vanuatu"
+ },
+ "VA": {
+ "name": "Emetab Vatican"
+ },
+ "VE": {
+ "name": "Emetab Venezuela"
+ },
+ "VN": {
+ "name": "Emetab Vietnam"
+ },
+ "VC": {
+ "name": "Emetab Vincent netilil ak Grenadines"
+ },
+ "WF": {
+ "name": "Emetab Walis ak Futuna"
+ },
+ "YE": {
+ "name": "Emetab Yemen"
+ },
+ "ZM": {
+ "name": "Emetab Zambia"
+ },
+ "ZW": {
+ "name": "Emetab Zimbabwe"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "MP": {
+ "name": "Ikwembeiyotab Mariana nebo murot katam"
+ },
+ "MH": {
+ "name": "Ikwembeiyotab Marshall"
+ },
+ "NF": {
+ "name": "Ikwembeiyotab Norfork"
+ },
+ "SB": {
+ "name": "Ikwembeiyotab Solomon"
+ },
+ "TC": {
+ "name": "Ikwembeiyotab Turks ak Caicos"
+ },
+ "VG": {
+ "name": "Ikwembeyotab British Virgin"
+ },
+ "CV": {
+ "name": "Ikwembeyotab Cape Verde"
+ },
+ "KY": {
+ "name": "Ikwembeyotab Cayman"
+ },
+ "CK": {
+ "name": "Ikwembeyotab Cook"
+ },
+ "FK": {
+ "name": "Ikwembeyotab Falkland"
+ },
+ "VI": {
+ "name": "Ikwemweiyotab Amerika"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "IO": {
+ "name": "Kebebertab araraitab indian Ocean nebo Uingeresa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/km.json b/library/intl/resources/country/km.json
new file mode 100644
index 000000000..96beeb1b7
--- /dev/null
+++ b/library/intl/resources/country/km.json
@@ -0,0 +1,761 @@
+{
+ "KH": {
+ "name": "កម្ពុជា"
+ },
+ "CA": {
+ "name": "កាណាដា"
+ },
+ "QA": {
+ "name": "កាតារ"
+ },
+ "CV": {
+ "name": "កាបវែរ"
+ },
+ "CM": {
+ "name": "កាមេរូន"
+ },
+ "KZ": {
+ "name": "កាហ្សាក់ស្តាង់់"
+ },
+ "CG": {
+ "name": "កុងហ្គោ - ប្រាហ្សាវីល"
+ },
+ "CD": {
+ "name": "កុងហ្គោ- គីនស្ហាសា"
+ },
+ "CI": {
+ "name": "កូដឌីវ័រ"
+ },
+ "CW": {
+ "name": "កូរ៉ាកៅ"
+ },
+ "KP": {
+ "name": "កូរ៉េ​ខាង​ជើង"
+ },
+ "KR": {
+ "name": "កូរ៉េ​ខាង​ត្បូង"
+ },
+ "XK": {
+ "name": "កូសូវ៉ូ"
+ },
+ "CR": {
+ "name": "កូស្តារីកា"
+ },
+ "CO": {
+ "name": "កូឡុំប៊ី"
+ },
+ "KE": {
+ "name": "កេនយ៉ា"
+ },
+ "KM": {
+ "name": "កុំម៉ូរ៉ូស"
+ },
+ "IC": {
+ "name": "កោះ​កាណារី"
+ },
+ "CC": {
+ "name": "កោះ​កូកូស"
+ },
+ "TC": {
+ "name": "កោះ​កៃកូស និងទូក"
+ },
+ "KY": {
+ "name": "កោះ​កៃម៉ង់"
+ },
+ "CK": {
+ "name": "កោះ​ខូក"
+ },
+ "CX": {
+ "name": "កោះ​គ្រីស្មាស"
+ },
+ "NF": {
+ "name": "កោះ​ណ័រហ្វក់"
+ },
+ "PN": {
+ "name": "កោះ​ភីតខារិន"
+ },
+ "MP": {
+ "name": "កោះ​ម៉ារីណា​ខាង​ជើង"
+ },
+ "MH": {
+ "name": "កោះ​ម៉ាស់សល"
+ },
+ "VG": {
+ "name": "កោះ​វឺជិន​ចក្រភព​អង់គ្លេស"
+ },
+ "VI": {
+ "name": "កោះ​វឺជីន​អាមេរិក"
+ },
+ "SB": {
+ "name": "កោះ​ស៊ូឡូម៉ុង"
+ },
+ "FK": {
+ "name": "កោះ​ហ្វក់ឡែន"
+ },
+ "FO": {
+ "name": "កោះ​ហ្វារ៉ូ"
+ },
+ "GS": {
+ "name": "កោះ​ហ្សកហ្ស៊ី​ខាង​ត្បូង និង​សាន់វិច​ខាង​ត្បូង"
+ },
+ "AC": {
+ "name": "កោះ​អាសេនសិន"
+ },
+ "AX": {
+ "name": "កោះ​អាឡាំង"
+ },
+ "UM": {
+ "name": "កោះ​អៅឡាយីង​អាមេរិក"
+ },
+ "GR": {
+ "name": "ក្រិច"
+ },
+ "HR": {
+ "name": "ក្រូអាត"
+ },
+ "KI": {
+ "name": "គិរិបាទី"
+ },
+ "CU": {
+ "name": "គុយបា"
+ },
+ "KW": {
+ "name": "គុយវ៉ែត"
+ },
+ "KG": {
+ "name": "គៀរហ្គីស្តង់"
+ },
+ "GB": {
+ "name": "ចក្រភព​អង់គ្លេស"
+ },
+ "CN": {
+ "name": "ចិន"
+ },
+ "TD": {
+ "name": "ឆាដ"
+ },
+ "JP": {
+ "name": "ជប៉ុន"
+ },
+ "EA": {
+ "name": "ជឺតា និង​ម៉េលីឡា"
+ },
+ "JE": {
+ "name": "ជឺស៊ី"
+ },
+ "NC": {
+ "name": "ញូកាឡេដូនៀ"
+ },
+ "DK": {
+ "name": "ដាណឺម៉ាក"
+ },
+ "DM": {
+ "name": "ដូមីនីកា"
+ },
+ "TF": {
+ "name": "ដែន​បារាំង​ខាង​ត្បូង"
+ },
+ "PS": {
+ "name": "ដែន​ប៉ាលេស្ទីន"
+ },
+ "IO": {
+ "name": "ដែន​មហា​សមុទ្រ​ឥណ្ឌា ចក្រភព​អង់គ្លេស"
+ },
+ "DG": {
+ "name": "ឌៀហ្គោហ្គាស៊ី"
+ },
+ "NA": {
+ "name": "ណាមីប៊ី"
+ },
+ "NR": {
+ "name": "ណូរូ"
+ },
+ "NU": {
+ "name": "ណៀ"
+ },
+ "TZ": {
+ "name": "តង់ហ្សានី"
+ },
+ "TJ": {
+ "name": "តាដហ្ស៉ីគីស្តង់"
+ },
+ "TO": {
+ "name": "តុងហ្គា"
+ },
+ "TK": {
+ "name": "តូខេឡៅ"
+ },
+ "TG": {
+ "name": "តូហ្គូ"
+ },
+ "TW": {
+ "name": "តៃវ៉ាន់"
+ },
+ "TH": {
+ "name": "ថៃ"
+ },
+ "VA": {
+ "name": "ទីក្រុងវ៉ាទីកង់"
+ },
+ "TL": {
+ "name": "ទីម័រ"
+ },
+ "TN": {
+ "name": "ទុយនេស៊ី"
+ },
+ "TV": {
+ "name": "ទូវ៉ាលូ"
+ },
+ "TM": {
+ "name": "ទួគមេនីស្តង់"
+ },
+ "TR": {
+ "name": "ទួរគី"
+ },
+ "TT": {
+ "name": "ទ្រីនីដាត និង​តូបាហ្គោ"
+ },
+ "TA": {
+ "name": "ទ្រីស្តង់​ដា​ចូនហា"
+ },
+ "NO": {
+ "name": "ន័រវែស"
+ },
+ "NI": {
+ "name": "នីការ៉ាហ្គ័រ"
+ },
+ "NE": {
+ "name": "នីហ្សេរ"
+ },
+ "NG": {
+ "name": "នីហ្សេរីយ៉ា"
+ },
+ "NZ": {
+ "name": "នូវែលហ្សេឡង់"
+ },
+ "NP": {
+ "name": "នេប៉ាល់"
+ },
+ "BD": {
+ "name": "បង់ក្លាដេស្ហ"
+ },
+ "PK": {
+ "name": "ប៉ាគីស្ថាន"
+ },
+ "PA": {
+ "name": "ប៉ាណាម៉ា"
+ },
+ "PG": {
+ "name": "ប៉ាពូអានូវែលហ្គីណេ"
+ },
+ "BB": {
+ "name": "បារបាដូស"
+ },
+ "PY": {
+ "name": "ប៉ារ៉ាហ្គាយ"
+ },
+ "BH": {
+ "name": "បារ៉ែន"
+ },
+ "FR": {
+ "name": "បារាំង"
+ },
+ "BS": {
+ "name": "បាហាម៉ា"
+ },
+ "BM": {
+ "name": "ប៊ឺមុយដា"
+ },
+ "BW": {
+ "name": "បុតស្វាណា"
+ },
+ "BG": {
+ "name": "ប៊ុលហ្គារី"
+ },
+ "BT": {
+ "name": "ប៊ូតាន"
+ },
+ "BF": {
+ "name": "ប៊ូរគីណាហ្វាសូ"
+ },
+ "BI": {
+ "name": "ប៊ូរុនឌី"
+ },
+ "BO": {
+ "name": "បូលីវី"
+ },
+ "PL": {
+ "name": "ប៉ូលូញ"
+ },
+ "BA": {
+ "name": "បូស្ន៉ី"
+ },
+ "BJ": {
+ "name": "បេណាំង"
+ },
+ "PE": {
+ "name": "ប៉េរូ"
+ },
+ "BZ": {
+ "name": "បេលីហ្ស"
+ },
+ "BY": {
+ "name": "បេឡារុស្ស"
+ },
+ "BE": {
+ "name": "បែលហ្ស៉ិក"
+ },
+ "BR": {
+ "name": "ប្រេស៊ីល"
+ },
+ "PW": {
+ "name": "ផៅឡូ"
+ },
+ "PR": {
+ "name": "ព័រតូរីកូ"
+ },
+ "PT": {
+ "name": "ព័រទុយហ្កាល់"
+ },
+ "BN": {
+ "name": "ព្រុយណេ"
+ },
+ "MO": {
+ "name": "ម៉ាកាវ"
+ },
+ "MG": {
+ "name": "ម៉ាដាហ្កាស្ការ"
+ },
+ "MQ": {
+ "name": "ម៉ាទីនីក"
+ },
+ "YT": {
+ "name": "ម៉ាយុត"
+ },
+ "MA": {
+ "name": "ម៉ារ៉ុក"
+ },
+ "MV": {
+ "name": "ម៉ាល់ឌីវ"
+ },
+ "MT": {
+ "name": "ម៉ាល់តា"
+ },
+ "ML": {
+ "name": "ម៉ាលី"
+ },
+ "MK": {
+ "name": "ម៉ាសេដន"
+ },
+ "MW": {
+ "name": "ម៉ាឡាវី"
+ },
+ "MY": {
+ "name": "ម៉ាឡេស៊ី"
+ },
+ "FM": {
+ "name": "មិក្រូនេស៊ី"
+ },
+ "MX": {
+ "name": "ម៉ិចសិក"
+ },
+ "MM": {
+ "name": "មីយ៉ាន់ម៉ា (ភូមា)"
+ },
+ "ME": {
+ "name": "ម៉ុងតេណេហ្គ្រោ"
+ },
+ "MS": {
+ "name": "ម៉ុង​សេរ៉ង់"
+ },
+ "MN": {
+ "name": "ម៉ុងហ្គោលី"
+ },
+ "MC": {
+ "name": "ម៉ូណាកូ"
+ },
+ "MR": {
+ "name": "ម៉ូរីតានី"
+ },
+ "MU": {
+ "name": "ម៉ូរីទុស"
+ },
+ "MZ": {
+ "name": "ម៉ូហ្សាំប៊ិក"
+ },
+ "YE": {
+ "name": "យេមែន"
+ },
+ "RW": {
+ "name": "រវ៉ាន់ដា"
+ },
+ "RU": {
+ "name": "រុស្ស៊ី"
+ },
+ "RO": {
+ "name": "រូម៉ានី"
+ },
+ "RE": {
+ "name": "រ៉េអ៊ុយ៉ុង"
+ },
+ "LI": {
+ "name": "លិចទេនស្តែន"
+ },
+ "LT": {
+ "name": "លីទុយអានី"
+ },
+ "LB": {
+ "name": "លីបង់"
+ },
+ "LY": {
+ "name": "លីប៊ី"
+ },
+ "LR": {
+ "name": "លីបេរីយ៉ា"
+ },
+ "LU": {
+ "name": "លុចហ្សំបួរ"
+ },
+ "LS": {
+ "name": "លើសូតូ"
+ },
+ "VU": {
+ "name": "វ៉ាន់ណៅទូ"
+ },
+ "WF": {
+ "name": "វ៉ាលីស និង​ហ្វូទូណា"
+ },
+ "VN": {
+ "name": "វៀតណាម"
+ },
+ "VE": {
+ "name": "វេនេហ្ស៊ុយឡា"
+ },
+ "BL": {
+ "name": "សង់ បាតេឡេម៉ី"
+ },
+ "KN": {
+ "name": "សង់ឃីត និង​ណេវីស"
+ },
+ "PM": {
+ "name": "សង់ព្យែរ និង​មីគីឡុង"
+ },
+ "MF": {
+ "name": "សង់​ម៉ាទីន"
+ },
+ "LC": {
+ "name": "សង់​លូសៀ"
+ },
+ "SH": {
+ "name": "សង់​ហេឡេណា"
+ },
+ "US": {
+ "name": "សហរដ្ឋអាមេរិក"
+ },
+ "CZ": {
+ "name": "សាធារណរដ្ឋឆេក"
+ },
+ "DO": {
+ "name": "សាធារណរដ្ឋដូមីនីកែន"
+ },
+ "MD": {
+ "name": "សាធារណរដ្ឋម៉ុលដាវី"
+ },
+ "CF": {
+ "name": "សាធារណរដ្ឋអាហ្វ្រិកកណ្ដាល"
+ },
+ "SM": {
+ "name": "សាន​ម៉ារីណូ"
+ },
+ "WS": {
+ "name": "សាមូអា"
+ },
+ "EH": {
+ "name": "សាហារ៉ាខាងលិច"
+ },
+ "SG": {
+ "name": "សិង្ហបុរី"
+ },
+ "SX": {
+ "name": "សីង​ម៉ាធីន"
+ },
+ "CY": {
+ "name": "ស៉ីពរ៍"
+ },
+ "SY": {
+ "name": "ស៊ីរី"
+ },
+ "CL": {
+ "name": "ស៊ីលី"
+ },
+ "SC": {
+ "name": "សីសែល"
+ },
+ "SE": {
+ "name": "ស៊ុយអែដ"
+ },
+ "SD": {
+ "name": "ស៊ូដង់"
+ },
+ "SS": {
+ "name": "ស៊ូដង់​ខាង​ត្បូង"
+ },
+ "SO": {
+ "name": "សូម៉ាលី"
+ },
+ "SR": {
+ "name": "សូរីណាម"
+ },
+ "SZ": {
+ "name": "សូហ្ស៉ីឡង់"
+ },
+ "RS": {
+ "name": "សើប"
+ },
+ "SN": {
+ "name": "សេនេហ្កាល់"
+ },
+ "SL": {
+ "name": "សេរ៉ាឡេអូន"
+ },
+ "ST": {
+ "name": "សៅ​តុំ និង​ព្រីនស៊ីប៉េ"
+ },
+ "AS": {
+ "name": "សៅម៉ៅ អាមេរិក"
+ },
+ "VC": {
+ "name": "សាំង​វីនសេន និង​ឌឹ​ហ្គ្រីណាឌីនីស"
+ },
+ "LK": {
+ "name": "ស្រីលង្កា"
+ },
+ "SK": {
+ "name": "ស្លូវ៉ាគី"
+ },
+ "SI": {
+ "name": "ស្លូវេនី"
+ },
+ "SJ": {
+ "name": "ស្វាប៊ឺត និង​ហ្យង់ម៉ាយេន"
+ },
+ "CH": {
+ "name": "ស្វីស"
+ },
+ "HK": {
+ "name": "ហុងកុង"
+ },
+ "HU": {
+ "name": "ហុងគ្រី"
+ },
+ "HN": {
+ "name": "ហុងឌួរ៉ាស់"
+ },
+ "NL": {
+ "name": "ហុល្លង់"
+ },
+ "BQ": {
+ "name": "ហុល្លង់ ការ៉ាប៊ីន"
+ },
+ "HT": {
+ "name": "ហៃទី"
+ },
+ "GH": {
+ "name": "ហ្គាណា"
+ },
+ "GT": {
+ "name": "ហ្គាតេម៉ាឡា"
+ },
+ "GA": {
+ "name": "ហ្គាបុង"
+ },
+ "GN": {
+ "name": "ហ្គីណេ"
+ },
+ "GW": {
+ "name": "ហ្គីណេប៊ីសូ"
+ },
+ "GQ": {
+ "name": "ហ្គីណេអេក្វាទ័រ"
+ },
+ "GI": {
+ "name": "ហ្គីប្រាលតា"
+ },
+ "GY": {
+ "name": "ហ្គីយ៉ាណា"
+ },
+ "GG": {
+ "name": "ហ្គេនស៊ី"
+ },
+ "GP": {
+ "name": "ហ្គោដឺឡុប"
+ },
+ "GU": {
+ "name": "ហ្គាំ"
+ },
+ "GM": {
+ "name": "ហ្គាំប៊ី"
+ },
+ "GD": {
+ "name": "ហ្គ្រើណាដ"
+ },
+ "GL": {
+ "name": "ហ្គ្រោអង់ឡង់"
+ },
+ "FJ": {
+ "name": "ហ្វីជី"
+ },
+ "PH": {
+ "name": "ហ្វីលីពីន"
+ },
+ "FI": {
+ "name": "ហ្វាំងឡង់"
+ },
+ "PF": {
+ "name": "ហ្វ្រេន​ប៉ូលី​ណេស៊ី"
+ },
+ "GF": {
+ "name": "ហ្វ្វេន​ហ្គៀណា"
+ },
+ "JO": {
+ "name": "ហ៊្សកដានី"
+ },
+ "GE": {
+ "name": "ហ្សកហ្ស៉ី"
+ },
+ "JM": {
+ "name": "ហ្សាម៉ាអ៉ិគ"
+ },
+ "DJ": {
+ "name": "ហ្ស៉ីបូទី"
+ },
+ "ZW": {
+ "name": "ហ្ស៊ីមបាបវ៉េ"
+ },
+ "ZM": {
+ "name": "ហ្សាំប៊ី"
+ },
+ "LV": {
+ "name": "ឡាតវីយ៉ា"
+ },
+ "LA": {
+ "name": "ឡាវ"
+ },
+ "AI": {
+ "name": "អង់កូឡា"
+ },
+ "AD": {
+ "name": "អង់ដូរ៉ា"
+ },
+ "AQ": {
+ "name": "អង់តាទីកា"
+ },
+ "AG": {
+ "name": "អង់ទីគ័រ និង​បាបុយដា"
+ },
+ "AO": {
+ "name": "អង់ហ្គោឡា"
+ },
+ "ZA": {
+ "name": "អាព្រិក​ភាគ​ខាង​ត្បូង"
+ },
+ "AM": {
+ "name": "អារមេនី"
+ },
+ "SA": {
+ "name": "អារ៉ាប៊ីសាអ៊ូឌីត"
+ },
+ "AW": {
+ "name": "អារូបា"
+ },
+ "AL": {
+ "name": "អាល់បានី"
+ },
+ "DZ": {
+ "name": "អាល់ហ្សេរី"
+ },
+ "DE": {
+ "name": "អាល្លឺម៉ង់"
+ },
+ "AF": {
+ "name": "អាហ្វហ្គានីស្ថាន"
+ },
+ "AR": {
+ "name": "អាហ្សង់ទីន"
+ },
+ "AZ": {
+ "name": "អាហ៊្សែរបែហ្សង់"
+ },
+ "IN": {
+ "name": "ឥណ្ឌា"
+ },
+ "ID": {
+ "name": "ឥណ្ឌូណេស៊ី"
+ },
+ "IT": {
+ "name": "អ៊ីតាលី"
+ },
+ "IR": {
+ "name": "អ៊ីរ៉ង់"
+ },
+ "IQ": {
+ "name": "អ៊ីរ៉ាក់"
+ },
+ "IL": {
+ "name": "អ៊ីស្រាអែល"
+ },
+ "IS": {
+ "name": "អ៊ីស្លង់"
+ },
+ "UA": {
+ "name": "អ៊ុយក្រែន"
+ },
+ "UY": {
+ "name": "អ៊ុយរុយហ្គាយ"
+ },
+ "AT": {
+ "name": "អូទ្រីស"
+ },
+ "OM": {
+ "name": "អូម៉ង់"
+ },
+ "AU": {
+ "name": "អូស្ត្រាលី"
+ },
+ "UG": {
+ "name": "អ៊ូហ្កង់ដា"
+ },
+ "UZ": {
+ "name": "អ៊ូហ្សបេគីស្តង់"
+ },
+ "IE": {
+ "name": "អៀរឡង់"
+ },
+ "EC": {
+ "name": "អេក្វាឌ័រ"
+ },
+ "ET": {
+ "name": "អេត្យូពី"
+ },
+ "AE": {
+ "name": "អេមីរ៉ែទអារ៉ាប់រួម"
+ },
+ "ER": {
+ "name": "អេរីទ្រា"
+ },
+ "EE": {
+ "name": "អេស្តូនី"
+ },
+ "ES": {
+ "name": "អេស្ប៉ាញ"
+ },
+ "EG": {
+ "name": "អេហ្ស៉ីប"
+ },
+ "SV": {
+ "name": "អែលសាល់វ៉ាឌ័រ"
+ },
+ "IM": {
+ "name": "អែលអុហ្វមែន"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kn.json b/library/intl/resources/country/kn.json
new file mode 100644
index 000000000..e4aa7fceb
--- /dev/null
+++ b/library/intl/resources/country/kn.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "ಅಂಗೋಲಾ"
+ },
+ "AQ": {
+ "name": "ಅಂಟಾರ್ಟಿಕಾ"
+ },
+ "AD": {
+ "name": "ಅಂಡೋರಾ"
+ },
+ "AZ": {
+ "name": "ಅಜರ್ಬೈಜಾನ್"
+ },
+ "AF": {
+ "name": "ಅಫಘಾನಿಸ್ಥಾನ್"
+ },
+ "AS": {
+ "name": "ಅಮೇರಿಕನ್ ಸಮೋವಾ"
+ },
+ "US": {
+ "name": "ಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನ"
+ },
+ "AW": {
+ "name": "ಅರುಬಾ"
+ },
+ "AR": {
+ "name": "ಅರ್ಜೆಂಟಿನಾ"
+ },
+ "AM": {
+ "name": "ಅರ್ಮೇನಿಯಾ"
+ },
+ "DZ": {
+ "name": "ಅಲ್ಗೇರಿಯಾ"
+ },
+ "AL": {
+ "name": "ಅಲ್ಬೇನಿಯಾ"
+ },
+ "AC": {
+ "name": "ಅಸೆನ್ಶನ್ ದ್ವೀಪ"
+ },
+ "AI": {
+ "name": "ಆಂಗುಯಿಲ್ಲಾ"
+ },
+ "AG": {
+ "name": "ಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್ಬುಡಾ"
+ },
+ "AX": {
+ "name": "ಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು"
+ },
+ "AT": {
+ "name": "ಆಸ್ಟ್ರಿಯಾ"
+ },
+ "AU": {
+ "name": "ಆಸ್ಟ್ರೇಲಿಯ"
+ },
+ "ID": {
+ "name": "ಇಂಡೋನೇಶಿಯಾ"
+ },
+ "IT": {
+ "name": "ಇಟಲಿ"
+ },
+ "ET": {
+ "name": "ಇಥಿಯೋಪಿಯಾ"
+ },
+ "IQ": {
+ "name": "ಇರಾಕ್"
+ },
+ "IR": {
+ "name": "ಇರಾನ್"
+ },
+ "IL": {
+ "name": "ಇಸ್ರೇಲ್"
+ },
+ "GQ": {
+ "name": "ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿ"
+ },
+ "EC": {
+ "name": "ಈಕ್ವೆಡಾರ್"
+ },
+ "EG": {
+ "name": "ಈಜಿಪ್ಟ್"
+ },
+ "UA": {
+ "name": "ಉಕ್ರೈನ್"
+ },
+ "UG": {
+ "name": "ಉಗಾಂಡಾ"
+ },
+ "UZ": {
+ "name": "ಉಜ್ಬೇಕಿಸ್ಥಾನ್"
+ },
+ "KP": {
+ "name": "ಉತ್ತರ ಕೋರಿಯಾ"
+ },
+ "MP": {
+ "name": "ಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳು"
+ },
+ "UY": {
+ "name": "ಉರುಗ್ವೇ"
+ },
+ "SV": {
+ "name": "ಎಲ್ ಸಾಲ್ವೇಡಾರ್"
+ },
+ "EE": {
+ "name": "ಎಸ್ಟೋನಿಯಾ"
+ },
+ "ER": {
+ "name": "ಏರಿಟ್ರಿಯಾ"
+ },
+ "IE": {
+ "name": "ಐರ್ಲೆಂಡ್"
+ },
+ "IM": {
+ "name": "ಐಲ್ ಆಫ್ ಮ್ಯಾನ್"
+ },
+ "IS": {
+ "name": "ಐಸ್‌ಲ್ಯಾಂಡ್"
+ },
+ "OM": {
+ "name": "ಓಮನ್"
+ },
+ "KZ": {
+ "name": "ಕಝಾಕಿಸ್ಥಾನ್"
+ },
+ "CD": {
+ "name": "ಕಾಂಗೋ - ಕಿನ್ಶಾಸಾ"
+ },
+ "CG": {
+ "name": "ಕಾಂಗೋ - ಬ್ರಾಜಾವಿಲ್ಲೇ"
+ },
+ "KH": {
+ "name": "ಕಾಂಬೋಡಿಯಾ"
+ },
+ "KI": {
+ "name": "ಕಿರಿಬಾತಿ"
+ },
+ "KG": {
+ "name": "ಕಿರ್ಗಿಸ್ಥಾನ್"
+ },
+ "KE": {
+ "name": "ಕೀನ್ಯಾ"
+ },
+ "CK": {
+ "name": "ಕುಕ್ ದ್ವೀಪಗಳು"
+ },
+ "CW": {
+ "name": "ಕುರಾಕಾವ್"
+ },
+ "KW": {
+ "name": "ಕುವೈತ್"
+ },
+ "CA": {
+ "name": "ಕೆನಡಾ"
+ },
+ "BQ": {
+ "name": "ಕೆರೀಬಿಯನ್ ನೆದರ್‌ಲ್ಯಾಂಡ್ಸ್"
+ },
+ "CV": {
+ "name": "ಕೇಪ್ ವರ್ಡೆ"
+ },
+ "KY": {
+ "name": "ಕೇಮನ್ ದ್ವೀಪಗಳು"
+ },
+ "CC": {
+ "name": "ಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳು"
+ },
+ "KM": {
+ "name": "ಕೊಮೊರೊಸ್"
+ },
+ "CO": {
+ "name": "ಕೊಲಂಬಿಯಾ"
+ },
+ "XK": {
+ "name": "ಕೊಸೊವೊ"
+ },
+ "CR": {
+ "name": "ಕೊಸ್ಟಾ ರಿಕಾ"
+ },
+ "CI": {
+ "name": "ಕೋತ್‌ ದಿವಾರ್‍"
+ },
+ "IC": {
+ "name": "ಕ್ಯಾನರಿ ದ್ವೀಪಗಳು"
+ },
+ "CM": {
+ "name": "ಕ್ಯಾಮರೋನ್"
+ },
+ "CU": {
+ "name": "ಕ್ಯೂಬಾ"
+ },
+ "CX": {
+ "name": "ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ"
+ },
+ "HR": {
+ "name": "ಕ್ರೊಯೇಶಿಯಾ"
+ },
+ "QA": {
+ "name": "ಖತಾರ್"
+ },
+ "GY": {
+ "name": "ಗಯಾನಾ"
+ },
+ "GN": {
+ "name": "ಗಿನಿ"
+ },
+ "GW": {
+ "name": "ಗಿನಿ-ಬಿಸ್ಸಾವ್"
+ },
+ "GI": {
+ "name": "ಗಿಬ್ರಾಲ್ಟರ್"
+ },
+ "GP": {
+ "name": "ಗುಡೆಲೋಪ್"
+ },
+ "GU": {
+ "name": "ಗುಯಾಮ್"
+ },
+ "GG": {
+ "name": "ಗುರ್ನ್‌ಸೆ"
+ },
+ "GA": {
+ "name": "ಗೆಬೊನ್"
+ },
+ "GM": {
+ "name": "ಗ್ಯಾಂಬಿಯಾ"
+ },
+ "GL": {
+ "name": "ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್"
+ },
+ "GR": {
+ "name": "ಗ್ರೀಸ್"
+ },
+ "GD": {
+ "name": "ಗ್ರೆನೆಡಾ"
+ },
+ "GT": {
+ "name": "ಗ್ವಾಟೆಮಾಲಾ"
+ },
+ "GH": {
+ "name": "ಘಾನಾ"
+ },
+ "TD": {
+ "name": "ಚಾದ್"
+ },
+ "CL": {
+ "name": "ಚಿಲಿ"
+ },
+ "CN": {
+ "name": "ಚೀನಾ"
+ },
+ "CZ": {
+ "name": "ಚೆಕ್ ರಿಪಬ್ಲಿಕ್"
+ },
+ "JP": {
+ "name": "ಜಪಾನ್"
+ },
+ "JM": {
+ "name": "ಜಮೈಕಾ"
+ },
+ "DE": {
+ "name": "ಜರ್ಮನಿ"
+ },
+ "GE": {
+ "name": "ಜಾರ್ಜಿಯಾ"
+ },
+ "ZW": {
+ "name": "ಜಿಂಬಾಬ್ವೆ"
+ },
+ "DJ": {
+ "name": "ಜಿಬೋಟಿ"
+ },
+ "JE": {
+ "name": "ಜೆರ್ಸಿ"
+ },
+ "JO": {
+ "name": "ಜೋರ್ಡಾನ್"
+ },
+ "ZM": {
+ "name": "ಝಾಂಬಿಯಾ"
+ },
+ "TR": {
+ "name": "ಟರ್ಕಿ"
+ },
+ "TC": {
+ "name": "ಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳು"
+ },
+ "TN": {
+ "name": "ಟುನಿಶಿಯಾ"
+ },
+ "TV": {
+ "name": "ಟುವಾಲು"
+ },
+ "TO": {
+ "name": "ಟೊಂಗ"
+ },
+ "TK": {
+ "name": "ಟೊಕೆಲಾವ್"
+ },
+ "TG": {
+ "name": "ಟೋಗೋ"
+ },
+ "TT": {
+ "name": "ಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊ"
+ },
+ "TA": {
+ "name": "ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾ"
+ },
+ "DK": {
+ "name": "ಡೆನ್ಮಾರ್ಕ್"
+ },
+ "DG": {
+ "name": "ಡೈಗೋ ಗಾರ್ಸಿಯ"
+ },
+ "DM": {
+ "name": "ಡೊಮಿನಿಕಾ"
+ },
+ "DO": {
+ "name": "ಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್"
+ },
+ "TJ": {
+ "name": "ತಜಾಕಿಸ್ಥಾನ್"
+ },
+ "TZ": {
+ "name": "ತಾಂಜೇನಿಯಾ"
+ },
+ "TM": {
+ "name": "ತುರ್ಕ್ಮೇನಿಸ್ಥಾನ್"
+ },
+ "TH": {
+ "name": "ಥೈಲ್ಯಾಂಡ್"
+ },
+ "TW": {
+ "name": "ಥೈವಾನ್"
+ },
+ "ZA": {
+ "name": "ದಕ್ಷಿಣ ಆಫ್ರಿಕಾ"
+ },
+ "KR": {
+ "name": "ದಕ್ಷಿಣ ಕೋರಿಯಾ"
+ },
+ "GS": {
+ "name": "ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್‍ವಿಚ್ ದ್ವೀಪಗಳು"
+ },
+ "SS": {
+ "name": "ದಕ್ಷಿಣ ಸೂಡಾನ್"
+ },
+ "NA": {
+ "name": "ನಮೀಬಿಯಾ"
+ },
+ "NF": {
+ "name": "ನಾರ್ಫೋಕ್ ದ್ವೀಪ"
+ },
+ "NO": {
+ "name": "ನಾರ್ವೇ"
+ },
+ "NI": {
+ "name": "ನಿಕಾರಾಗುವಾ"
+ },
+ "NU": {
+ "name": "ನಿಯು"
+ },
+ "NL": {
+ "name": "ನೆದರ್‌ಲ್ಯಾಂಡ್ಸ್"
+ },
+ "NP": {
+ "name": "ನೇಪಾಳ"
+ },
+ "NE": {
+ "name": "ನೈಜರ್"
+ },
+ "NG": {
+ "name": "ನೈಜೀರಿಯಾ"
+ },
+ "NR": {
+ "name": "ನೌರು"
+ },
+ "NC": {
+ "name": "ನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾ"
+ },
+ "NZ": {
+ "name": "ನ್ಯೂಜಿಲೆಂಡ್"
+ },
+ "PA": {
+ "name": "ಪನಾಮಾ"
+ },
+ "PG": {
+ "name": "ಪಪುವಾ ನ್ಯೂಗಿನಿಯಾ"
+ },
+ "PY": {
+ "name": "ಪರಾಗ್ವೇ"
+ },
+ "PW": {
+ "name": "ಪಲಾವು"
+ },
+ "EH": {
+ "name": "ಪಶ್ಚಿಮ ಸಹಾರಾ"
+ },
+ "PK": {
+ "name": "ಪಾಕಿಸ್ತಾನ"
+ },
+ "PN": {
+ "name": "ಪಿಟ್‌ಕೈರ್ನ್ ದ್ವೀಪಗಳು"
+ },
+ "TL": {
+ "name": "ಪೂರ್ವ ತಿಮೋರ್"
+ },
+ "PE": {
+ "name": "ಪೆರು"
+ },
+ "PT": {
+ "name": "ಪೋರ್ಚುಗಲ್"
+ },
+ "PL": {
+ "name": "ಪೋಲ್ಯಾಂಡ್"
+ },
+ "PS": {
+ "name": "ಪ್ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶ"
+ },
+ "PR": {
+ "name": "ಪ್ಯೂರ್ಟೋ ರಿಕೊ"
+ },
+ "FO": {
+ "name": "ಫರೋ ದ್ವೀಪಗಳು"
+ },
+ "FK": {
+ "name": "ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು"
+ },
+ "FJ": {
+ "name": "ಫಿಜಿ"
+ },
+ "FI": {
+ "name": "ಫಿನ್‌ಲ್ಯಾಂಡ್"
+ },
+ "PH": {
+ "name": "ಫಿಲಿಫೈನ್ಸ್"
+ },
+ "FR": {
+ "name": "ಫ್ರಾನ್ಸ್"
+ },
+ "GF": {
+ "name": "ಫ್ರೆಂಚ್ ಗಯಾನಾ"
+ },
+ "TF": {
+ "name": "ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳು"
+ },
+ "PF": {
+ "name": "ಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾ"
+ },
+ "BM": {
+ "name": "ಬರ್ಮುಡಾ"
+ },
+ "BG": {
+ "name": "ಬಲ್ಗೇರಿಯಾ"
+ },
+ "BH": {
+ "name": "ಬಹರೈನ್"
+ },
+ "BS": {
+ "name": "ಬಹಾಮಾಸ್"
+ },
+ "BD": {
+ "name": "ಬಾಂಗ್ಲಾದೇಶ್"
+ },
+ "BB": {
+ "name": "ಬಾರ್ಬಡೋಸ್"
+ },
+ "BI": {
+ "name": "ಬುರುಂಡಿ"
+ },
+ "BF": {
+ "name": "ಬುರ್ಕಿನಾ ಫಾಸೋ"
+ },
+ "BJ": {
+ "name": "ಬೆನಿನ್"
+ },
+ "BY": {
+ "name": "ಬೆಲಾರಸ್"
+ },
+ "BZ": {
+ "name": "ಬೆಲಿಜ್"
+ },
+ "BE": {
+ "name": "ಬೆಲ್ಜಿಯಮ್"
+ },
+ "BO": {
+ "name": "ಬೊಲಿವಿಯಾ"
+ },
+ "BW": {
+ "name": "ಬೋಟ್ಸ್‌ವಾನಾ"
+ },
+ "BA": {
+ "name": "ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ್ಜೆಗೋವಿನಾ"
+ },
+ "GB": {
+ "name": "ಬ್ರಿಟನ್\/ಇಂಗ್ಲೆಂಡ್"
+ },
+ "VG": {
+ "name": "ಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳು"
+ },
+ "IO": {
+ "name": "ಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶ"
+ },
+ "BN": {
+ "name": "ಬ್ರೂನಿ"
+ },
+ "BR": {
+ "name": "ಬ್ರೆಜಿಲ್"
+ },
+ "IN": {
+ "name": "ಭಾರತ"
+ },
+ "BT": {
+ "name": "ಭೂತಾನ್"
+ },
+ "MO": {
+ "name": "ಮಖಾವ್ (SAR) ಚೈನಾ"
+ },
+ "MG": {
+ "name": "ಮಡಗಾಸ್ಕರ್"
+ },
+ "CF": {
+ "name": "ಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯ"
+ },
+ "MM": {
+ "name": "ಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)"
+ },
+ "YT": {
+ "name": "ಮಯೊಟ್ಟೆ"
+ },
+ "MW": {
+ "name": "ಮಲಾವಿ"
+ },
+ "MY": {
+ "name": "ಮಲೇಶಿಯಾ"
+ },
+ "MS": {
+ "name": "ಮಾಂಟ್‌ಸೆರೇಟ್"
+ },
+ "MR": {
+ "name": "ಮಾರಿಟೇನಿಯಾ"
+ },
+ "MU": {
+ "name": "ಮಾರಿಶಿಯಸ್"
+ },
+ "MQ": {
+ "name": "ಮಾರ್ಟಿನಿಕ್"
+ },
+ "MH": {
+ "name": "ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳು"
+ },
+ "ML": {
+ "name": "ಮಾಲಿ"
+ },
+ "MT": {
+ "name": "ಮಾಲ್ಟಾ"
+ },
+ "MV": {
+ "name": "ಮಾಲ್ಡಿವ್ಸ್"
+ },
+ "MX": {
+ "name": "ಮೆಕ್ಸಿಕೊ"
+ },
+ "FM": {
+ "name": "ಮೈಕ್ರೋನೇಶಿಯಾ"
+ },
+ "MN": {
+ "name": "ಮೊಂಗೋಲಿಯಾ"
+ },
+ "ME": {
+ "name": "ಮೊಂಟೆನೆಗ್ರೋ"
+ },
+ "MZ": {
+ "name": "ಮೊಜಾಂಬಿಕ್"
+ },
+ "MC": {
+ "name": "ಮೊನಾಕೊ"
+ },
+ "MA": {
+ "name": "ಮೊರಾಕ್ಕೊ"
+ },
+ "MD": {
+ "name": "ಮೊಲ್ಡೋವಾ"
+ },
+ "MK": {
+ "name": "ಮ್ಯಾಸಿಡೋನಿಯಾ"
+ },
+ "VI": {
+ "name": "ಯು.ಎಸ್. ವರ್ಜಿನ್ ದ್ವೀಪಗಳು"
+ },
+ "UM": {
+ "name": "ಯುಎಸ್‌. ಔಟ್‌ಲೇಯಿಂಗ್ ದ್ವೀಪಗಳು"
+ },
+ "YE": {
+ "name": "ಯೆಮನ್"
+ },
+ "RU": {
+ "name": "ರಷ್ಯಾ"
+ },
+ "RE": {
+ "name": "ರೀಯೂನಿಯನ್"
+ },
+ "RW": {
+ "name": "ರುವಾಂಡಾ"
+ },
+ "RO": {
+ "name": "ರೊಮೇನಿಯಾ"
+ },
+ "LU": {
+ "name": "ಲಕ್ಸಂಬರ್ಗ್"
+ },
+ "LV": {
+ "name": "ಲಾಟ್ವಿಯಾ"
+ },
+ "LA": {
+ "name": "ಲಾವೋಸ್"
+ },
+ "LI": {
+ "name": "ಲಿಚೆನ್‌ಸ್ಟೈನ್"
+ },
+ "LT": {
+ "name": "ಲಿಥುವೇನಿಯಾ"
+ },
+ "LY": {
+ "name": "ಲಿಬಿಯಾ"
+ },
+ "LR": {
+ "name": "ಲಿಬೇರಿಯಾ"
+ },
+ "LB": {
+ "name": "ಲೆಬನಾನ್"
+ },
+ "LS": {
+ "name": "ಲೆಸೊಥೋ"
+ },
+ "VU": {
+ "name": "ವನೌಟು"
+ },
+ "WF": {
+ "name": "ವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾ"
+ },
+ "VN": {
+ "name": "ವಿಯೇಟ್ನಾಮ್"
+ },
+ "VE": {
+ "name": "ವೆನೆಜುವೆಲಾ"
+ },
+ "VA": {
+ "name": "ವ್ಯಾಟಿಕನ್"
+ },
+ "LK": {
+ "name": "ಶ್ರೀಲಂಕಾ"
+ },
+ "AE": {
+ "name": "ಸಂಯುಕ್ತ ಅರಬ್ ಎಮಿರೇಟಸ್"
+ },
+ "WS": {
+ "name": "ಸಮೋವಾ"
+ },
+ "ST": {
+ "name": "ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿ"
+ },
+ "SG": {
+ "name": "ಸಿಂಗಾಪುರ್"
+ },
+ "SX": {
+ "name": "ಸಿಂಟ್ ಮಾರ್ಟೆನ್"
+ },
+ "SL": {
+ "name": "ಸಿಯೆರ್ರಾ ಲಿಯೋನ್"
+ },
+ "SY": {
+ "name": "ಸಿರಿಯಾ"
+ },
+ "SC": {
+ "name": "ಸೀಶೆಲ್ಲೆಸ್"
+ },
+ "SR": {
+ "name": "ಸುರಿನಾಮ"
+ },
+ "SD": {
+ "name": "ಸೂಡಾನ್"
+ },
+ "SN": {
+ "name": "ಸೆನೆಗಲ್"
+ },
+ "EA": {
+ "name": "ಸೆಯುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾ"
+ },
+ "RS": {
+ "name": "ಸೆರ್ಬಿಯಾ"
+ },
+ "KN": {
+ "name": "ಸೇಂಟ್ ಕಿಟ್ಸ್ ಮತ್ತು ನೆವಿಸ್"
+ },
+ "PM": {
+ "name": "ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್"
+ },
+ "BL": {
+ "name": "ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿ"
+ },
+ "MF": {
+ "name": "ಸೇಂಟ್ ಮಾರ್ಟಿನ್"
+ },
+ "LC": {
+ "name": "ಸೇಂಟ್ ಲೂಸಿಯಾ"
+ },
+ "SH": {
+ "name": "ಸೇಂಟ್ ಹೆಲೆನಾ"
+ },
+ "VC": {
+ "name": "ಸೇಂಟ್. ವಿನ್ಸೆಂಟ್ ಮತ್ತು ಗ್ರೆನೆಡೈನ್ಸ್"
+ },
+ "CY": {
+ "name": "ಸೈಪ್ರಸ್"
+ },
+ "SO": {
+ "name": "ಸೊಮಾಲಿಯಾ"
+ },
+ "SB": {
+ "name": "ಸೊಲೊಮನ್ ದ್ವೀಪಗಳು"
+ },
+ "SA": {
+ "name": "ಸೌದಿ ಅರೇಬಿಯಾ"
+ },
+ "ES": {
+ "name": "ಸ್ಪೇನ್"
+ },
+ "SM": {
+ "name": "ಸ್ಯಾನ್ ಮೆರಿನೋ"
+ },
+ "SK": {
+ "name": "ಸ್ಲೋವೇಕಿಯಾ"
+ },
+ "SI": {
+ "name": "ಸ್ಲೋವೇನಿಯಾ"
+ },
+ "SZ": {
+ "name": "ಸ್ವಾಜಿಲ್ಯಾಂಡ್"
+ },
+ "SJ": {
+ "name": "ಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು ಜಾನ್ ಮೆಯನ್"
+ },
+ "CH": {
+ "name": "ಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್"
+ },
+ "SE": {
+ "name": "ಸ್ವೀಡನ್"
+ },
+ "HU": {
+ "name": "ಹಂಗಾರಿ"
+ },
+ "HK": {
+ "name": "ಹಾಂಕ್‌ ಕಾಂಗ್ SAR ಚೈನಾ"
+ },
+ "HT": {
+ "name": "ಹೈಟಿ"
+ },
+ "HN": {
+ "name": "ಹೊಂಡುರಾಸ್"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ko.json b/library/intl/resources/country/ko.json
new file mode 100644
index 000000000..3b621be9f
--- /dev/null
+++ b/library/intl/resources/country/ko.json
@@ -0,0 +1,761 @@
+{
+ "GH": {
+ "name": "가나"
+ },
+ "GA": {
+ "name": "가봉"
+ },
+ "GY": {
+ "name": "가이아나"
+ },
+ "GM": {
+ "name": "감비아"
+ },
+ "GG": {
+ "name": "건지"
+ },
+ "GP": {
+ "name": "과들루프"
+ },
+ "GT": {
+ "name": "과테말라"
+ },
+ "GU": {
+ "name": "괌"
+ },
+ "GD": {
+ "name": "그레나다"
+ },
+ "GR": {
+ "name": "그리스"
+ },
+ "GL": {
+ "name": "그린란드"
+ },
+ "GW": {
+ "name": "기네비쏘"
+ },
+ "GN": {
+ "name": "기니"
+ },
+ "CV": {
+ "name": "까뽀베르데"
+ },
+ "NA": {
+ "name": "나미비아"
+ },
+ "NR": {
+ "name": "나우루"
+ },
+ "NG": {
+ "name": "나이지리아"
+ },
+ "AQ": {
+ "name": "남극 대륙"
+ },
+ "SS": {
+ "name": "남수단"
+ },
+ "ZA": {
+ "name": "남아프리카"
+ },
+ "NL": {
+ "name": "네덜란드"
+ },
+ "BQ": {
+ "name": "네덜란드령 카리브"
+ },
+ "NP": {
+ "name": "네팔"
+ },
+ "NO": {
+ "name": "노르웨이"
+ },
+ "NF": {
+ "name": "노퍽섬"
+ },
+ "NC": {
+ "name": "뉴 칼레도니아"
+ },
+ "NZ": {
+ "name": "뉴질랜드"
+ },
+ "NU": {
+ "name": "니우에"
+ },
+ "NE": {
+ "name": "니제르"
+ },
+ "NI": {
+ "name": "니카라과"
+ },
+ "TW": {
+ "name": "대만"
+ },
+ "KR": {
+ "name": "대한민국"
+ },
+ "DK": {
+ "name": "덴마크"
+ },
+ "DM": {
+ "name": "도미니카"
+ },
+ "DO": {
+ "name": "도미니카 공화국"
+ },
+ "DE": {
+ "name": "독일"
+ },
+ "TL": {
+ "name": "동티모르"
+ },
+ "DG": {
+ "name": "디에고 가르시아"
+ },
+ "LA": {
+ "name": "라오스"
+ },
+ "LR": {
+ "name": "라이베리아"
+ },
+ "LV": {
+ "name": "라트비아"
+ },
+ "RU": {
+ "name": "러시아"
+ },
+ "LB": {
+ "name": "레바논"
+ },
+ "LS": {
+ "name": "레소토"
+ },
+ "RO": {
+ "name": "루마니아"
+ },
+ "LU": {
+ "name": "룩셈부르크"
+ },
+ "RW": {
+ "name": "르완다"
+ },
+ "LY": {
+ "name": "리비아"
+ },
+ "RE": {
+ "name": "리유니온"
+ },
+ "LT": {
+ "name": "리투아니아"
+ },
+ "LI": {
+ "name": "리히텐슈타인"
+ },
+ "MG": {
+ "name": "마다가스카르"
+ },
+ "MH": {
+ "name": "마샬 군도"
+ },
+ "YT": {
+ "name": "마요티"
+ },
+ "MO": {
+ "name": "마카오, 중국 특별행정구"
+ },
+ "MK": {
+ "name": "마케도니아"
+ },
+ "MW": {
+ "name": "말라위"
+ },
+ "MY": {
+ "name": "말레이시아"
+ },
+ "ML": {
+ "name": "말리"
+ },
+ "MQ": {
+ "name": "말티니크"
+ },
+ "IM": {
+ "name": "맨 섬"
+ },
+ "MX": {
+ "name": "멕시코"
+ },
+ "MC": {
+ "name": "모나코"
+ },
+ "MA": {
+ "name": "모로코"
+ },
+ "MU": {
+ "name": "모리셔스"
+ },
+ "MR": {
+ "name": "모리타니"
+ },
+ "MZ": {
+ "name": "모잠비크"
+ },
+ "ME": {
+ "name": "몬테네그로"
+ },
+ "MS": {
+ "name": "몬트세라트"
+ },
+ "MD": {
+ "name": "몰도바"
+ },
+ "MV": {
+ "name": "몰디브"
+ },
+ "MT": {
+ "name": "몰타"
+ },
+ "MN": {
+ "name": "몽골"
+ },
+ "US": {
+ "name": "미국"
+ },
+ "VI": {
+ "name": "미국령 버진 아일랜드"
+ },
+ "UM": {
+ "name": "미국령 해외 제도"
+ },
+ "MM": {
+ "name": "미얀마"
+ },
+ "FM": {
+ "name": "미크로네시아"
+ },
+ "VU": {
+ "name": "바누아투"
+ },
+ "BH": {
+ "name": "바레인"
+ },
+ "BB": {
+ "name": "바베이도스"
+ },
+ "VA": {
+ "name": "바티칸"
+ },
+ "BS": {
+ "name": "바하마"
+ },
+ "BD": {
+ "name": "방글라데시"
+ },
+ "BM": {
+ "name": "버뮤다"
+ },
+ "BJ": {
+ "name": "베냉"
+ },
+ "VE": {
+ "name": "베네수엘라"
+ },
+ "VN": {
+ "name": "베트남"
+ },
+ "BE": {
+ "name": "벨기에"
+ },
+ "BY": {
+ "name": "벨라루스"
+ },
+ "BZ": {
+ "name": "벨리즈"
+ },
+ "BA": {
+ "name": "보스니아 헤르체고비나"
+ },
+ "BW": {
+ "name": "보츠와나"
+ },
+ "BO": {
+ "name": "볼리비아"
+ },
+ "BI": {
+ "name": "부룬디"
+ },
+ "BF": {
+ "name": "부르키나파소"
+ },
+ "BT": {
+ "name": "부탄"
+ },
+ "MP": {
+ "name": "북마리아나제도"
+ },
+ "BG": {
+ "name": "불가리아"
+ },
+ "BR": {
+ "name": "브라질"
+ },
+ "BN": {
+ "name": "브루나이"
+ },
+ "WS": {
+ "name": "사모아"
+ },
+ "SA": {
+ "name": "사우디아라비아"
+ },
+ "GS": {
+ "name": "사우스조지아 사우스샌드위치 제도"
+ },
+ "CY": {
+ "name": "사이프러스"
+ },
+ "SM": {
+ "name": "산마리노"
+ },
+ "ST": {
+ "name": "상투메 프린시페"
+ },
+ "MF": {
+ "name": "생 마르탱"
+ },
+ "BL": {
+ "name": "생 바르텔르미"
+ },
+ "PM": {
+ "name": "생피에르 미클롱"
+ },
+ "EH": {
+ "name": "서사하라"
+ },
+ "SN": {
+ "name": "세네갈"
+ },
+ "RS": {
+ "name": "세르비아"
+ },
+ "EA": {
+ "name": "세우타 및 멜리야"
+ },
+ "KN": {
+ "name": "세인트 키츠 네비스"
+ },
+ "LC": {
+ "name": "세인트루시아"
+ },
+ "VC": {
+ "name": "세인트빈센트그레나딘"
+ },
+ "SH": {
+ "name": "세인트헬레나"
+ },
+ "SO": {
+ "name": "소말리아"
+ },
+ "SB": {
+ "name": "솔로몬 제도"
+ },
+ "SD": {
+ "name": "수단"
+ },
+ "SR": {
+ "name": "수리남"
+ },
+ "SC": {
+ "name": "쉐이쉘"
+ },
+ "LK": {
+ "name": "스리랑카"
+ },
+ "SJ": {
+ "name": "스발바르제도-얀마웬섬"
+ },
+ "SZ": {
+ "name": "스와질랜드"
+ },
+ "SE": {
+ "name": "스웨덴"
+ },
+ "CH": {
+ "name": "스위스"
+ },
+ "ES": {
+ "name": "스페인"
+ },
+ "SK": {
+ "name": "슬로바키아"
+ },
+ "SI": {
+ "name": "슬로베니아"
+ },
+ "SY": {
+ "name": "시리아"
+ },
+ "SL": {
+ "name": "시에라리온"
+ },
+ "SX": {
+ "name": "신트마르턴"
+ },
+ "SG": {
+ "name": "싱가포르"
+ },
+ "AE": {
+ "name": "아랍에미리트 연합"
+ },
+ "AW": {
+ "name": "아루바"
+ },
+ "AM": {
+ "name": "아르메니아"
+ },
+ "AR": {
+ "name": "아르헨티나"
+ },
+ "AS": {
+ "name": "아메리칸 사모아"
+ },
+ "IS": {
+ "name": "아이슬란드"
+ },
+ "HT": {
+ "name": "아이티"
+ },
+ "IE": {
+ "name": "아일랜드"
+ },
+ "AZ": {
+ "name": "아제르바이잔"
+ },
+ "AF": {
+ "name": "아프가니스탄"
+ },
+ "AI": {
+ "name": "안길라"
+ },
+ "AD": {
+ "name": "안도라"
+ },
+ "AL": {
+ "name": "알바니아"
+ },
+ "DZ": {
+ "name": "알제리"
+ },
+ "AO": {
+ "name": "앙골라"
+ },
+ "AG": {
+ "name": "앤티가 바부다"
+ },
+ "AC": {
+ "name": "어센션 섬"
+ },
+ "ER": {
+ "name": "에리트리아"
+ },
+ "EE": {
+ "name": "에스토니아"
+ },
+ "EC": {
+ "name": "에콰도르"
+ },
+ "SV": {
+ "name": "엘살바도르"
+ },
+ "GB": {
+ "name": "영국"
+ },
+ "VG": {
+ "name": "영국령 버진 아일랜드"
+ },
+ "IO": {
+ "name": "영국령인도양식민지"
+ },
+ "YE": {
+ "name": "예멘"
+ },
+ "OM": {
+ "name": "오만"
+ },
+ "AU": {
+ "name": "오스트레일리아"
+ },
+ "AT": {
+ "name": "오스트리아"
+ },
+ "HN": {
+ "name": "온두라스"
+ },
+ "AX": {
+ "name": "올란드 제도"
+ },
+ "WF": {
+ "name": "왈리스-푸투나 제도"
+ },
+ "JO": {
+ "name": "요르단"
+ },
+ "UG": {
+ "name": "우간다"
+ },
+ "UY": {
+ "name": "우루과이"
+ },
+ "UZ": {
+ "name": "우즈베키스탄"
+ },
+ "UA": {
+ "name": "우크라이나"
+ },
+ "ET": {
+ "name": "이디오피아"
+ },
+ "IQ": {
+ "name": "이라크"
+ },
+ "IR": {
+ "name": "이란"
+ },
+ "IL": {
+ "name": "이스라엘"
+ },
+ "EG": {
+ "name": "이집트"
+ },
+ "IT": {
+ "name": "이탈리아"
+ },
+ "IN": {
+ "name": "인도"
+ },
+ "ID": {
+ "name": "인도네시아"
+ },
+ "JP": {
+ "name": "일본"
+ },
+ "JM": {
+ "name": "자메이카"
+ },
+ "ZM": {
+ "name": "잠비아"
+ },
+ "JE": {
+ "name": "저지"
+ },
+ "GQ": {
+ "name": "적도 기니"
+ },
+ "KP": {
+ "name": "조선 민주주의 인민 공화국"
+ },
+ "GE": {
+ "name": "조지아"
+ },
+ "CN": {
+ "name": "중국"
+ },
+ "CF": {
+ "name": "중앙 아프리카 공화국"
+ },
+ "DJ": {
+ "name": "지부티"
+ },
+ "GI": {
+ "name": "지브롤터"
+ },
+ "ZW": {
+ "name": "짐바브웨"
+ },
+ "TD": {
+ "name": "차드"
+ },
+ "CZ": {
+ "name": "체코"
+ },
+ "CL": {
+ "name": "칠레"
+ },
+ "IC": {
+ "name": "카나리아 제도"
+ },
+ "CM": {
+ "name": "카메룬"
+ },
+ "KZ": {
+ "name": "카자흐스탄"
+ },
+ "QA": {
+ "name": "카타르"
+ },
+ "KH": {
+ "name": "캄보디아"
+ },
+ "CA": {
+ "name": "캐나다"
+ },
+ "KE": {
+ "name": "케냐"
+ },
+ "KY": {
+ "name": "케이맨제도"
+ },
+ "KM": {
+ "name": "코모로스"
+ },
+ "XK": {
+ "name": "코소보"
+ },
+ "CR": {
+ "name": "코스타리카"
+ },
+ "CC": {
+ "name": "코코스제도"
+ },
+ "CI": {
+ "name": "코트디부아르"
+ },
+ "CO": {
+ "name": "콜롬비아"
+ },
+ "CG": {
+ "name": "콩고"
+ },
+ "CD": {
+ "name": "콩고-킨샤사"
+ },
+ "CU": {
+ "name": "쿠바"
+ },
+ "KW": {
+ "name": "쿠웨이트"
+ },
+ "CK": {
+ "name": "쿡제도"
+ },
+ "CW": {
+ "name": "퀴라소"
+ },
+ "HR": {
+ "name": "크로아티아"
+ },
+ "CX": {
+ "name": "크리스마스섬"
+ },
+ "KG": {
+ "name": "키르기스스탄"
+ },
+ "KI": {
+ "name": "키리바시"
+ },
+ "TJ": {
+ "name": "타지키스탄"
+ },
+ "TZ": {
+ "name": "탄자니아"
+ },
+ "TH": {
+ "name": "태국"
+ },
+ "TC": {
+ "name": "터크스케이커스제도"
+ },
+ "TR": {
+ "name": "터키"
+ },
+ "TG": {
+ "name": "토고"
+ },
+ "TK": {
+ "name": "토켈라우"
+ },
+ "TO": {
+ "name": "통가"
+ },
+ "TM": {
+ "name": "투르크메니스탄"
+ },
+ "TV": {
+ "name": "투발루"
+ },
+ "TN": {
+ "name": "튀니지"
+ },
+ "TT": {
+ "name": "트리니다드 토바고"
+ },
+ "TA": {
+ "name": "트리스탄다쿠나"
+ },
+ "PA": {
+ "name": "파나마"
+ },
+ "PY": {
+ "name": "파라과이"
+ },
+ "PK": {
+ "name": "파키스탄"
+ },
+ "PG": {
+ "name": "파푸아뉴기니"
+ },
+ "PW": {
+ "name": "팔라우"
+ },
+ "PS": {
+ "name": "팔레스타인 지구"
+ },
+ "FO": {
+ "name": "페로제도"
+ },
+ "PE": {
+ "name": "페루"
+ },
+ "PT": {
+ "name": "포르투갈"
+ },
+ "FK": {
+ "name": "포클랜드 제도"
+ },
+ "PL": {
+ "name": "폴란드"
+ },
+ "PR": {
+ "name": "푸에르토리코"
+ },
+ "FR": {
+ "name": "프랑스"
+ },
+ "TF": {
+ "name": "프랑스 남부 지방"
+ },
+ "GF": {
+ "name": "프랑스령 기아나"
+ },
+ "PF": {
+ "name": "프랑스령 폴리네시아"
+ },
+ "FJ": {
+ "name": "피지"
+ },
+ "FI": {
+ "name": "핀란드"
+ },
+ "PH": {
+ "name": "필리핀"
+ },
+ "PN": {
+ "name": "핏케언 섬"
+ },
+ "HU": {
+ "name": "헝가리"
+ },
+ "HK": {
+ "name": "홍콩, 중국 특별행정구"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ks.json b/library/intl/resources/country/ks.json
new file mode 100644
index 000000000..08e833978
--- /dev/null
+++ b/library/intl/resources/country/ks.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AZ": {
+ "name": "آزَرباجان"
+ },
+ "AU": {
+ "name": "آسٹریلِیا"
+ },
+ "AT": {
+ "name": "آسٹِیا"
+ },
+ "IM": {
+ "name": "آیِل آف میٛن"
+ },
+ "AR": {
+ "name": "أرجَنٹینا"
+ },
+ "SV": {
+ "name": "اٮ۪ل سَلواڑور"
+ },
+ "AL": {
+ "name": "اٮ۪لبانِیا"
+ },
+ "DZ": {
+ "name": "اٮ۪لجیرِیا"
+ },
+ "AG": {
+ "name": "اٮ۪نٹِگُوا تہٕ باربوڑا"
+ },
+ "AD": {
+ "name": "اٮ۪نڑورا"
+ },
+ "ET": {
+ "name": "اِتھوپِیا"
+ },
+ "IT": {
+ "name": "اِٹلی"
+ },
+ "ER": {
+ "name": "اِرٕٹِیا"
+ },
+ "AM": {
+ "name": "اَرمانِیا"
+ },
+ "AW": {
+ "name": "اَروٗبا"
+ },
+ "UZ": {
+ "name": "اُزبِکِستان"
+ },
+ "IL": {
+ "name": "اِسرایٖل"
+ },
+ "AF": {
+ "name": "اَفغانَستان"
+ },
+ "EC": {
+ "name": "اِکواڑور"
+ },
+ "GQ": {
+ "name": "اِکوِٹورِیَل گِنی"
+ },
+ "AS": {
+ "name": "اَمریٖکَن سَموا"
+ },
+ "ID": {
+ "name": "اِنڑونیشِیا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "OM": {
+ "name": "اومان"
+ },
+ "IQ": {
+ "name": "ایٖراق"
+ },
+ "IR": {
+ "name": "ایٖران"
+ },
+ "IE": {
+ "name": "اَیَرلینٛڑ"
+ },
+ "EE": {
+ "name": "ایسٹونِیا"
+ },
+ "IS": {
+ "name": "اَیِسلینٛڑ"
+ },
+ "AX": {
+ "name": "ایلینٛڑ جٔزیٖرٕ"
+ },
+ "AQ": {
+ "name": "اینٹارٹِکا"
+ },
+ "CI": {
+ "name": "اَیوٕری کوسٹ"
+ },
+ "BB": {
+ "name": "باربیڈاس"
+ },
+ "BH": {
+ "name": "بحریٖن"
+ },
+ "BR": {
+ "name": "برٛازِل"
+ },
+ "VG": {
+ "name": "بَرطانوی ؤرجِن جٔزیٖرٕ"
+ },
+ "IO": {
+ "name": "برطانوی بحرِ ہِنٛدۍ علاقہٕ"
+ },
+ "BQ": {
+ "name": "برطانوی قُطبہِ جَنوٗبی علاقہٕ"
+ },
+ "BF": {
+ "name": "بُرکِنا فیسو"
+ },
+ "BM": {
+ "name": "بٔرمیوڈا"
+ },
+ "BN": {
+ "name": "بُرنٔے"
+ },
+ "BG": {
+ "name": "بَلجیرِیا"
+ },
+ "BD": {
+ "name": "بَنٛگلادیش"
+ },
+ "BJ": {
+ "name": "بِنِن"
+ },
+ "BS": {
+ "name": "بَہامَس"
+ },
+ "BW": {
+ "name": "بوتَسوانا"
+ },
+ "BT": {
+ "name": "بوٗٹان"
+ },
+ "BI": {
+ "name": "بورَنڈِ"
+ },
+ "BA": {
+ "name": "بوسنِیا تہٕ ہَرزِگووِنا"
+ },
+ "BO": {
+ "name": "بولِوِیا"
+ },
+ "BY": {
+ "name": "بیلاروٗس"
+ },
+ "BZ": {
+ "name": "بیلِج"
+ },
+ "BE": {
+ "name": "بیٛلجِیَم"
+ },
+ "PG": {
+ "name": "پاپُوا نیوٗ گیٖنی"
+ },
+ "PK": {
+ "name": "پاکِستان"
+ },
+ "PN": {
+ "name": "پِٹکیرٕنۍ جٔزیٖرٕ"
+ },
+ "PY": {
+ "name": "پَراگُے"
+ },
+ "PT": {
+ "name": "پُرتِگال"
+ },
+ "PR": {
+ "name": "پٔرٹو رِکو"
+ },
+ "PW": {
+ "name": "پَلاو"
+ },
+ "PA": {
+ "name": "پَناما"
+ },
+ "PL": {
+ "name": "پولینٛڑ"
+ },
+ "PE": {
+ "name": "پیٖروٗ"
+ },
+ "TJ": {
+ "name": "تاجکِستان"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TC": {
+ "name": "تُرُک تہٕ کیکوس جٔزیٖرٕ"
+ },
+ "TR": {
+ "name": "تُرکی"
+ },
+ "TM": {
+ "name": "تُرمِنِستان"
+ },
+ "TZ": {
+ "name": "تَنجانِیا"
+ },
+ "TH": {
+ "name": "تھایلینٛڑ"
+ },
+ "TK": {
+ "name": "توکیلاو"
+ },
+ "TV": {
+ "name": "توٗوالوٗ"
+ },
+ "TT": {
+ "name": "ٹرٛنِنداد تہٕ ٹوبیگو"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونٛگا"
+ },
+ "TN": {
+ "name": "ٹونیشِیا"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجِیا"
+ },
+ "ZM": {
+ "name": "جامبِیا"
+ },
+ "GI": {
+ "name": "جِبرالٹَر"
+ },
+ "DJ": {
+ "name": "جِبوٗتی"
+ },
+ "JE": {
+ "name": "جٔرسی"
+ },
+ "DE": {
+ "name": "جرمٔنی"
+ },
+ "JM": {
+ "name": "جَمایکا"
+ },
+ "ZA": {
+ "name": "جَنوٗبی اَفریٖکا"
+ },
+ "GS": {
+ "name": "جنوٗبی جارجِیا تہٕ جنوٗبی سینٛڑوٕچ جٔزیٖرٕ"
+ },
+ "KR": {
+ "name": "جنوٗبی کورِیا"
+ },
+ "TD": {
+ "name": "چاڑ"
+ },
+ "CL": {
+ "name": "چِلی"
+ },
+ "CZ": {
+ "name": "چیک جَموٗرِیَت"
+ },
+ "CN": {
+ "name": "چیٖن"
+ },
+ "DM": {
+ "name": "ڈومِنِکا"
+ },
+ "DO": {
+ "name": "ڈومِنِکَن جموٗرِیَت"
+ },
+ "DK": {
+ "name": "ڈینٛمارٕک"
+ },
+ "RU": {
+ "name": "روٗس"
+ },
+ "RO": {
+ "name": "رومانِیا"
+ },
+ "RW": {
+ "name": "روٗوانٛڈا"
+ },
+ "RE": {
+ "name": "رِیوٗنِیَن"
+ },
+ "ZW": {
+ "name": "زِمبابے"
+ },
+ "ST": {
+ "name": "ساو توم تہٕ پرٛنسِپی"
+ },
+ "CY": {
+ "name": "سایفرٛس"
+ },
+ "ES": {
+ "name": "سٕپین"
+ },
+ "RS": {
+ "name": "سَربِیا"
+ },
+ "SR": {
+ "name": "سُرِنام"
+ },
+ "LK": {
+ "name": "سِریٖلَنٛکا"
+ },
+ "SK": {
+ "name": "سَلوواکِیا"
+ },
+ "SI": {
+ "name": "سَلووینِیا"
+ },
+ "SG": {
+ "name": "ٛسِنٛگاپوٗر"
+ },
+ "SJ": {
+ "name": "سَوالبریڑ تہٕ جان ماییڑ"
+ },
+ "SA": {
+ "name": "سوٗدی عربِیہ"
+ },
+ "SD": {
+ "name": "سوٗڈان"
+ },
+ "SE": {
+ "name": "سُوِڈَن"
+ },
+ "CH": {
+ "name": "سُوِزَرلینٛڑ"
+ },
+ "SZ": {
+ "name": "سُوزِلینٛڑ"
+ },
+ "SB": {
+ "name": "سولامان جٔزیٖرٕ"
+ },
+ "SO": {
+ "name": "سومالِیا"
+ },
+ "SL": {
+ "name": "سیٖرالیوون"
+ },
+ "SC": {
+ "name": "سیشَلِس"
+ },
+ "WS": {
+ "name": "سیمووا"
+ },
+ "SM": {
+ "name": "سین میرِنو"
+ },
+ "BL": {
+ "name": "سینٛٹ بارتَھیلمی"
+ },
+ "PM": {
+ "name": "سینٛٹ پیٖری تہٕ موکیلِیَن"
+ },
+ "KN": {
+ "name": "سینٛٹ کِٹَس تہٕ نیوِس"
+ },
+ "LC": {
+ "name": "سینٛٹ لوٗسِیا"
+ },
+ "MF": {
+ "name": "سینٛٹ مارٹِن"
+ },
+ "SH": {
+ "name": "سینٛٹ ہٮ۪لِنا"
+ },
+ "VC": {
+ "name": "سینٛٹ وینسٮ۪ٹ تہٕ گرٛیناڑاینٕز"
+ },
+ "SN": {
+ "name": "سینیگَل"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "شُمٲلی کورِیا"
+ },
+ "MP": {
+ "name": "شُمٲلی مارِیانا جٔزیٖرٕ"
+ },
+ "FJ": {
+ "name": "فِجی"
+ },
+ "FR": {
+ "name": "فرٛانس"
+ },
+ "TF": {
+ "name": "فرٛانسِسی جَنوٗبی عَلاقہٕ"
+ },
+ "GF": {
+ "name": "فرٛانسِسی گِانا"
+ },
+ "PF": {
+ "name": "فرٛانسی پولِنیشِیا"
+ },
+ "FK": {
+ "name": "فٕلاکلینٛڑ جٔزیٖرٕ"
+ },
+ "PH": {
+ "name": "فِلِپِینس"
+ },
+ "PS": {
+ "name": "فَلَستیٖن"
+ },
+ "FI": {
+ "name": "فِنلینٛڑ"
+ },
+ "QA": {
+ "name": "قَطِر"
+ },
+ "KI": {
+ "name": "کِرٕباتی"
+ },
+ "CX": {
+ "name": "کرِسمَس جٔزیٖرٕ"
+ },
+ "KG": {
+ "name": "کِرگِستان"
+ },
+ "HR": {
+ "name": "کرٛوشِیا"
+ },
+ "KZ": {
+ "name": "کَزاکِستان"
+ },
+ "CK": {
+ "name": "کُک جٔزیٖرٕ"
+ },
+ "KH": {
+ "name": "کَمبوڑِیا"
+ },
+ "KM": {
+ "name": "کَمورَس"
+ },
+ "KE": {
+ "name": "کِنٛیا"
+ },
+ "CR": {
+ "name": "کوسٹا رِکا"
+ },
+ "CC": {
+ "name": "کوکَس کیٖلِنٛگ جٔزیٖرٕ"
+ },
+ "CO": {
+ "name": "کولَمبِیا"
+ },
+ "CG": {
+ "name": "کونٛگو بٔرٛزاوِلی"
+ },
+ "CD": {
+ "name": "کونٛگو کِنشاسا"
+ },
+ "KW": {
+ "name": "کُویت"
+ },
+ "CV": {
+ "name": "کیپ ؤرڑی"
+ },
+ "CM": {
+ "name": "کیٚمِروٗن"
+ },
+ "KY": {
+ "name": "کیمَن جٔزیٖرٕ"
+ },
+ "CA": {
+ "name": "کینَڑا"
+ },
+ "CU": {
+ "name": "کیوٗبا"
+ },
+ "GH": {
+ "name": "گانا"
+ },
+ "GD": {
+ "name": "گرٛنیڑا"
+ },
+ "GR": {
+ "name": "گریٖس"
+ },
+ "GL": {
+ "name": "گریٖنلینٛڑ"
+ },
+ "GM": {
+ "name": "گَمبِیا"
+ },
+ "GN": {
+ "name": "گِنی"
+ },
+ "GP": {
+ "name": "گَواڑیلوپ"
+ },
+ "GU": {
+ "name": "گُوام"
+ },
+ "GT": {
+ "name": "گوتیدالا"
+ },
+ "GY": {
+ "name": "گُیانا"
+ },
+ "GA": {
+ "name": "گیبان"
+ },
+ "GW": {
+ "name": "گیٖنی بِساو"
+ },
+ "GG": {
+ "name": "گیوَنَرسے"
+ },
+ "LA": {
+ "name": "لاس"
+ },
+ "LR": {
+ "name": "لایبیرِیا"
+ },
+ "LB": {
+ "name": "لٮ۪بنان"
+ },
+ "LY": {
+ "name": "لِبیا"
+ },
+ "LT": {
+ "name": "لِتھُوانِیا"
+ },
+ "LI": {
+ "name": "لِکٹیٛسٹیٖن"
+ },
+ "LU": {
+ "name": "لَکسَمبٔرٕگ"
+ },
+ "LV": {
+ "name": "لیٛٹوِیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "MR": {
+ "name": "مارٕٹانِیا"
+ },
+ "MQ": {
+ "name": "مارٹِنِک"
+ },
+ "MH": {
+ "name": "مارشَل جٔزیٖرٕ"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MV": {
+ "name": "مالدیٖو"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "MS": {
+ "name": "مانٛٹسیراٹ"
+ },
+ "MK": {
+ "name": "مٮ۪سوڑونِیا"
+ },
+ "MX": {
+ "name": "مٮ۪کسِکو"
+ },
+ "AE": {
+ "name": "مُتحدہ عرَب امارات"
+ },
+ "CF": {
+ "name": "مرکٔزی اَفریٖکی جموٗریَت"
+ },
+ "EG": {
+ "name": "مِسٔر"
+ },
+ "TL": {
+ "name": "مَشرِقی تایمور"
+ },
+ "EH": {
+ "name": "مشرِقی سَہارا"
+ },
+ "MO": {
+ "name": "مَکاوو ایس اے آر چیٖن"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "مَلیشِیا"
+ },
+ "MN": {
+ "name": "مَنٛگولِیا"
+ },
+ "ME": {
+ "name": "موٹونیٛگِریو"
+ },
+ "MU": {
+ "name": "مورِشَس"
+ },
+ "MA": {
+ "name": "موروکو"
+ },
+ "MZ": {
+ "name": "موزَمبِک"
+ },
+ "MD": {
+ "name": "مولڑاوِیا"
+ },
+ "MC": {
+ "name": "مونیٚکو"
+ },
+ "MG": {
+ "name": "میڑاگاسکار"
+ },
+ "MM": {
+ "name": "مَیَنما بٔرما"
+ },
+ "YT": {
+ "name": "مَییٹ"
+ },
+ "NF": {
+ "name": "نارفاک جٔزیٖرٕ"
+ },
+ "NR": {
+ "name": "نارووٗ"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NI": {
+ "name": "ناکاراگُوا"
+ },
+ "NA": {
+ "name": "نامِبِیا"
+ },
+ "NE": {
+ "name": "نایجَر"
+ },
+ "NG": {
+ "name": "نایجیرِیا"
+ },
+ "NC": {
+ "name": "نِو کیلِڑونِیا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیٖدَرلینٛڑ"
+ },
+ "NU": {
+ "name": "نیوٗ"
+ },
+ "NZ": {
+ "name": "نیوٗزِلینٛڑ"
+ },
+ "HN": {
+ "name": "ہانٛڈوٗرِس"
+ },
+ "HK": {
+ "name": "ہانٛگ کانٛگ ایس اے آر چیٖن"
+ },
+ "HT": {
+ "name": "ہایتی"
+ },
+ "IN": {
+ "name": "ہِنٛدوستان"
+ },
+ "HU": {
+ "name": "ہَنٛگری"
+ },
+ "WF": {
+ "name": "والِس تہٕ فیوٗچوٗنا"
+ },
+ "VU": {
+ "name": "وانوٗتوٗ"
+ },
+ "VA": {
+ "name": "ویٹِکَن سِٹی"
+ },
+ "VN": {
+ "name": "ویٹِنام"
+ },
+ "VE": {
+ "name": "وینازوٗلا"
+ },
+ "YE": {
+ "name": "یَمَن"
+ },
+ "GB": {
+ "name": "یُنایٹِڑ کِنٛگڈَم"
+ },
+ "VI": {
+ "name": "یوٗ ایس ؤرجِن جٔزیٖرٕ"
+ },
+ "UA": {
+ "name": "یوٗرِکین"
+ },
+ "UY": {
+ "name": "یوٗروگے"
+ },
+ "UG": {
+ "name": "یوٗگانٛڑا"
+ },
+ "US": {
+ "name": "یوٗنایٹِڑ سِٹیٹِس"
+ },
+ "UM": {
+ "name": "یوٗنایٹِڑ سِٹیٹِس ماینَر آوُٹلییِنٛگ جٔزیٖرٕ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksb.json b/library/intl/resources/country/ksb.json
new file mode 100644
index 000000000..ee91470b3
--- /dev/null
+++ b/library/intl/resources/country/ksb.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Aflika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljelia"
+ },
+ "AM": {
+ "name": "Almenia"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Balbuda"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austlalia"
+ },
+ "AT": {
+ "name": "Austlia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Belmuda"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BR": {
+ "name": "Blazili"
+ },
+ "BN": {
+ "name": "Blunei"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgalia"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "ER": {
+ "name": "Elitlea"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo ja Uingeeza mwe Bahali Hindi"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kialabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Glenada"
+ },
+ "GL": {
+ "name": "Glinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufalansa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Honduasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungalia"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IL": {
+ "name": "Islaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuli ya Afrika ya Gati"
+ },
+ "CZ": {
+ "name": "Jamhuli ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuli ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuli ya Kidemoklasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jiblalta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiibati"
+ },
+ "KG": {
+ "name": "Kiigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Nolfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "HR": {
+ "name": "Kolasia"
+ },
+ "KP": {
+ "name": "Kolea Kaskazini"
+ },
+ "KR": {
+ "name": "Kolea Kusini"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostalika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuplosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libelia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Maltiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MR": {
+ "name": "Maulitania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Miklonesia"
+ },
+ "EG": {
+ "name": "Misli"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montselati"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NE": {
+ "name": "Naija"
+ },
+ "NG": {
+ "name": "Naijelia"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Nolwei"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PY": {
+ "name": "Palagwai"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitkailni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieli na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Glenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Plincipe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siela Leoni"
+ },
+ "SY": {
+ "name": "Silia"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timoli ya Mashaliki"
+ },
+ "TT": {
+ "name": "Tlinidad na Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tulukimenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "FR": {
+ "name": "Ufalansa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiiki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingeeza"
+ },
+ "DE": {
+ "name": "Ujeumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Maghalibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Uklaini"
+ },
+ "PT": {
+ "name": "Uleno"
+ },
+ "UY": {
+ "name": "Ulugwai"
+ },
+ "RU": {
+ "name": "Ulusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Maliana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Mashal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Tulki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Vilgin vya Malekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Vilgin vya Uingeeza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yoldani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksf.json b/library/intl/resources/country/ksf.json
new file mode 100644
index 000000000..172636405
--- /dev/null
+++ b/library/intl/resources/country/ksf.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "afganistáŋ"
+ },
+ "ZA": {
+ "name": "afrik anǝ a sud"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "albaní"
+ },
+ "DZ": {
+ "name": "aljɛrí"
+ },
+ "US": {
+ "name": "amɛrika"
+ },
+ "AD": {
+ "name": "andɔrǝ"
+ },
+ "AI": {
+ "name": "angiya"
+ },
+ "AO": {
+ "name": "angóla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiga ri barbúda"
+ },
+ "SA": {
+ "name": "arabí saodí"
+ },
+ "AR": {
+ "name": "arjǝntín"
+ },
+ "AM": {
+ "name": "armɛní"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "ayiti"
+ },
+ "AZ": {
+ "name": "azabecán"
+ },
+ "BB": {
+ "name": "baabaadǝ"
+ },
+ "BS": {
+ "name": "baamás"
+ },
+ "BD": {
+ "name": "baŋladɛ́c"
+ },
+ "BH": {
+ "name": "barǝ́n"
+ },
+ "AE": {
+ "name": "bǝlɔŋ bǝ kaksa bɛ táatáaŋzǝn"
+ },
+ "BM": {
+ "name": "bɛɛmúdǝ"
+ },
+ "BY": {
+ "name": "bɛlaris"
+ },
+ "BZ": {
+ "name": "bɛliz"
+ },
+ "BE": {
+ "name": "bɛljík"
+ },
+ "BJ": {
+ "name": "bɛnǝ́n"
+ },
+ "BW": {
+ "name": "botswana"
+ },
+ "BO": {
+ "name": "bɔɔlíví"
+ },
+ "BA": {
+ "name": "bɔsnyɛ ri hɛrsǝgɔvín"
+ },
+ "BR": {
+ "name": "brɛsíl"
+ },
+ "BN": {
+ "name": "brunǝ́"
+ },
+ "BF": {
+ "name": "bukína fǝ́ asɔ"
+ },
+ "BG": {
+ "name": "bulgarí"
+ },
+ "BI": {
+ "name": "burundí"
+ },
+ "BT": {
+ "name": "bután"
+ },
+ "TD": {
+ "name": "caád"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CZ": {
+ "name": "cɛ́k"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "cíli"
+ },
+ "CN": {
+ "name": "cín"
+ },
+ "CY": {
+ "name": "cíprɛ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "danmak"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DE": {
+ "name": "djɛrman"
+ },
+ "DM": {
+ "name": "dɔminik"
+ },
+ "DO": {
+ "name": "dɔminik rɛpublík"
+ },
+ "DJ": {
+ "name": "dyibutí"
+ },
+ "EG": {
+ "name": "ɛjípt"
+ },
+ "EC": {
+ "name": "ɛkwatɛǝ́"
+ },
+ "ER": {
+ "name": "ɛritrɛ́"
+ },
+ "EE": {
+ "name": "ɛstoní"
+ },
+ "ET": {
+ "name": "ɛtyɔpí"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "fíji"
+ },
+ "PH": {
+ "name": "filipǝ́n"
+ },
+ "FI": {
+ "name": "fínlan"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "gabɔŋ"
+ },
+ "GM": {
+ "name": "gambí"
+ },
+ "GH": {
+ "name": "gána"
+ },
+ "GN": {
+ "name": "ginɛ́"
+ },
+ "GW": {
+ "name": "ginɛ́ bisɔ́"
+ },
+ "GQ": {
+ "name": "ginɛ́ ɛkwatɔrial"
+ },
+ "GR": {
+ "name": "grɛ́k"
+ },
+ "GD": {
+ "name": "grɛnadǝ"
+ },
+ "GL": {
+ "name": "grínlan"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "guyán"
+ },
+ "GF": {
+ "name": "guyán i pɛrɛsǝ́"
+ },
+ "GP": {
+ "name": "gwadɛlúp"
+ },
+ "GU": {
+ "name": "gwám"
+ },
+ "GT": {
+ "name": "gwátǝmala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IE": {
+ "name": "ilán"
+ },
+ "IN": {
+ "name": "indí"
+ },
+ "ID": {
+ "name": "indonɛsí"
+ },
+ "IQ": {
+ "name": "irák"
+ },
+ "IR": {
+ "name": "iráŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "israɛ́l"
+ },
+ "IT": {
+ "name": "italí"
+ },
+ "JM": {
+ "name": "jamaík"
+ },
+ "JP": {
+ "name": "japɔ́ŋ"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "jibraltá"
+ },
+ "JO": {
+ "name": "jɔrdán"
+ },
+ "GE": {
+ "name": "jɔrjí"
+ },
+ "NC": {
+ "name": "kalɛdoní anyɔ́n"
+ },
+ "KH": {
+ "name": "kambodj"
+ },
+ "CM": {
+ "name": "kamɛrún"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "CV": {
+ "name": "kapvɛr"
+ },
+ "QA": {
+ "name": "katá"
+ },
+ "KZ": {
+ "name": "kazakstáŋ"
+ },
+ "NL": {
+ "name": "kǝlɔŋ kǝ ázǝ"
+ },
+ "GB": {
+ "name": "kǝlɔŋ kǝ kǝtáatáaŋzǝn"
+ },
+ "KE": {
+ "name": "kɛnya"
+ },
+ "KG": {
+ "name": "kigistáŋ"
+ },
+ "KI": {
+ "name": "kiribáti"
+ },
+ "CO": {
+ "name": "kolɔmbí"
+ },
+ "KM": {
+ "name": "komɔr"
+ },
+ "KP": {
+ "name": "korɛanɔ́r"
+ },
+ "KR": {
+ "name": "korɛasud"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CG": {
+ "name": "kɔngó"
+ },
+ "CD": {
+ "name": "kɔngó anyɔ́n"
+ },
+ "CR": {
+ "name": "kɔstaríka"
+ },
+ "CI": {
+ "name": "kɔtiwuár"
+ },
+ "ES": {
+ "name": "kpanyá"
+ },
+ "HR": {
+ "name": "krwasí"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "KW": {
+ "name": "kuwɛit"
+ },
+ "LA": {
+ "name": "laɔs"
+ },
+ "LS": {
+ "name": "lǝsóto"
+ },
+ "LV": {
+ "name": "lɛtoní"
+ },
+ "LB": {
+ "name": "libáŋ"
+ },
+ "LR": {
+ "name": "libɛrya"
+ },
+ "LY": {
+ "name": "libí"
+ },
+ "LI": {
+ "name": "lictɛnstɛ́n"
+ },
+ "LT": {
+ "name": "litwaní"
+ },
+ "LU": {
+ "name": "luksɛmbúr"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "madagaska"
+ },
+ "MW": {
+ "name": "malawi"
+ },
+ "MV": {
+ "name": "maldivǝ"
+ },
+ "MY": {
+ "name": "malɛsí"
+ },
+ "ML": {
+ "name": "mali"
+ },
+ "MT": {
+ "name": "maltǝ"
+ },
+ "MA": {
+ "name": "marɔk"
+ },
+ "MK": {
+ "name": "másǝdwán"
+ },
+ "MQ": {
+ "name": "matiník"
+ },
+ "YT": {
+ "name": "mayɔ́t"
+ },
+ "MX": {
+ "name": "mɛksík"
+ },
+ "FM": {
+ "name": "mikronɛ́si"
+ },
+ "MC": {
+ "name": "monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "mosambík"
+ },
+ "MD": {
+ "name": "mɔldaví"
+ },
+ "MS": {
+ "name": "mɔnsɛrat"
+ },
+ "MN": {
+ "name": "mɔŋolí"
+ },
+ "MU": {
+ "name": "mwarís"
+ },
+ "MR": {
+ "name": "mwaritaní"
+ },
+ "MM": {
+ "name": "myanmár"
+ },
+ "NA": {
+ "name": "namibí"
+ },
+ "NP": {
+ "name": "nɛpal"
+ },
+ "NE": {
+ "name": "nijɛ́r"
+ },
+ "NG": {
+ "name": "nijɛ́rya"
+ },
+ "NI": {
+ "name": "níkarágwa"
+ },
+ "NU": {
+ "name": "niwɛ́"
+ },
+ "NO": {
+ "name": "nɔrvɛjǝ"
+ },
+ "NR": {
+ "name": "nwarú"
+ },
+ "OM": {
+ "name": "oman"
+ },
+ "AT": {
+ "name": "otric"
+ },
+ "HN": {
+ "name": "ɔnduras"
+ },
+ "HU": {
+ "name": "ɔngrí"
+ },
+ "AU": {
+ "name": "ɔstralí"
+ },
+ "PK": {
+ "name": "pakistáŋ"
+ },
+ "PW": {
+ "name": "palwa"
+ },
+ "PA": {
+ "name": "panama"
+ },
+ "PG": {
+ "name": "papwazí ginɛ́ anyɔ́n"
+ },
+ "PY": {
+ "name": "paragwɛ́"
+ },
+ "FR": {
+ "name": "pɛrɛsǝ́"
+ },
+ "PE": {
+ "name": "pɛrú"
+ },
+ "PN": {
+ "name": "pitkɛ́n"
+ },
+ "PL": {
+ "name": "polɔ́n"
+ },
+ "PT": {
+ "name": "portugál"
+ },
+ "PF": {
+ "name": "pɔlinɛsí a pɛrɛsǝ́"
+ },
+ "PR": {
+ "name": "pɔtoríko"
+ },
+ "RE": {
+ "name": "rɛunyɔŋ"
+ },
+ "RU": {
+ "name": "risí"
+ },
+ "RO": {
+ "name": "rɔmaní"
+ },
+ "RW": {
+ "name": "rwanda"
+ },
+ "SV": {
+ "name": "salvadɔr"
+ },
+ "WS": {
+ "name": "samɔa"
+ },
+ "AS": {
+ "name": "samɔa a amɛrika"
+ },
+ "CF": {
+ "name": "santrafrík"
+ },
+ "ST": {
+ "name": "saotomɛ́ ri priŋsib"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "sɛcɛl"
+ },
+ "SN": {
+ "name": "sɛnɛgal"
+ },
+ "KN": {
+ "name": "sɛnkrǝstɔ́f ri nyɛ́vǝ"
+ },
+ "SM": {
+ "name": "sɛnmarǝn"
+ },
+ "PM": {
+ "name": "sɛnpyɛr ri mikɛlɔŋ"
+ },
+ "SH": {
+ "name": "sɛntɛ́len"
+ },
+ "LC": {
+ "name": "sɛntlísí"
+ },
+ "VC": {
+ "name": "sɛnvǝnsǝŋ ri grɛnadín"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "siŋapó"
+ },
+ "SY": {
+ "name": "sirí"
+ },
+ "SK": {
+ "name": "slovakí"
+ },
+ "SI": {
+ "name": "slovɛní"
+ },
+ "SO": {
+ "name": "somalí"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "srílaŋka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "sudan"
+ },
+ "SR": {
+ "name": "surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "swazilan"
+ },
+ "SE": {
+ "name": "swɛdǝ"
+ },
+ "CH": {
+ "name": "swís"
+ },
+ "SL": {
+ "name": "syɛraleon"
+ },
+ "TJ": {
+ "name": "tadjikistaŋ"
+ },
+ "TZ": {
+ "name": "tanzaní"
+ },
+ "TH": {
+ "name": "tɛlan"
+ },
+ "TT": {
+ "name": "tɛrinitɛ ri tobago"
+ },
+ "TW": {
+ "name": "tɛwán"
+ },
+ "TL": {
+ "name": "timor anǝ á ɛst"
+ },
+ "TR": {
+ "name": "tirkí"
+ },
+ "TM": {
+ "name": "tirkmɛnistaŋ"
+ },
+ "TG": {
+ "name": "togo"
+ },
+ "TK": {
+ "name": "tokǝlao"
+ },
+ "TO": {
+ "name": "tɔŋa"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "tunɛsí"
+ },
+ "TV": {
+ "name": "tuwalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "uganda"
+ },
+ "UA": {
+ "name": "ukrain"
+ },
+ "UY": {
+ "name": "urugwɛ́"
+ },
+ "UZ": {
+ "name": "usbɛkistaŋ"
+ },
+ "WF": {
+ "name": "walis ri futuna"
+ },
+ "VU": {
+ "name": "wanwatu"
+ },
+ "VA": {
+ "name": "watikáŋ"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VE": {
+ "name": "wɛnǝzwɛla"
+ },
+ "VN": {
+ "name": "wyɛtnám"
+ },
+ "YE": {
+ "name": "yɛmɛn"
+ },
+ "ZM": {
+ "name": "zambí"
+ },
+ "VI": {
+ "name": "zǝ bɛ gɔn inɛ á amɛrika"
+ },
+ "VG": {
+ "name": "zǝ bɛ gɔn inɛ a ingɛrís"
+ },
+ "KY": {
+ "name": "zǝ i gan"
+ },
+ "IS": {
+ "name": "zǝ i glás"
+ },
+ "MH": {
+ "name": "zǝ i marcál"
+ },
+ "IO": {
+ "name": "zǝ ingɛrís ncɔ́m wa indi"
+ },
+ "FK": {
+ "name": "zǝ maalwín"
+ },
+ "MP": {
+ "name": "zǝ maryánnɔ́r"
+ },
+ "PS": {
+ "name": "zǝ palɛstínǝ"
+ },
+ "SB": {
+ "name": "zǝ salomɔ́n"
+ },
+ "TC": {
+ "name": "zǝ tirk ri kakɔs"
+ },
+ "CK": {
+ "name": "zɛ i kúk"
+ },
+ "NF": {
+ "name": "zɛ nɔ́fɔlk"
+ },
+ "NZ": {
+ "name": "zɛlan anyɔ́n"
+ },
+ "ZW": {
+ "name": "zimbabwɛ́"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksh.json b/library/intl/resources/country/ksh.json
new file mode 100644
index 000000000..3d9c7bbac
--- /dev/null
+++ b/library/intl/resources/country/ksh.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afjaanistahn"
+ },
+ "AR": {
+ "name": "Ajjentiinije"
+ },
+ "EG": {
+ "name": "Äjüpte"
+ },
+ "EC": {
+ "name": "Äkwador"
+ },
+ "SV": {
+ "name": "Äl Slavadoor"
+ },
+ "AL": {
+ "name": "Albaanije"
+ },
+ "CI": {
+ "name": "Älfebeijn-Köß"
+ },
+ "DZ": {
+ "name": "Alljeerije"
+ },
+ "AS": {
+ "name": "Ammerikaanesch Sammoha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anggwilla"
+ },
+ "AO": {
+ "name": "Angjoola"
+ },
+ "AG": {
+ "name": "Antigwa un Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorial Jineeja"
+ },
+ "ER": {
+ "name": "Äritreja"
+ },
+ "AM": {
+ "name": "Arrmeenije"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Aßension"
+ },
+ "AZ": {
+ "name": "Asserbaidschahn"
+ },
+ "EE": {
+ "name": "Äßland"
+ },
+ "ET": {
+ "name": "Ättijoopije"
+ },
+ "AU": {
+ "name": "Austraalije"
+ },
+ "BH": {
+ "name": "Bachrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Bellje"
+ },
+ "MM": {
+ "name": "Birma"
+ },
+ "BO": {
+ "name": "Bolliivije"
+ },
+ "BA": {
+ "name": "Boßnije un Herzegovina"
+ },
+ "BW": {
+ "name": "Bozwaana"
+ },
+ "BR": {
+ "name": "Brasilije"
+ },
+ "IO": {
+ "name": "Brettesche Besezunge em indesche Oozejahn"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukkinna-Faase"
+ },
+ "BG": {
+ "name": "Bulljaarije"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buttaan"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "BJ": {
+ "name": "dä Benin"
+ },
+ "CG": {
+ "name": "dä Konggo (Brassavill)"
+ },
+ "CD": {
+ "name": "dä Konggo (Kinschasa)"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "VI": {
+ "name": "de ammärrikahnesche Juffer-Enselle"
+ },
+ "BS": {
+ "name": "de Bahamas"
+ },
+ "BM": {
+ "name": "de Bermudas"
+ },
+ "VG": {
+ "name": "de brettesche Juffer-Enselle"
+ },
+ "DG": {
+ "name": "de Diego-Garcia-Ensel"
+ },
+ "DO": {
+ "name": "de Dommenekaanesche Reppublik"
+ },
+ "BB": {
+ "name": "de Ensel Barbados"
+ },
+ "IM": {
+ "name": "de Ensel Män"
+ },
+ "SH": {
+ "name": "de Ensel Zint Hellena"
+ },
+ "LC": {
+ "name": "de Ensel Zint-Lutscha"
+ },
+ "SJ": {
+ "name": "de Enselle Svalbard un Jan Mayen"
+ },
+ "TC": {
+ "name": "de Enselle Turks un Kaikos"
+ },
+ "FK": {
+ "name": "de Falkland-Enselle"
+ },
+ "FO": {
+ "name": "de Färrör-Enselle"
+ },
+ "FJ": {
+ "name": "de Fidschi-Endelle"
+ },
+ "KY": {
+ "name": "de Kaiman-Enselle"
+ },
+ "IC": {
+ "name": "de Kannaresche Enselle"
+ },
+ "CV": {
+ "name": "de kapvärdesche Enselle"
+ },
+ "BQ": {
+ "name": "de karribbesche Nederläng"
+ },
+ "CC": {
+ "name": "de Kokkos-Enselle"
+ },
+ "KM": {
+ "name": "de Kommoore"
+ },
+ "CK": {
+ "name": "de Kuuk-Enselle"
+ },
+ "MH": {
+ "name": "de Machschall-Enselle"
+ },
+ "NL": {
+ "name": "de Nederläng"
+ },
+ "MP": {
+ "name": "de nöödlijje Marijanne-Enselle"
+ },
+ "NF": {
+ "name": "de Noofok-Ensel"
+ },
+ "AX": {
+ "name": "de Ohland-Enselle"
+ },
+ "PN": {
+ "name": "de Pitkärn-Ensel"
+ },
+ "ZA": {
+ "name": "de Republik Södaffrika"
+ },
+ "CH": {
+ "name": "de Schweiz"
+ },
+ "SC": {
+ "name": "de Seischälle"
+ },
+ "SB": {
+ "name": "de Solomone-Enselle"
+ },
+ "TR": {
+ "name": "de Törkei"
+ },
+ "CZ": {
+ "name": "de Tschäschei"
+ },
+ "UA": {
+ "name": "de Ukra’iine"
+ },
+ "UM": {
+ "name": "de Vereineschte Schtaate vun Amärrika ier ußerhallef jelääje Enselsche"
+ },
+ "US": {
+ "name": "de vereineschte Schtaate vun Ammärrika"
+ },
+ "CX": {
+ "name": "de Weihnaachs-Ensel"
+ },
+ "CF": {
+ "name": "de Zäntraalaffrikaanesche Republik"
+ },
+ "BL": {
+ "name": "de Zint Battälmi-Enselle"
+ },
+ "MF": {
+ "name": "de Zint-Määtes-Ensel"
+ },
+ "SN": {
+ "name": "der Sennejall"
+ },
+ "AQ": {
+ "name": "der Södpol"
+ },
+ "TD": {
+ "name": "der Tschadd"
+ },
+ "VA": {
+ "name": "der Vattikahn"
+ },
+ "DM": {
+ "name": "Dominnika"
+ },
+ "DE": {
+ "name": "Doütschland"
+ },
+ "DJ": {
+ "name": "Dschibutti"
+ },
+ "ME": {
+ "name": "et Monteneejro"
+ },
+ "PH": {
+ "name": "Fillipiine"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankrisch"
+ },
+ "GF": {
+ "name": "Franzüüsesch Jujaana"
+ },
+ "PF": {
+ "name": "Franzüüsesch Pollineesije"
+ },
+ "TF": {
+ "name": "Franzüüsesche Södsee-Enselle"
+ },
+ "HT": {
+ "name": "Ha’itti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "Indije"
+ },
+ "ID": {
+ "name": "Indoneesije"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IE": {
+ "name": "Irrland"
+ },
+ "IS": {
+ "name": "Ißland"
+ },
+ "IL": {
+ "name": "Ißraäl"
+ },
+ "IT": {
+ "name": "Itaalije"
+ },
+ "GH": {
+ "name": "Jaana"
+ },
+ "GA": {
+ "name": "Jabuhn"
+ },
+ "GM": {
+ "name": "Jambija"
+ },
+ "JM": {
+ "name": "Jammaika"
+ },
+ "YE": {
+ "name": "Jämme"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "GE": {
+ "name": "Jeorrjije"
+ },
+ "GI": {
+ "name": "Jibralltaa"
+ },
+ "GN": {
+ "name": "Jinneha"
+ },
+ "GW": {
+ "name": "Jinneha_Bißau"
+ },
+ "GG": {
+ "name": "Jöönsei"
+ },
+ "JE": {
+ "name": "Jööseh"
+ },
+ "JO": {
+ "name": "Jordaanije"
+ },
+ "GD": {
+ "name": "Jrenaada"
+ },
+ "GR": {
+ "name": "Jriescheland"
+ },
+ "GL": {
+ "name": "Jröhnland"
+ },
+ "GB": {
+ "name": "Jruußbrettannije"
+ },
+ "GP": {
+ "name": "Juadelupp"
+ },
+ "GU": {
+ "name": "Juham"
+ },
+ "GY": {
+ "name": "Jujaana"
+ },
+ "GT": {
+ "name": "Juwatemaala"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kammeruhn"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kassakstahn"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KE": {
+ "name": "Keenija"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirrjiisije"
+ },
+ "CO": {
+ "name": "Kolumbije"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "HR": {
+ "name": "Krowazije"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "La’os"
+ },
+ "LV": {
+ "name": "Lätland"
+ },
+ "LB": {
+ "name": "Lebbannon"
+ },
+ "LS": {
+ "name": "Lesooto"
+ },
+ "LY": {
+ "name": "Libbije"
+ },
+ "LR": {
+ "name": "Libeerija"
+ },
+ "LI": {
+ "name": "Lischteschtein"
+ },
+ "LT": {
+ "name": "Littaue"
+ },
+ "LU": {
+ "name": "Luxembursch"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MQ": {
+ "name": "Machtinik"
+ },
+ "MG": {
+ "name": "Maddajaska"
+ },
+ "YT": {
+ "name": "Majott"
+ },
+ "MO": {
+ "name": "Makau"
+ },
+ "MY": {
+ "name": "Malaisije"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Mallediive"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MU": {
+ "name": "Maurizijus"
+ },
+ "MR": {
+ "name": "Mautitaanije"
+ },
+ "MX": {
+ "name": "Mäxiko"
+ },
+ "MK": {
+ "name": "Mazedoonije"
+ },
+ "FM": {
+ "name": "Mikroneesije"
+ },
+ "MD": {
+ "name": "Moldaavije"
+ },
+ "MC": {
+ "name": "Monakko"
+ },
+ "MN": {
+ "name": "Mongjolei"
+ },
+ "MS": {
+ "name": "Mongßerrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namiibije"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepall"
+ },
+ "NC": {
+ "name": "Neuschottland"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nikaraagua"
+ },
+ "NI": {
+ "name": "Nikaraaguwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nood-Koreja"
+ },
+ "SD": {
+ "name": "Noodsudahn"
+ },
+ "NO": {
+ "name": "Norrweeje"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Öösterisch"
+ },
+ "TL": {
+ "name": "Oß-Timor"
+ },
+ "PK": {
+ "name": "Pakistahn"
+ },
+ "PS": {
+ "name": "Palästina"
+ },
+ "PW": {
+ "name": "Pallau"
+ },
+ "PA": {
+ "name": "Pannama"
+ },
+ "PG": {
+ "name": "Papuwa Neujineeja"
+ },
+ "PY": {
+ "name": "Parraguwai"
+ },
+ "PE": {
+ "name": "Perruh"
+ },
+ "IR": {
+ "name": "Persije"
+ },
+ "PT": {
+ "name": "Pochtojall"
+ },
+ "PR": {
+ "name": "Pochtoriko"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "RE": {
+ "name": "Rehunjohn"
+ },
+ "RO": {
+ "name": "Romäänije"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rußland"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Sammoha"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "RS": {
+ "name": "Särbije"
+ },
+ "SA": {
+ "name": "Saudi Arraabije"
+ },
+ "CL": {
+ "name": "Schiile"
+ },
+ "CN": {
+ "name": "Schiina"
+ },
+ "ES": {
+ "name": "Schpaanije"
+ },
+ "SE": {
+ "name": "Schweede"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singjapuur"
+ },
+ "SL": {
+ "name": "Sjärra Lejone"
+ },
+ "GS": {
+ "name": "Söd-Jeorjie un de södlijje Botteramms-Enselle"
+ },
+ "KR": {
+ "name": "Söd-Koreja"
+ },
+ "SS": {
+ "name": "Södsudahn"
+ },
+ "SO": {
+ "name": "Somaalije"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SK": {
+ "name": "ẞlovakei"
+ },
+ "SI": {
+ "name": "ẞloveenije"
+ },
+ "SZ": {
+ "name": "ẞwaasiland"
+ },
+ "SY": {
+ "name": "Sürije"
+ },
+ "SR": {
+ "name": "Sürinamm"
+ },
+ "TJ": {
+ "name": "Tadschikistahn"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tongga"
+ },
+ "TG": {
+ "name": "Toojo"
+ },
+ "TT": {
+ "name": "Trinidad un Tobääjo"
+ },
+ "TA": {
+ "name": "Tristan da Cunja"
+ },
+ "TN": {
+ "name": "Tuneesije"
+ },
+ "TM": {
+ "name": "Turkmenistahn"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Ujanda"
+ },
+ "HU": {
+ "name": "Unjann"
+ },
+ "UY": {
+ "name": "Urrujwai"
+ },
+ "UZ": {
+ "name": "Ußbeekistahn"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinschte Arrabesche Emmirate"
+ },
+ "VN": {
+ "name": "Vijätnamm"
+ },
+ "WF": {
+ "name": "Wallis un Futuna"
+ },
+ "EH": {
+ "name": "Wäß-Sahara"
+ },
+ "BY": {
+ "name": "Wießrußland"
+ },
+ "EA": {
+ "name": "Ze’uta un Meliija"
+ },
+ "KN": {
+ "name": "Zint Kitts un Nevis"
+ },
+ "SX": {
+ "name": "Zint Maarten"
+ },
+ "PM": {
+ "name": "Zint Pjäär un Mikelong"
+ },
+ "ST": {
+ "name": "Zint Tommeh un Printschipe"
+ },
+ "VC": {
+ "name": "Zint Vinzänz un de Jrenadines-Enselle"
+ },
+ "CY": {
+ "name": "Züppere"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ky.json b/library/intl/resources/country/ky.json
new file mode 100644
index 000000000..4944f4888
--- /dev/null
+++ b/library/intl/resources/country/ky.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралия"
+ },
+ "AT": {
+ "name": "Австрия"
+ },
+ "AZ": {
+ "name": "Азербайжан"
+ },
+ "UM": {
+ "name": "АКШнын сырткы аралдары"
+ },
+ "AX": {
+ "name": "Аланд аралдары"
+ },
+ "AL": {
+ "name": "Албания"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "US": {
+ "name": "Америка Кошмо Штаттары"
+ },
+ "AS": {
+ "name": "Америка Самоасы"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AI": {
+ "name": "Ангуила"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктика"
+ },
+ "AG": {
+ "name": "Антигуа жана Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AM": {
+ "name": "Армения"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AC": {
+ "name": "Ассеншин аралы"
+ },
+ "AF": {
+ "name": "Афганистан"
+ },
+ "BS": {
+ "name": "Багам аралдары"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "EH": {
+ "name": "Батыш Сахара"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "Беларусь"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "Бельгия"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд аралдары"
+ },
+ "AE": {
+ "name": "Бириккен Араб Эмираттары"
+ },
+ "BG": {
+ "name": "Болгария"
+ },
+ "BO": {
+ "name": "Боливия"
+ },
+ "CF": {
+ "name": "Борбордук Африка Республикасы"
+ },
+ "BA": {
+ "name": "Босния жана Герцеговина"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразилия"
+ },
+ "IO": {
+ "name": "Британиянын Индия океанындагы аймагы"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "Венгрия"
+ },
+ "VE": {
+ "name": "Венесуэла"
+ },
+ "VI": {
+ "name": "Виргин аралдары (АКШ)"
+ },
+ "VG": {
+ "name": "Виргин аралдары (Британия)"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "Гамбия"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GF": {
+ "name": "Гвиана (Франция)"
+ },
+ "GN": {
+ "name": "Гвинея"
+ },
+ "GW": {
+ "name": "Гвинея-Бисау"
+ },
+ "DE": {
+ "name": "Германия"
+ },
+ "GG": {
+ "name": "Гернси"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "HK": {
+ "name": "Гонконг Кытай ААА"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландия"
+ },
+ "GR": {
+ "name": "Греция"
+ },
+ "GE": {
+ "name": "Грузия"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "Дания"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего Гарсия"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминика Республикасы"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "NZ": {
+ "name": "Жаӊы Зеландия"
+ },
+ "NC": {
+ "name": "Жаӊы Каледония"
+ },
+ "JE": {
+ "name": "Жерси"
+ },
+ "ZM": {
+ "name": "Замбия"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "IN": {
+ "name": "Индия"
+ },
+ "ID": {
+ "name": "Индонезия"
+ },
+ "JO": {
+ "name": "Иордания"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирландия"
+ },
+ "IS": {
+ "name": "Исландия"
+ },
+ "ES": {
+ "name": "Испания"
+ },
+ "IT": {
+ "name": "Италия"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "KZ": {
+ "name": "Казакстан"
+ },
+ "KY": {
+ "name": "Кайман Аралдары"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар аралдары"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "BQ": {
+ "name": "Кариб Нидерланддары"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кения"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос (Килиӊ) аралдары"
+ },
+ "CO": {
+ "name": "Колумбия"
+ },
+ "KM": {
+ "name": "Коморос"
+ },
+ "CG": {
+ "name": "Конго-Браззавил"
+ },
+ "CD": {
+ "name": "Конго-Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CX": {
+ "name": "Крисмас аралы"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CK": {
+ "name": "Кук аралдары"
+ },
+ "KG": {
+ "name": "Кыргызстан"
+ },
+ "CN": {
+ "name": "Кытай"
+ },
+ "CW": {
+ "name": "Кюрасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвия"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либерия"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "Ливия"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "Мавритания"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макау Кытай ААА"
+ },
+ "MK": {
+ "name": "Македония"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайзия"
+ },
+ "MV": {
+ "name": "Малдив аралдары"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалл аралдары"
+ },
+ "MX": {
+ "name": "Мексика"
+ },
+ "FM": {
+ "name": "Микронезия"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголия"
+ },
+ "MS": {
+ "name": "Монсеррат"
+ },
+ "MM": {
+ "name": "Мьянма (Бирма)"
+ },
+ "IM": {
+ "name": "Мэн аралы"
+ },
+ "NA": {
+ "name": "Намибия"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерия"
+ },
+ "NL": {
+ "name": "Нидерланддар"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуэ"
+ },
+ "NO": {
+ "name": "Норвегия"
+ },
+ "NF": {
+ "name": "Норфолк аралы"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "UZ": {
+ "name": "Өзбекстан"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестина аймактары"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Жаңы-Гвинея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкэрн аралдары"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "Португалия"
+ },
+ "PR": {
+ "name": "Пуэрто-Рико"
+ },
+ "RE": {
+ "name": "Реюнион"
+ },
+ "RU": {
+ "name": "Россия"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румыния"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе жана Принсипи"
+ },
+ "SA": {
+ "name": "Сауд Арабиясы"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард жана Жан Майен"
+ },
+ "SC": {
+ "name": "Сейшелдер"
+ },
+ "PM": {
+ "name": "Сен-Пьер жана Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "BL": {
+ "name": "Сент Бартелеми"
+ },
+ "VC": {
+ "name": "Сент-Винсент жана Гренадиналар"
+ },
+ "KN": {
+ "name": "Сент-Китс жана Невис"
+ },
+ "LC": {
+ "name": "Сент-Люсия"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "RS": {
+ "name": "Сербия"
+ },
+ "EA": {
+ "name": "Сеута жана Мелилла"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Маартен"
+ },
+ "SY": {
+ "name": "Сирия"
+ },
+ "SK": {
+ "name": "Словакия"
+ },
+ "SI": {
+ "name": "Словения"
+ },
+ "SB": {
+ "name": "Соломон аралдары"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринаме"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TJ": {
+ "name": "Тажикстан"
+ },
+ "TH": {
+ "name": "Таиланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "Танзания"
+ },
+ "TL": {
+ "name": "Тимор-Лесте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад жана Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Кунья"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "KP": {
+ "name": "Түндүк Корея"
+ },
+ "MP": {
+ "name": "Түндүк Мариана аралдары"
+ },
+ "TR": {
+ "name": "Түркия"
+ },
+ "TM": {
+ "name": "Түркмөнстан"
+ },
+ "TC": {
+ "name": "Түркс жана Кайкос аралдары"
+ },
+ "ZA": {
+ "name": "Түштүк Африка Республикасы"
+ },
+ "GS": {
+ "name": "Түштүк Жоржия жана Түштүк Сэндвич аралдары"
+ },
+ "KR": {
+ "name": "Түштүк Корея"
+ },
+ "SS": {
+ "name": "Түштүк Судан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "GB": {
+ "name": "Улуу Британия"
+ },
+ "WF": {
+ "name": "Уоллис жана Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фарер аралдары"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филлипин"
+ },
+ "FI": {
+ "name": "Финляндия"
+ },
+ "FK": {
+ "name": "Фолклэнд аралдары"
+ },
+ "FR": {
+ "name": "Франция"
+ },
+ "TF": {
+ "name": "Франциянын Түштүктөгү аймактары"
+ },
+ "PF": {
+ "name": "Француз Полинезиясы"
+ },
+ "HR": {
+ "name": "Хорватия"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черногория"
+ },
+ "CZ": {
+ "name": "Чехия"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "Швейцария"
+ },
+ "SE": {
+ "name": "Швеция"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "SH": {
+ "name": "Ыйык Елена"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваториалдык Гвинея"
+ },
+ "SV": {
+ "name": "Эл Салвадор"
+ },
+ "ER": {
+ "name": "Эритрея"
+ },
+ "EE": {
+ "name": "Эстония"
+ },
+ "ET": {
+ "name": "Эфиопия"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "Япония"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lag.json b/library/intl/resources/country/lag.json
new file mode 100644
index 000000000..ad82eee91
--- /dev/null
+++ b/library/intl/resources/country/lag.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afɨrɨka ya Saame"
+ },
+ "AF": {
+ "name": "Afuganisitáani"
+ },
+ "IS": {
+ "name": "Aisiláandi"
+ },
+ "AR": {
+ "name": "Ajentíina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DZ": {
+ "name": "Alijéria"
+ },
+ "AL": {
+ "name": "Alubánia"
+ },
+ "US": {
+ "name": "Amerɨka"
+ },
+ "AD": {
+ "name": "Andóra"
+ },
+ "AO": {
+ "name": "Angóola"
+ },
+ "AI": {
+ "name": "Anguíila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigúua na Baribúuda"
+ },
+ "AM": {
+ "name": "Ariménia"
+ },
+ "AW": {
+ "name": "Arúuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Ausiteréelia"
+ },
+ "AT": {
+ "name": "Áusitiria"
+ },
+ "IE": {
+ "name": "Ayaláandi"
+ },
+ "AZ": {
+ "name": "Azabajáani"
+ },
+ "BB": {
+ "name": "Babadóosi"
+ },
+ "BS": {
+ "name": "Baháama"
+ },
+ "BH": {
+ "name": "Baharéeni"
+ },
+ "BD": {
+ "name": "Bangaladéeshi"
+ },
+ "BY": {
+ "name": "Belarúusi"
+ },
+ "BZ": {
+ "name": "Belíise"
+ },
+ "BJ": {
+ "name": "Beníini"
+ },
+ "BM": {
+ "name": "Berimúuda"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósinia"
+ },
+ "BW": {
+ "name": "Botiswáana"
+ },
+ "BR": {
+ "name": "Brasíili"
+ },
+ "MG": {
+ "name": "Bukíini"
+ },
+ "BF": {
+ "name": "Bukinafáaso"
+ },
+ "BG": {
+ "name": "Buligaría"
+ },
+ "BN": {
+ "name": "Burunéei"
+ },
+ "BI": {
+ "name": "Burúundi"
+ },
+ "BT": {
+ "name": "Butáani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Cháadi"
+ },
+ "CL": {
+ "name": "Chíile"
+ },
+ "CN": {
+ "name": "Chíina"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domínɨka"
+ },
+ "SV": {
+ "name": "Elisalivado"
+ },
+ "ER": {
+ "name": "Eriterea"
+ },
+ "EE": {
+ "name": "Estonía"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fíiji"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gáana"
+ },
+ "GA": {
+ "name": "Gabóoni"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "GN": {
+ "name": "Gíine"
+ },
+ "GW": {
+ "name": "Gíine Bisáau"
+ },
+ "GQ": {
+ "name": "Gíine Ikwéeta"
+ },
+ "GD": {
+ "name": "Girenáada"
+ },
+ "GL": {
+ "name": "Giriniláandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyáana"
+ },
+ "GP": {
+ "name": "Gwadelúupe"
+ },
+ "GU": {
+ "name": "Gwani"
+ },
+ "GT": {
+ "name": "Gwatemáala"
+ },
+ "GF": {
+ "name": "Gwiyáana yʉ Ʉfaráansa"
+ },
+ "HT": {
+ "name": "Haíiti"
+ },
+ "ES": {
+ "name": "Hisipánia"
+ },
+ "HN": {
+ "name": "Honduráasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungária"
+ },
+ "EC": {
+ "name": "Íkwado"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IQ": {
+ "name": "Iráaki"
+ },
+ "IL": {
+ "name": "Isiraéeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "CI": {
+ "name": "Ivori Kositi"
+ },
+ "IO": {
+ "name": "Ɨsɨ yʉ Ʉɨngeréesa irivii ra Híindi"
+ },
+ "JM": {
+ "name": "Jamáika"
+ },
+ "CZ": {
+ "name": "Jamuhúuri ya Chéeki"
+ },
+ "DO": {
+ "name": "Jamuhúuri ya Dominɨka"
+ },
+ "CD": {
+ "name": "Jamuhúuri ya Kɨdemokurasía ya Kóongo"
+ },
+ "JP": {
+ "name": "Japáani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jiburálita"
+ },
+ "DJ": {
+ "name": "Jibúuti"
+ },
+ "JO": {
+ "name": "Jódani"
+ },
+ "GE": {
+ "name": "Jójia"
+ },
+ "CF": {
+ "name": "Juhúuri ya Afɨrɨka ya katɨ katɨ"
+ },
+ "NC": {
+ "name": "Kaledónia Ifya"
+ },
+ "KH": {
+ "name": "Kambódia"
+ },
+ "CM": {
+ "name": "Kamerúuni"
+ },
+ "CA": {
+ "name": "Kánada"
+ },
+ "QA": {
+ "name": "Katáari"
+ },
+ "KZ": {
+ "name": "Kazakasitáani"
+ },
+ "KE": {
+ "name": "Kéenya"
+ },
+ "CV": {
+ "name": "Kepuvéede"
+ },
+ "KI": {
+ "name": "Kiribáati"
+ },
+ "KG": {
+ "name": "Kirigisitáani"
+ },
+ "NF": {
+ "name": "Kisíiwa cha Nofifóoki"
+ },
+ "CO": {
+ "name": "Kolómbia"
+ },
+ "KM": {
+ "name": "Komóoro"
+ },
+ "CG": {
+ "name": "Kóongo"
+ },
+ "KR": {
+ "name": "Koréa ya Saame"
+ },
+ "KP": {
+ "name": "Koréa yʉ ʉtʉrʉko"
+ },
+ "HR": {
+ "name": "Koréshia"
+ },
+ "CR": {
+ "name": "Kósita Rɨ́ɨka"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CY": {
+ "name": "Kupuróosi"
+ },
+ "KW": {
+ "name": "Kʉwáiti"
+ },
+ "CU": {
+ "name": "Kyúuba"
+ },
+ "LA": {
+ "name": "Laóosi"
+ },
+ "LU": {
+ "name": "Lasembáagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanóoni"
+ },
+ "LS": {
+ "name": "Lesóoto"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LR": {
+ "name": "Liibéria"
+ },
+ "LI": {
+ "name": "Lishentéeni"
+ },
+ "LT": {
+ "name": "Lisuánia"
+ },
+ "ML": {
+ "name": "Máali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Maláawi"
+ },
+ "MY": {
+ "name": "Maleísia"
+ },
+ "MT": {
+ "name": "Málita"
+ },
+ "MQ": {
+ "name": "Maritiníiki"
+ },
+ "MK": {
+ "name": "Masedónia"
+ },
+ "YT": {
+ "name": "Mayóote"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "MM": {
+ "name": "Miáama"
+ },
+ "FM": {
+ "name": "Mikironésia"
+ },
+ "EG": {
+ "name": "Mísiri"
+ },
+ "MV": {
+ "name": "Modíivu"
+ },
+ "MD": {
+ "name": "Molidóova"
+ },
+ "MC": {
+ "name": "Monáako"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteráati"
+ },
+ "MU": {
+ "name": "Moríisi"
+ },
+ "MR": {
+ "name": "Moritánia"
+ },
+ "MA": {
+ "name": "Moróoko"
+ },
+ "MZ": {
+ "name": "Musumbíiji"
+ },
+ "SH": {
+ "name": "Mʉtakatíifu Heléena"
+ },
+ "KN": {
+ "name": "Mʉtakatíifu kitisi na Nevíisi"
+ },
+ "LC": {
+ "name": "Mʉtakatíifu Lusíia"
+ },
+ "PM": {
+ "name": "Mʉtakatíifu Peéteri na Mɨkaéeli"
+ },
+ "VC": {
+ "name": "Mʉtakatíifu Viséenti na Gernadíini"
+ },
+ "PS": {
+ "name": "Mweemberera wa kʉmweeri wa Gáaza"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Naúuru"
+ },
+ "NP": {
+ "name": "Nepáali"
+ },
+ "NE": {
+ "name": "Níija"
+ },
+ "NG": {
+ "name": "Niijéria"
+ },
+ "NI": {
+ "name": "Nikarágʉa"
+ },
+ "NU": {
+ "name": "Niúue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nyuzílandi"
+ },
+ "OM": {
+ "name": "Ómani"
+ },
+ "PK": {
+ "name": "Pakisitáani"
+ },
+ "PW": {
+ "name": "Paláau"
+ },
+ "PA": {
+ "name": "Panáama"
+ },
+ "PG": {
+ "name": "Papúua"
+ },
+ "PY": {
+ "name": "Paraguáai"
+ },
+ "PN": {
+ "name": "Patikaírini"
+ },
+ "PE": {
+ "name": "Péeru"
+ },
+ "PL": {
+ "name": "Pólandi"
+ },
+ "PF": {
+ "name": "Polinésia yʉ Ʉfaráansa"
+ },
+ "PR": {
+ "name": "Pwetorɨ́ɨko"
+ },
+ "RE": {
+ "name": "Reyunióoni"
+ },
+ "RO": {
+ "name": "Romaníia"
+ },
+ "RW": {
+ "name": "Rwáanda"
+ },
+ "SM": {
+ "name": "Samaríino"
+ },
+ "ZM": {
+ "name": "Sámbia"
+ },
+ "WS": {
+ "name": "Samóoa"
+ },
+ "AS": {
+ "name": "Samóoa ya Amerɨ́ka"
+ },
+ "ST": {
+ "name": "Sao Tóome na Pirinsipe"
+ },
+ "SA": {
+ "name": "Saudíia Arabíia"
+ },
+ "SN": {
+ "name": "Senegáali"
+ },
+ "SL": {
+ "name": "Seraleóoni"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelishéeli"
+ },
+ "ZW": {
+ "name": "Simbáabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "LK": {
+ "name": "Siriláanka"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudáani"
+ },
+ "SK": {
+ "name": "Sulováakia"
+ },
+ "SI": {
+ "name": "Sulovénia"
+ },
+ "SR": {
+ "name": "Surináamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Taansanía"
+ },
+ "TH": {
+ "name": "Táilandi"
+ },
+ "TW": {
+ "name": "Taiwáani"
+ },
+ "TJ": {
+ "name": "Tajikisitáani"
+ },
+ "TL": {
+ "name": "Timóori yi Itʉʉmba"
+ },
+ "TT": {
+ "name": "Tiriníida ya Tobáago"
+ },
+ "TK": {
+ "name": "Tokeláau"
+ },
+ "TG": {
+ "name": "Tóogo"
+ },
+ "TO": {
+ "name": "Tóonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TV": {
+ "name": "Tuváalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "FI": {
+ "name": "Ufíini"
+ },
+ "PH": {
+ "name": "Ufilipíino"
+ },
+ "GR": {
+ "name": "Ugiríki"
+ },
+ "UY": {
+ "name": "Uruguáai"
+ },
+ "RU": {
+ "name": "Urúusi"
+ },
+ "UZ": {
+ "name": "Usibekisitáani"
+ },
+ "SE": {
+ "name": "Uswíidi"
+ },
+ "CH": {
+ "name": "Uswíisi"
+ },
+ "TM": {
+ "name": "Uturukimenisitáani"
+ },
+ "TR": {
+ "name": "Uturúuki"
+ },
+ "IR": {
+ "name": "Ʉajéemi"
+ },
+ "BE": {
+ "name": "Ʉbeligíiji"
+ },
+ "FR": {
+ "name": "Ʉfaráansa"
+ },
+ "UG": {
+ "name": "Ʉgáanda"
+ },
+ "ET": {
+ "name": "Ʉhabéeshi"
+ },
+ "NL": {
+ "name": "Ʉholáanzi"
+ },
+ "GB": {
+ "name": "Ʉɨngeréesa"
+ },
+ "DE": {
+ "name": "Ʉjerumáani"
+ },
+ "UA": {
+ "name": "Ʉkɨréeni"
+ },
+ "PT": {
+ "name": "Ʉréeno"
+ },
+ "SZ": {
+ "name": "Ʉswáazi"
+ },
+ "AE": {
+ "name": "Ʉtemi wa Kɨaráabu"
+ },
+ "VU": {
+ "name": "Vanuáatu"
+ },
+ "VA": {
+ "name": "Vatikáani"
+ },
+ "VE": {
+ "name": "Venezuéela"
+ },
+ "VN": {
+ "name": "Vietináamu"
+ },
+ "FK": {
+ "name": "Visíiwa vya Fakulandi"
+ },
+ "KY": {
+ "name": "Visíiwa vya Kayimani"
+ },
+ "CK": {
+ "name": "Visíiwa vya Kúuku"
+ },
+ "MH": {
+ "name": "Visíiwa vya Marisháali"
+ },
+ "SB": {
+ "name": "Visíiwa vya Solomóoni"
+ },
+ "TC": {
+ "name": "Visíiwa vya Turíiki na Kaíiko"
+ },
+ "VI": {
+ "name": "Visíiwa vya Vigíini vya Amerɨ́ka"
+ },
+ "VG": {
+ "name": "Visíiwa vya Vigíini vya Ʉɨngeréesa"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "WF": {
+ "name": "Walíisi na Futúuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yémeni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lb.json b/library/intl/resources/country/lb.json
new file mode 100644
index 000000000..b073e04f6
--- /dev/null
+++ b/library/intl/resources/country/lb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålandinselen"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "VI": {
+ "name": "Amerikanesch Joffereninselen"
+ },
+ "UM": {
+ "name": "Amerikanesch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanesch-Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Belsch"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien an Herzegowina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britesch Joffereninselen"
+ },
+ "IO": {
+ "name": "Britescht Territorium am Indeschen Ozean"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Chrëschtdagsinsel"
+ },
+ "CK": {
+ "name": "Cookinselen"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DE": {
+ "name": "Däitschland"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanesch Republik"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "AT": {
+ "name": "Éisträich"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebeeküst"
+ },
+ "GQ": {
+ "name": "Equatorialguinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopien"
+ },
+ "FK": {
+ "name": "Falklandinselen"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankräich"
+ },
+ "TF": {
+ "name": "Franséisch Süd- an Antarktisgebidder"
+ },
+ "PF": {
+ "name": "Franséisch-Polynesien"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griicheland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GB": {
+ "name": "Groussbritannien"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayane"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninselen"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaresch Inselen"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibescht Holland"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinselen"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LU": {
+ "name": "Lëtzebuerg"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinselen"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MD": {
+ "name": "Moldawien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NC": {
+ "name": "Neikaledonien"
+ },
+ "NZ": {
+ "name": "Neiséiland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "MP": {
+ "name": "Nërdlech Marianen"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Osttimor"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinensesch Autonomiegebidder"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neiguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinnen"
+ },
+ "PN": {
+ "name": "Pitcairninselen"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salomonen"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "CH": {
+ "name": "Schwäiz"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "HK": {
+ "name": "Spezialverwaltungszon Hong Kong"
+ },
+ "MO": {
+ "name": "Spezialverwaltungszon Macau"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts an Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent an d’Grenadinnen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien an déi Südlech Sandwichinselen"
+ },
+ "KR": {
+ "name": "Südkorea"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TR": {
+ "name": "Tierkei"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad an Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechien"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- a Caicosinselen"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrain"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereenegt Arabesch Emirater"
+ },
+ "US": {
+ "name": "Vereenegt Staate vun Amerika"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Wäissrussland"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanesch Republik"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lg.json b/library/intl/resources/country/lg.json
new file mode 100644
index 000000000..d2cf82dc0
--- /dev/null
+++ b/library/intl/resources/country/lg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganisitani"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Alibaniya"
+ },
+ "DZ": {
+ "name": "Aligerya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa ne Barabuda"
+ },
+ "AM": {
+ "name": "Arameniya"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitureliya"
+ },
+ "AT": {
+ "name": "Awusituriya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisirandi"
+ },
+ "AZ": {
+ "name": "Azerebayijaani"
+ },
+ "BH": {
+ "name": "Baareeni"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BD": {
+ "name": "Bangaladesi"
+ },
+ "BB": {
+ "name": "Barabadosi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Beremuda"
+ },
+ "SB": {
+ "name": "Bizanga by’eSolomooni"
+ },
+ "CV": {
+ "name": "Bizinga by’e Kepu Veredi"
+ },
+ "IO": {
+ "name": "Bizinga by’eCago"
+ },
+ "FK": {
+ "name": "Bizinga by’eFalikalandi"
+ },
+ "KM": {
+ "name": "Bizinga by’eKomoro"
+ },
+ "MV": {
+ "name": "Bizinga by’eMalidive"
+ },
+ "TC": {
+ "name": "Bizinga by’eTaaka ne Kayikosi"
+ },
+ "PH": {
+ "name": "Bizinga bya Firipino"
+ },
+ "CK": {
+ "name": "Bizinga bya Kkuki"
+ },
+ "MH": {
+ "name": "Bizinga bya Mariso"
+ },
+ "MP": {
+ "name": "Bizinga bya Mariyana eby’omumambuka"
+ },
+ "VI": {
+ "name": "Bizinga bya Virigini eby’Amerika"
+ },
+ "KY": {
+ "name": "Bizinga ebya Kayimaani"
+ },
+ "VG": {
+ "name": "Bizinga ebya Virigini ebitwalibwa Bungereza"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BA": {
+ "name": "Boziniya Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "DE": {
+ "name": "Budaaki"
+ },
+ "FR": {
+ "name": "Bufalansa"
+ },
+ "GR": {
+ "name": "Bugereeki\/Buyonaani"
+ },
+ "BG": {
+ "name": "Bulugariya"
+ },
+ "GB": {
+ "name": "Bungereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Burunayi"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaani"
+ },
+ "IN": {
+ "name": "Buyindi"
+ },
+ "TD": {
+ "name": "Caadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayina"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaaka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "El salivado"
+ },
+ "AE": {
+ "name": "Emireeti"
+ },
+ "ER": {
+ "name": "Eritureya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Esyopya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GQ": {
+ "name": "Gayana ey’oku ekweta"
+ },
+ "GI": {
+ "name": "Giburalita"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisawu"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Gurenelandi"
+ },
+ "GF": {
+ "name": "Guyana enfalansa"
+ },
+ "GP": {
+ "name": "Gwadalupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GE": {
+ "name": "Gyogya"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hundurasi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jjibuti"
+ },
+ "NC": {
+ "name": "Kaledonya mupya"
+ },
+ "KH": {
+ "name": "Kambodya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KZ": {
+ "name": "Kazakisitaani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaani"
+ },
+ "NF": {
+ "name": "Kizinga ky’eNorofoko"
+ },
+ "CO": {
+ "name": "Kolombya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo - Zayire"
+ },
+ "KP": {
+ "name": "Koreya ey’omumambuka"
+ },
+ "KR": {
+ "name": "Koreya ey’omumaserengeta"
+ },
+ "CR": {
+ "name": "Kosita Rika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kote Divwa"
+ },
+ "HR": {
+ "name": "Kurowesya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "RU": {
+ "name": "Lasa"
+ },
+ "LV": {
+ "name": "Lativya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoso"
+ },
+ "RE": {
+ "name": "Leyunyoni"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Licitensitayini"
+ },
+ "CF": {
+ "name": "Lipubulika eya Senturafiriki"
+ },
+ "CZ": {
+ "name": "Lipubulika ya Ceeka"
+ },
+ "DO": {
+ "name": "Lipubulika ya Dominika"
+ },
+ "LT": {
+ "name": "Lisuwenya"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "LU": {
+ "name": "Lukisembaaga"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniiki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "MU": {
+ "name": "Mawulisyasi"
+ },
+ "MR": {
+ "name": "Mawulitenya"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikuronezya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MD": {
+ "name": "Molodova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteseraati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NG": {
+ "name": "Nayijerya"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NE": {
+ "name": "Nije"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NZ": {
+ "name": "Niyuziirandi"
+ },
+ "NO": {
+ "name": "Nowe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitayini"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Nyugini"
+ },
+ "PY": {
+ "name": "Paragwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeeni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya enfalansa"
+ },
+ "PR": {
+ "name": "Potoriko"
+ },
+ "PT": {
+ "name": "Potugaali"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa omumerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sanitome ne Purincipe"
+ },
+ "SA": {
+ "name": "Sawudarebya - Buwarabu"
+ },
+ "ZA": {
+ "name": "Sawusafirika"
+ },
+ "SN": {
+ "name": "Senegaalo"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kitisi ne Nevisi"
+ },
+ "LC": {
+ "name": "Senti Luciya"
+ },
+ "PM": {
+ "name": "Senti Piyere ne Mikeloni"
+ },
+ "VC": {
+ "name": "Senti Vinsenti ne Gurendadiini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesere"
+ },
+ "SG": {
+ "name": "Singapowa"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "CY": {
+ "name": "Sipuriya"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovakya"
+ },
+ "SI": {
+ "name": "Sirovenya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Switizirandi"
+ },
+ "TJ": {
+ "name": "Tajikisitaani"
+ },
+ "TM": {
+ "name": "Takimenesitaani"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayirandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timowa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TR": {
+ "name": "Ttake"
+ },
+ "TN": {
+ "name": "Tunisya"
+ },
+ "TT": {
+ "name": "Turindaadi ne Tobago"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanawuwatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venzwera"
+ },
+ "VN": {
+ "name": "Vyetinaamu"
+ },
+ "WF": {
+ "name": "Walisi ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "UY": {
+ "name": "Wurugwayi"
+ },
+ "UZ": {
+ "name": "Wuzibekisitaani"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ID": {
+ "name": "Yindonezya"
+ },
+ "IQ": {
+ "name": "Yiraaka"
+ },
+ "IR": {
+ "name": "Yiraani"
+ },
+ "IL": {
+ "name": "Yisirayeri"
+ },
+ "IT": {
+ "name": "Yitale"
+ },
+ "JO": {
+ "name": "Yorodani"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukurayine"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ln.json b/library/intl/resources/country/ln.json
new file mode 100644
index 000000000..4918e72a4
--- /dev/null
+++ b/library/intl/resources/country/ln.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afiganisitá"
+ },
+ "ZA": {
+ "name": "Afríka ya Súdi"
+ },
+ "SA": {
+ "name": "Alabi Sawuditɛ"
+ },
+ "DE": {
+ "name": "Alemani"
+ },
+ "AL": {
+ "name": "Alibani"
+ },
+ "DZ": {
+ "name": "Alizɛri"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "AM": {
+ "name": "Amɛni"
+ },
+ "AD": {
+ "name": "Andorɛ"
+ },
+ "GB": {
+ "name": "Angɛlɛtɛ́lɛ"
+ },
+ "AI": {
+ "name": "Angiyɛ"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antiga mpé Barbuda"
+ },
+ "AR": {
+ "name": "Arizantinɛ"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "AZ": {
+ "name": "Azɛlɛbaizá"
+ },
+ "BS": {
+ "name": "Bahamasɛ"
+ },
+ "BH": {
+ "name": "Bahrɛnɛ"
+ },
+ "BB": {
+ "name": "Barɛbadɛ"
+ },
+ "BE": {
+ "name": "Beleziki"
+ },
+ "BZ": {
+ "name": "Belizɛ"
+ },
+ "BJ": {
+ "name": "Benɛ"
+ },
+ "BD": {
+ "name": "Bengalidɛsi"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BG": {
+ "name": "Biligari"
+ },
+ "MM": {
+ "name": "Birmanie"
+ },
+ "IC": {
+ "name": "Bisanga bya Kanári"
+ },
+ "CV": {
+ "name": "Bisanga bya Kapevɛrɛ"
+ },
+ "KY": {
+ "name": "Bisanga bya Kayíma"
+ },
+ "CK": {
+ "name": "Bisanga bya Kookɛ"
+ },
+ "FK": {
+ "name": "Bisanga bya Maluni"
+ },
+ "MP": {
+ "name": "Bisanga bya Marianɛ ya nɔ́rdi"
+ },
+ "MH": {
+ "name": "Bisanga bya Marishalɛ"
+ },
+ "TC": {
+ "name": "Bisanga bya Turki mpé Kaiko"
+ },
+ "VI": {
+ "name": "Bisanga bya Vierzi ya Ameriki"
+ },
+ "VG": {
+ "name": "Bisanga bya Vierzi ya Angɛlɛtɛ́lɛ"
+ },
+ "AX": {
+ "name": "Bisanga Ɛland"
+ },
+ "CC": {
+ "name": "Bisanga Kokos"
+ },
+ "SB": {
+ "name": "Bisanga Solomɔ"
+ },
+ "FO": {
+ "name": "Bisanga ya Fɛróa"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosini mpé Hezegovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brezílɛ"
+ },
+ "BN": {
+ "name": "Brineyi"
+ },
+ "BF": {
+ "name": "Bukina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butáni"
+ },
+ "BY": {
+ "name": "Byelorisi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danɛmarike"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domínike"
+ },
+ "DJ": {
+ "name": "Dzibuti"
+ },
+ "EC": {
+ "name": "Ekwatɛ́lɛ"
+ },
+ "ER": {
+ "name": "Elitelɛ"
+ },
+ "NF": {
+ "name": "Esanga Norfokɛ"
+ },
+ "IM": {
+ "name": "Esanga ya Man"
+ },
+ "CX": {
+ "name": "Esenga ya Mbótama"
+ },
+ "AC": {
+ "name": "Esenga ya Mbuta o likoló"
+ },
+ "ES": {
+ "name": "Esipanye"
+ },
+ "EE": {
+ "name": "Esitoni"
+ },
+ "ET": {
+ "name": "Etsíopi"
+ },
+ "EG": {
+ "name": "Ezípite"
+ },
+ "FR": {
+ "name": "Falánsɛ"
+ },
+ "FJ": {
+ "name": "Fidzi"
+ },
+ "FI": {
+ "name": "Filandɛ"
+ },
+ "PH": {
+ "name": "Filipinɛ"
+ },
+ "GA": {
+ "name": "Gabɔ"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GR": {
+ "name": "Geleki"
+ },
+ "GD": {
+ "name": "Gelenadɛ"
+ },
+ "GN": {
+ "name": "Ginɛ"
+ },
+ "GW": {
+ "name": "Ginɛbisau"
+ },
+ "GQ": {
+ "name": "Ginɛ́kwatɛ́lɛ"
+ },
+ "GY": {
+ "name": "Giyane"
+ },
+ "GF": {
+ "name": "Giyanɛ ya Falánsɛ"
+ },
+ "GL": {
+ "name": "Gowelande"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GP": {
+ "name": "Gwadɛlupɛ"
+ },
+ "GU": {
+ "name": "Gwamɛ"
+ },
+ "GT": {
+ "name": "Gwatémala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "UA": {
+ "name": "Ikrɛni"
+ },
+ "GS": {
+ "name": "Îles de Géorgie du Sud et Sandwich du Sud"
+ },
+ "IN": {
+ "name": "Índɛ"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IR": {
+ "name": "Irâ"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IE": {
+ "name": "Irelandɛ"
+ },
+ "UY": {
+ "name": "Irigwei"
+ },
+ "IS": {
+ "name": "Isilandɛ"
+ },
+ "IL": {
+ "name": "Isirayelɛ"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kaledoni ya sika"
+ },
+ "KH": {
+ "name": "Kambodza"
+ },
+ "CM": {
+ "name": "Kamɛrune"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakisitá"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiba"
+ },
+ "KG": {
+ "name": "Kigizisitá"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komorɛ"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Korɛ ya nɔ́rdi"
+ },
+ "KR": {
+ "name": "Korɛ ya súdi"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotídivualɛ"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "HR": {
+ "name": "Krowasi"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "RE": {
+ "name": "Lenyo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "AE": {
+ "name": "Lɛmila alabo"
+ },
+ "LB": {
+ "name": "Libá"
+ },
+ "LR": {
+ "name": "Libériya"
+ },
+ "LY": {
+ "name": "Libí"
+ },
+ "LU": {
+ "name": "Likisambulu"
+ },
+ "LI": {
+ "name": "Lishɛteni"
+ },
+ "LT": {
+ "name": "Litwani"
+ },
+ "IO": {
+ "name": "Mabelé ya Angɛlɛtɛ́lɛ na mbú ya Indiya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MV": {
+ "name": "Madívɛ"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "Malitɛ"
+ },
+ "MA": {
+ "name": "Marokɛ"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedwanɛ"
+ },
+ "YT": {
+ "name": "Mayotɛ"
+ },
+ "MX": {
+ "name": "Meksike"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolí"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MU": {
+ "name": "Morisɛ"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MS": {
+ "name": "Mɔsera"
+ },
+ "MZ": {
+ "name": "Mozambíki"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepálɛ"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NG": {
+ "name": "Nizerya"
+ },
+ "NE": {
+ "name": "Nizɛrɛ"
+ },
+ "NO": {
+ "name": "Norivezɛ"
+ },
+ "NU": {
+ "name": "Nyué"
+ },
+ "NL": {
+ "name": "Olandɛ"
+ },
+ "OM": {
+ "name": "Ománɛ"
+ },
+ "HN": {
+ "name": "Ondurasɛ"
+ },
+ "HU": {
+ "name": "Ongili"
+ },
+ "AU": {
+ "name": "Ositáli"
+ },
+ "AT": {
+ "name": "Otilisi"
+ },
+ "PK": {
+ "name": "Pakisitá"
+ },
+ "PY": {
+ "name": "Palagwei"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palɛsine"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwazi Ginɛ ya sika"
+ },
+ "PE": {
+ "name": "Péru"
+ },
+ "PN": {
+ "name": "Pikairni"
+ },
+ "PF": {
+ "name": "Polinezi ya Falánsɛ"
+ },
+ "PL": {
+ "name": "Poloni"
+ },
+ "PR": {
+ "name": "Pɔtoriko"
+ },
+ "PT": {
+ "name": "Putúlugɛsi"
+ },
+ "CD": {
+ "name": "Repibiki demokratiki ya Kongó"
+ },
+ "CZ": {
+ "name": "Repibiki Tsekɛ"
+ },
+ "CF": {
+ "name": "Repibiki ya Afríka ya Káti"
+ },
+ "DO": {
+ "name": "Repibiki ya Domínikɛ"
+ },
+ "RU": {
+ "name": "Risí"
+ },
+ "RO": {
+ "name": "Romani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara ya Limbɛ"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Ameriki"
+ },
+ "SH": {
+ "name": "Sántu eleni"
+ },
+ "KN": {
+ "name": "Sántu krístofe mpé Nevɛ̀s"
+ },
+ "LC": {
+ "name": "Sántu lisi"
+ },
+ "SM": {
+ "name": "Sántu Marinɛ"
+ },
+ "PM": {
+ "name": "Sántu pététo mpé Mikelɔ"
+ },
+ "VC": {
+ "name": "Sántu vesá mpé Gelenadinɛ"
+ },
+ "ST": {
+ "name": "Sao Tomé mpé Presipɛ"
+ },
+ "SV": {
+ "name": "Savadɔrɛ"
+ },
+ "SN": {
+ "name": "Senegalɛ"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Sɛshɛlɛ"
+ },
+ "SL": {
+ "name": "Siera Leonɛ"
+ },
+ "CL": {
+ "name": "Síli"
+ },
+ "SK": {
+ "name": "Silovaki"
+ },
+ "SI": {
+ "name": "Siloveni"
+ },
+ "CN": {
+ "name": "Sinɛ"
+ },
+ "SG": {
+ "name": "Singapurɛ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sípɛlɛ"
+ },
+ "SY": {
+ "name": "Sirí"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudá"
+ },
+ "SS": {
+ "name": "Sudani ya Sidi"
+ },
+ "SR": {
+ "name": "Surinamɛ"
+ },
+ "SJ": {
+ "name": "Svalbard mpé Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swédɛ"
+ },
+ "CH": {
+ "name": "Swisɛ"
+ },
+ "TH": {
+ "name": "Tailandɛ"
+ },
+ "TW": {
+ "name": "Taiwanin"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TJ": {
+ "name": "Tazikisitá"
+ },
+ "TF": {
+ "name": "Terres australes et antarctiques françaises"
+ },
+ "TM": {
+ "name": "Tikɛménisitá"
+ },
+ "TR": {
+ "name": "Tiliki"
+ },
+ "TL": {
+ "name": "Timorɛ ya Moniɛlɛ"
+ },
+ "TT": {
+ "name": "Tinidadɛ mpé Tobago"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsádi"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UZ": {
+ "name": "Uzibɛkisitá"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatiká"
+ },
+ "VE": {
+ "name": "Venézuela"
+ },
+ "VN": {
+ "name": "Viyetinamɛ"
+ },
+ "WF": {
+ "name": "Walisɛ mpé Futuna"
+ },
+ "YE": {
+ "name": "Yemɛnɛ"
+ },
+ "JM": {
+ "name": "Zamaiki"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "JP": {
+ "name": "Zapɔ"
+ },
+ "NZ": {
+ "name": "Zelandɛ ya sika"
+ },
+ "EA": {
+ "name": "Zewta mpé Melílla"
+ },
+ "GI": {
+ "name": "Zibatalɛ"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "JO": {
+ "name": "Zɔdani"
+ },
+ "GE": {
+ "name": "Zorzi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lo.json b/library/intl/resources/country/lo.json
new file mode 100644
index 000000000..e0dc93bb9
--- /dev/null
+++ b/library/intl/resources/country/lo.json
@@ -0,0 +1,761 @@
+{
+ "GR": {
+ "name": "ກຣີຊ"
+ },
+ "GL": {
+ "name": "ກຣີນແລນ"
+ },
+ "GU": {
+ "name": "ກວມ"
+ },
+ "GY": {
+ "name": "ກາຍຢານາ"
+ },
+ "QA": {
+ "name": "ກາຕາ"
+ },
+ "GH": {
+ "name": "ການາ"
+ },
+ "GA": {
+ "name": "ກາບອນ"
+ },
+ "KH": {
+ "name": "ກຳປູເຈຍ"
+ },
+ "GN": {
+ "name": "ກິນີ"
+ },
+ "GW": {
+ "name": "ກິນີ-ບິສເຊົາ"
+ },
+ "GP": {
+ "name": "ກົວດາລູບ"
+ },
+ "GT": {
+ "name": "ກົວເທມາລາ"
+ },
+ "GD": {
+ "name": "ເກຣເນດາ"
+ },
+ "CX": {
+ "name": "ເກາະຄຣິສມາດ"
+ },
+ "NF": {
+ "name": "ເກາະນໍໂຟກ"
+ },
+ "AC": {
+ "name": "ເກາະອາເຊນຊັນ"
+ },
+ "GG": {
+ "name": "ເກີນຊີ"
+ },
+ "KR": {
+ "name": "ເກົາຫລີໃຕ້"
+ },
+ "KP": {
+ "name": "ເກົາຫລີເໜືອ"
+ },
+ "TF": {
+ "name": "ເຂດແດນທາງໃຕ້ຂອຝຮັ່ງ"
+ },
+ "IO": {
+ "name": "ເຂດແດນບຣິທິສອິນດຽນໂອຊຽນ"
+ },
+ "CD": {
+ "name": "ຄອງໂກ - ຄິນຊາຊາ"
+ },
+ "CG": {
+ "name": "ຄອງໂກ - ບຣາຊາວິວ"
+ },
+ "KZ": {
+ "name": "ຄາຊັກສະຖານ"
+ },
+ "CM": {
+ "name": "ຄາເມຣູນ"
+ },
+ "BQ": {
+ "name": "ຄາຣິບບຽນ ເນເທີແລນ"
+ },
+ "KI": {
+ "name": "ຄິຣິບາທິ"
+ },
+ "CU": {
+ "name": "ຄິວບາ"
+ },
+ "KG": {
+ "name": "ຄີກິສຖານ"
+ },
+ "CW": {
+ "name": "ຄູຣາຊາວ"
+ },
+ "KW": {
+ "name": "ຄູເວດ"
+ },
+ "KE": {
+ "name": "ເຄນຢາ"
+ },
+ "CV": {
+ "name": "ເຄບ ເວີດ"
+ },
+ "KY": {
+ "name": "ເຄແມນ ໄອແລນ"
+ },
+ "CA": {
+ "name": "ແຄນາດາ"
+ },
+ "CR": {
+ "name": "ໂຄສຕາ ຣິກາ"
+ },
+ "XK": {
+ "name": "ໂຄໂຊໂວ"
+ },
+ "CI": {
+ "name": "ໂຄຕີ ວົວ"
+ },
+ "KM": {
+ "name": "ໂຄໂມໂຣສ"
+ },
+ "HR": {
+ "name": "ໂຄຣເອເທຍ"
+ },
+ "CO": {
+ "name": "ໂຄລົມເບຍ"
+ },
+ "GE": {
+ "name": "ຈໍເຈຍ"
+ },
+ "JO": {
+ "name": "ຈໍແດນ"
+ },
+ "JM": {
+ "name": "ຈາໄມຄາ"
+ },
+ "GI": {
+ "name": "ຈິບບຣອນທາ"
+ },
+ "DJ": {
+ "name": "ຈິບູຕິ"
+ },
+ "CN": {
+ "name": "ຈີນ"
+ },
+ "JE": {
+ "name": "ເຈີຊີ"
+ },
+ "ES": {
+ "name": "ສະເປນ"
+ },
+ "SK": {
+ "name": "ສະໂລວາເກຍ"
+ },
+ "SI": {
+ "name": "ສະໂລເວເນຍ"
+ },
+ "SZ": {
+ "name": "ສະວາຊິແລນ"
+ },
+ "SJ": {
+ "name": "ສະວາບາ ແລະ ແຢນ ມາເຢນ"
+ },
+ "CH": {
+ "name": "ສະວິດເຊີແລນ"
+ },
+ "SE": {
+ "name": "ສະວີເດັນ"
+ },
+ "US": {
+ "name": "ສະຫະລັດ"
+ },
+ "AE": {
+ "name": "ສະຫະລັດອາຣັບເອມິເຣດ"
+ },
+ "GB": {
+ "name": "ສະຫະລາດຊະອະນາຈັກ"
+ },
+ "DO": {
+ "name": "ສາທາລະນະລັດ ໂດມິນິກັນ"
+ },
+ "GM": {
+ "name": "ສາທາລະນະລັດແກມເບຍ"
+ },
+ "CZ": {
+ "name": "ສາທາລະນະລັດເຊກ"
+ },
+ "CF": {
+ "name": "ສາທາລະນະລັດອາຟຣິກາກາງ"
+ },
+ "SG": {
+ "name": "ສິງກະໂປ"
+ },
+ "LK": {
+ "name": "ສີລັງກາ"
+ },
+ "TD": {
+ "name": "ຊາດ"
+ },
+ "WS": {
+ "name": "ຊາມົວ"
+ },
+ "SA": {
+ "name": "ຊາອຸດິ ອາຣາເບຍ"
+ },
+ "EH": {
+ "name": "ຊາຮາຣາຕາເວັນຕົກ"
+ },
+ "SX": {
+ "name": "ຊິນ ມາເທັນ"
+ },
+ "ZW": {
+ "name": "ຊິມບັບເວ"
+ },
+ "CL": {
+ "name": "ຊິລີ"
+ },
+ "SY": {
+ "name": "ຊີເຣຍ"
+ },
+ "SD": {
+ "name": "ຊູດານ"
+ },
+ "SS": {
+ "name": "ຊູດານໃຕ້"
+ },
+ "SR": {
+ "name": "ຊູຣິນາມ"
+ },
+ "SC": {
+ "name": "ເຊເຊວເລສ"
+ },
+ "SL": {
+ "name": "ເຊຍຣາ ລີໂອນ"
+ },
+ "KN": {
+ "name": "ເຊນ ຄິດ ແລະ ເນວິສ"
+ },
+ "BL": {
+ "name": "ເຊນ ບາເທເລມີ"
+ },
+ "PM": {
+ "name": "ເຊນ ປີແອ ມິເກວລອນ"
+ },
+ "MF": {
+ "name": "ເຊນ ມາທິນ"
+ },
+ "LC": {
+ "name": "ເຊນ ລູເຊຍ"
+ },
+ "VC": {
+ "name": "ເຊນ ວິນເຊນ & ເກຣເນດິນ"
+ },
+ "SH": {
+ "name": "ເຊນ ເຮເລນາ"
+ },
+ "SN": {
+ "name": "ເຊນີໂກລ"
+ },
+ "EA": {
+ "name": "ເຊວຕາ ແລະເມລິນລາ"
+ },
+ "RS": {
+ "name": "ເຊີເບຍ"
+ },
+ "ST": {
+ "name": "ເຊົາທູເມ ແລະ ພຣິນຊິບ"
+ },
+ "SM": {
+ "name": "ແຊນ ມາຣິໂນ"
+ },
+ "ZM": {
+ "name": "ແຊມເບຍ"
+ },
+ "SO": {
+ "name": "ໂຊມາເລຍ"
+ },
+ "CY": {
+ "name": "ໄຊປຣັສ"
+ },
+ "JP": {
+ "name": "ຍີ່ປຸ່ນ"
+ },
+ "PS": {
+ "name": "ດິນແດນ ປາເລສຕິນຽນ"
+ },
+ "DG": {
+ "name": "ດິເອໂກ ກາເຊຍ"
+ },
+ "DK": {
+ "name": "ເດນມາກ"
+ },
+ "DM": {
+ "name": "ໂດມີນິຄາ"
+ },
+ "TN": {
+ "name": "ຕູນິເຊຍ"
+ },
+ "TV": {
+ "name": "ຕູວາລູ"
+ },
+ "TK": {
+ "name": "ໂຕເກເລົາ"
+ },
+ "TG": {
+ "name": "ໂຕໂກ"
+ },
+ "TW": {
+ "name": "ໄຕ້ຫວັນ"
+ },
+ "TA": {
+ "name": "ທຣິສຕັນ ດາ ກັນຮາ"
+ },
+ "TT": {
+ "name": "ທຣິນິແດດ ແລະ ໂທແບໂກ"
+ },
+ "TO": {
+ "name": "ທອງກາ"
+ },
+ "TJ": {
+ "name": "ທາຈິກິສຖານ"
+ },
+ "TZ": {
+ "name": "ທານຊາເນຍ"
+ },
+ "TL": {
+ "name": "ທິມໍ-ເລສເຕ"
+ },
+ "TM": {
+ "name": "ເທີກເມນິສຖານ"
+ },
+ "TR": {
+ "name": "ເທີຄີ"
+ },
+ "TH": {
+ "name": "ໄທ"
+ },
+ "NO": {
+ "name": "ນໍເວ"
+ },
+ "VA": {
+ "name": "ນະຄອນ ວາຕິກັນ"
+ },
+ "NA": {
+ "name": "ນາມີເບຍ"
+ },
+ "NR": {
+ "name": "ນາອູຣູ"
+ },
+ "NI": {
+ "name": "ນິກຄາຣາກົວ"
+ },
+ "NE": {
+ "name": "ນິເຈີ"
+ },
+ "NC": {
+ "name": "ນິວ ຄາເລໂດເນຍ"
+ },
+ "NZ": {
+ "name": "ນິວຊີແລນ"
+ },
+ "NU": {
+ "name": "ນີອູເອ"
+ },
+ "NL": {
+ "name": "ເນເທີແລນ"
+ },
+ "NP": {
+ "name": "ເນປານ"
+ },
+ "NG": {
+ "name": "ໄນຈີເຣຍ"
+ },
+ "BR": {
+ "name": "ບຣາຊິວ"
+ },
+ "BN": {
+ "name": "ບຣູໄນ"
+ },
+ "BA": {
+ "name": "ບອດສະເນຍ ແລະ ແຮສໂກວີນາ"
+ },
+ "BW": {
+ "name": "ບອດສະວານາ"
+ },
+ "BD": {
+ "name": "ບັງກະລາເທດ"
+ },
+ "BG": {
+ "name": "ບັງກາເຣຍ"
+ },
+ "BB": {
+ "name": "ບາບາໂດສ"
+ },
+ "BH": {
+ "name": "ບາເຣນ"
+ },
+ "BS": {
+ "name": "ບາຮາມາສ"
+ },
+ "BI": {
+ "name": "ບູຣຸນດິ"
+ },
+ "BJ": {
+ "name": "ເບນິນ"
+ },
+ "BZ": {
+ "name": "ເບລີຊ"
+ },
+ "BY": {
+ "name": "ເບວບາຣຸສ"
+ },
+ "BE": {
+ "name": "ເບວຢຽມ"
+ },
+ "BF": {
+ "name": "ເບີກິນາ ຟາໂຊ"
+ },
+ "BM": {
+ "name": "ເບີມິວດາ"
+ },
+ "BO": {
+ "name": "ໂບລິເວຍ"
+ },
+ "PK": {
+ "name": "ປາກິສຖານ"
+ },
+ "PG": {
+ "name": "ປາປົວນິວກີນີ"
+ },
+ "PW": {
+ "name": "ປາເລົາ"
+ },
+ "PE": {
+ "name": "ເປຣູ"
+ },
+ "PL": {
+ "name": "ໂປແລນ"
+ },
+ "FR": {
+ "name": "ຝຣັ່ງ"
+ },
+ "PT": {
+ "name": "ພອລທູໂກ"
+ },
+ "PA": {
+ "name": "ພານາມາ"
+ },
+ "PY": {
+ "name": "ພາຣາກວຍ"
+ },
+ "BT": {
+ "name": "ພູຖານ"
+ },
+ "PR": {
+ "name": "ເພືອໂຕ ຣິໂກ"
+ },
+ "FJ": {
+ "name": "ຟິຈິ"
+ },
+ "FI": {
+ "name": "ຟິນແລນ"
+ },
+ "PH": {
+ "name": "ຟິລິບປິນ"
+ },
+ "GF": {
+ "name": "ເຟຣນຊ໌ ກຸຍອານາ"
+ },
+ "PF": {
+ "name": "ເຟຣນຊ໌ ໂພລີນີເຊຍ"
+ },
+ "MN": {
+ "name": "ມອງໂກເລຍ"
+ },
+ "MS": {
+ "name": "ມອນເຊີຣາດ"
+ },
+ "ME": {
+ "name": "ມອນເຕເນໂກຣ"
+ },
+ "MT": {
+ "name": "ມອນທາ"
+ },
+ "MV": {
+ "name": "ມັນດິຟ"
+ },
+ "MO": {
+ "name": "ມາເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນ"
+ },
+ "MG": {
+ "name": "ມາດາກາສກາ"
+ },
+ "MQ": {
+ "name": "ມາຕິນີກ"
+ },
+ "YT": {
+ "name": "ມາຢັອດ"
+ },
+ "MW": {
+ "name": "ມາລາວີ"
+ },
+ "ML": {
+ "name": "ມາລິ"
+ },
+ "MY": {
+ "name": "ມາເລເຊຍ"
+ },
+ "MU": {
+ "name": "ມົວຣິຊຽສ"
+ },
+ "MR": {
+ "name": "ມົວຣິເທເນຍ"
+ },
+ "MM": {
+ "name": "ມຽນມາ (ເບີມາ)"
+ },
+ "MX": {
+ "name": "ເມັກຊິໂກ"
+ },
+ "MK": {
+ "name": "ແມຊິໂດເນຍ"
+ },
+ "MZ": {
+ "name": "ໂມແຊມບິກ"
+ },
+ "MD": {
+ "name": "ໂມນໂດວາ"
+ },
+ "MC": {
+ "name": "ໂມນາໂຄ"
+ },
+ "MA": {
+ "name": "ໂມຣັອກໂຄ"
+ },
+ "FM": {
+ "name": "ໄມໂຄຣນີເຊຍ"
+ },
+ "UA": {
+ "name": "ຢູເຄຣນ"
+ },
+ "DE": {
+ "name": "ເຢຍລະມັນ"
+ },
+ "YE": {
+ "name": "ເຢເມນ"
+ },
+ "RW": {
+ "name": "ຣວັນດາ"
+ },
+ "RU": {
+ "name": "ຣັດເຊຍ"
+ },
+ "RE": {
+ "name": "ເຣອູນິຍົງ"
+ },
+ "RO": {
+ "name": "ໂຣແມເນຍ"
+ },
+ "LV": {
+ "name": "ລັດເວຍ"
+ },
+ "LA": {
+ "name": "ລາວ"
+ },
+ "LI": {
+ "name": "ລິດເທນສະຕາຍ"
+ },
+ "LT": {
+ "name": "ລິທົວເນຍ"
+ },
+ "LY": {
+ "name": "ລິເບຍ"
+ },
+ "LR": {
+ "name": "ລິເບີເຣຍ"
+ },
+ "LU": {
+ "name": "ລຸກແຊມເບີກ"
+ },
+ "LS": {
+ "name": "ເລໂຊໂທ"
+ },
+ "LB": {
+ "name": "ເລບານອນ"
+ },
+ "VU": {
+ "name": "ວານົວຕູ"
+ },
+ "WF": {
+ "name": "ວາລິສ ແລະ ຟຸຕູນາ"
+ },
+ "VE": {
+ "name": "ເວເນຊູເອລາ"
+ },
+ "TC": {
+ "name": "ໝູ່ເກາະ ເທີກ ແລະ ໄຄໂຄສ"
+ },
+ "VG": {
+ "name": "ໝູ່ເກາະ ບຣິທິຊ ເວີຈິນ"
+ },
+ "VI": {
+ "name": "ໝູ່ເກາະ ຢູເອສ ເວີຈິນ"
+ },
+ "CC": {
+ "name": "ຫມູ່ເກາະໂກໂກສ"
+ },
+ "IC": {
+ "name": "ໝູ່ເກາະຄານາຣີ"
+ },
+ "CK": {
+ "name": "ໝູ່ເກາະຄຸກ"
+ },
+ "GS": {
+ "name": "ໝູ່ເກາະຈໍເຈຍ & ເຊົາ ແຊນວິດ"
+ },
+ "SB": {
+ "name": "ຫມູ່ເກາະໂຊໂລມອນ"
+ },
+ "PN": {
+ "name": "ໝູ່ເກາະພິດແຄນ"
+ },
+ "FK": {
+ "name": "ຫມູ່ເກາະຟອກແລນ"
+ },
+ "FO": {
+ "name": "ຫມູ່ເກາະແຟໂຣ"
+ },
+ "MH": {
+ "name": "ຫມູ່ເກາະມາແຊວ"
+ },
+ "MP": {
+ "name": "ຫມູ່ເກາະມາແຊວຕອນເຫນືອ"
+ },
+ "AX": {
+ "name": "ຫມູ່ເກາະໂອລັນ"
+ },
+ "UM": {
+ "name": "ໝູ່ເກາະຮອບນອກຂອງສະຫະລັດຯ"
+ },
+ "VN": {
+ "name": "ຫວຽດນາມ"
+ },
+ "AW": {
+ "name": "ອໍຣູບາ"
+ },
+ "AU": {
+ "name": "ອອສເຕຣເລຍ"
+ },
+ "AT": {
+ "name": "ອອສເທຣຍ"
+ },
+ "AO": {
+ "name": "ອັນໂກລາ"
+ },
+ "AD": {
+ "name": "ອັນດໍຣາ"
+ },
+ "DZ": {
+ "name": "ອັລຈິເຣຍ"
+ },
+ "AR": {
+ "name": "ອາເຈນທິນາ"
+ },
+ "AZ": {
+ "name": "ອາເຊີໄບຈານ"
+ },
+ "AG": {
+ "name": "ອາທິກົວ ບາບູດາ"
+ },
+ "AF": {
+ "name": "ອາຟການິສຖານ"
+ },
+ "ZA": {
+ "name": "ອາຟະລິກາໃຕ້"
+ },
+ "AM": {
+ "name": "ອາເມເນຍ"
+ },
+ "AS": {
+ "name": "ອາເມຣິກາ ຊາມົວ"
+ },
+ "IL": {
+ "name": "ອິສຣາເອວ"
+ },
+ "IT": {
+ "name": "ອິຕາລີ"
+ },
+ "IN": {
+ "name": "ອິນເດຍ"
+ },
+ "ID": {
+ "name": "ອິນໂດເນເຊຍ"
+ },
+ "GQ": {
+ "name": "ອີຄົວໂຕຣຽວ ກີນີ"
+ },
+ "ET": {
+ "name": "ອີທິໂອເປຍ"
+ },
+ "EG": {
+ "name": "ອີຢິບ"
+ },
+ "IQ": {
+ "name": "ອີຣັກ"
+ },
+ "IR": {
+ "name": "ອີຣ່ານ"
+ },
+ "UZ": {
+ "name": "ອຸສເບກິສຖານ"
+ },
+ "UG": {
+ "name": "ອູການດາ"
+ },
+ "UY": {
+ "name": "ອູຣຸກວຍ"
+ },
+ "EC": {
+ "name": "ເອກກວາດໍ"
+ },
+ "EE": {
+ "name": "ເອສໂຕເນຍ"
+ },
+ "ER": {
+ "name": "ເອຣິເທຣຍ"
+ },
+ "SV": {
+ "name": "ເອວ ຊໍວາດໍ"
+ },
+ "IM": {
+ "name": "ເອວ ອອບ ແມນ"
+ },
+ "AI": {
+ "name": "ແອນກຸຍລາ"
+ },
+ "AQ": {
+ "name": "ແອນຕາດຕິກາ"
+ },
+ "AL": {
+ "name": "ແອວເບເນຍ"
+ },
+ "OM": {
+ "name": "ໂອມານ"
+ },
+ "IS": {
+ "name": "ໄອສແລນ"
+ },
+ "IE": {
+ "name": "ໄອຣ໌ແລນ"
+ },
+ "HK": {
+ "name": "ຮອງກົງ ເຂດປົກຄອງພິເສດ ຈີນ"
+ },
+ "HN": {
+ "name": "ຮອນດູຣັສ"
+ },
+ "HU": {
+ "name": "ຮັງກາຣີ"
+ },
+ "HT": {
+ "name": "ໄຮຕິ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lt.json b/library/intl/resources/country/lt.json
new file mode 100644
index 000000000..dd17a5ab3
--- /dev/null
+++ b/library/intl/resources/country/lt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistanas"
+ },
+ "IE": {
+ "name": "Airija"
+ },
+ "AX": {
+ "name": "Alandų Salos"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžyras"
+ },
+ "AS": {
+ "name": "Amerikos Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angilija"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktida"
+ },
+ "AG": {
+ "name": "Antigva ir Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armėnija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbaidžanas"
+ },
+ "BS": {
+ "name": "Bahamos"
+ },
+ "BH": {
+ "name": "Bahreinas"
+ },
+ "BY": {
+ "name": "Baltarusija"
+ },
+ "BD": {
+ "name": "Bangladešas"
+ },
+ "BB": {
+ "name": "Barbadosas"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belizas"
+ },
+ "BJ": {
+ "name": "Beninas"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "GW": {
+ "name": "Bisau Gvinėja"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosnija ir Hercegovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brazilija"
+ },
+ "BN": {
+ "name": "Brunėjus"
+ },
+ "BG": {
+ "name": "Bulgarija"
+ },
+ "BF": {
+ "name": "Burkina Fasas"
+ },
+ "BI": {
+ "name": "Burundis"
+ },
+ "BT": {
+ "name": "Butanas"
+ },
+ "CF": {
+ "name": "Centrinės Afrikos Respublika"
+ },
+ "TD": {
+ "name": "Čadas"
+ },
+ "CZ": {
+ "name": "Čekija"
+ },
+ "CL": {
+ "name": "Čilė"
+ },
+ "AC": {
+ "name": "Dangun Žengimo sala"
+ },
+ "DK": {
+ "name": "Danija"
+ },
+ "GB": {
+ "name": "Didžioji Britanija"
+ },
+ "VG": {
+ "name": "Didžiosios Britanijos Mergelių Salos"
+ },
+ "DG": {
+ "name": "Diego Garsija"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikos Respublika"
+ },
+ "CI": {
+ "name": "Dramblio Kaulo Krantas"
+ },
+ "JE": {
+ "name": "Džersis"
+ },
+ "DJ": {
+ "name": "Džibutis"
+ },
+ "EG": {
+ "name": "Egiptas"
+ },
+ "EC": {
+ "name": "Ekvadoras"
+ },
+ "ER": {
+ "name": "Eritrėja"
+ },
+ "EE": {
+ "name": "Estija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farerų Salos"
+ },
+ "FJ": {
+ "name": "Fidžis"
+ },
+ "PH": {
+ "name": "Filipinai"
+ },
+ "FK": {
+ "name": "Folklando Salos"
+ },
+ "GA": {
+ "name": "Gabonas"
+ },
+ "GY": {
+ "name": "Gajana"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernsis"
+ },
+ "GI": {
+ "name": "Gibraltaras"
+ },
+ "GR": {
+ "name": "Graikija"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guamas"
+ },
+ "GP": {
+ "name": "Gvadelupa"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvinėja"
+ },
+ "HT": {
+ "name": "Haitis"
+ },
+ "HN": {
+ "name": "Hondūras"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "IO": {
+ "name": "Indijos Vandenyno Britų Sritis"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "HK": {
+ "name": "Ypatingasis Administracinis Kinijos Regionas Honkongas"
+ },
+ "MO": {
+ "name": "Ypatingasis Administracinis Kinijos Regionas Makao"
+ },
+ "IQ": {
+ "name": "Irakas"
+ },
+ "IR": {
+ "name": "Iranas"
+ },
+ "IS": {
+ "name": "Islandija"
+ },
+ "ES": {
+ "name": "Ispanija"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izraelis"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonija"
+ },
+ "YE": {
+ "name": "Jemenas"
+ },
+ "JO": {
+ "name": "Jordanija"
+ },
+ "US": {
+ "name": "Jungtinės Valstijos"
+ },
+ "AE": {
+ "name": "Jungtiniai Arabų Emyratai"
+ },
+ "UM": {
+ "name": "Jungtinių Valstijų Mažosios Tolimosios Salos"
+ },
+ "VI": {
+ "name": "Jungtinių Valstijų Mergelių Salos"
+ },
+ "ME": {
+ "name": "Juodkalnija"
+ },
+ "KY": {
+ "name": "Kaimanų Salos"
+ },
+ "CX": {
+ "name": "Kalėdų Sala"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerūnas"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarų salos"
+ },
+ "BQ": {
+ "name": "Karibų Nyderlandai"
+ },
+ "QA": {
+ "name": "Kataras"
+ },
+ "KZ": {
+ "name": "Kazachstanas"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kinija"
+ },
+ "CY": {
+ "name": "Kipras"
+ },
+ "KG": {
+ "name": "Kirgizija"
+ },
+ "KI": {
+ "name": "Kiribatis"
+ },
+ "CW": {
+ "name": "Kiurasao"
+ },
+ "CC": {
+ "name": "Kokosų (Kilingo) Salos"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorai"
+ },
+ "CG": {
+ "name": "Kongas-Brazavilis"
+ },
+ "CD": {
+ "name": "Kongas-Kinšasa"
+ },
+ "XK": {
+ "name": "Kosovas"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroatija"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuko Salos"
+ },
+ "KW": {
+ "name": "Kuveitas"
+ },
+ "LA": {
+ "name": "Laosas"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "PL": {
+ "name": "Lenkija"
+ },
+ "LS": {
+ "name": "Lesotas"
+ },
+ "LB": {
+ "name": "Libanas"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lichtenšteinas"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "LU": {
+ "name": "Liuksemburgas"
+ },
+ "MG": {
+ "name": "Madagaskaras"
+ },
+ "YT": {
+ "name": "Majotas"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MY": {
+ "name": "Malaizija"
+ },
+ "MW": {
+ "name": "Malavis"
+ },
+ "MV": {
+ "name": "Maldyvai"
+ },
+ "ML": {
+ "name": "Malis"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Marianos Šiaurinės Salos"
+ },
+ "MA": {
+ "name": "Marokas"
+ },
+ "MH": {
+ "name": "Maršalo Salos"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Meno Sala"
+ },
+ "MM": {
+ "name": "Mianmaras (Birma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monakas"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montseratas"
+ },
+ "MZ": {
+ "name": "Mozambikas"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NC": {
+ "name": "Naujoji Kaledonija"
+ },
+ "NZ": {
+ "name": "Naujoji Zelandija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepalas"
+ },
+ "NL": {
+ "name": "Nyderlandai"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NE": {
+ "name": "Nigeris"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niujė"
+ },
+ "NF": {
+ "name": "Norfolko sala"
+ },
+ "NO": {
+ "name": "Norvegija"
+ },
+ "OM": {
+ "name": "Omanas"
+ },
+ "PK": {
+ "name": "Pakistanas"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinos teritorija"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Naujoji Gvinėja"
+ },
+ "PY": {
+ "name": "Paragvajus"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "ZA": {
+ "name": "Pietų Afrika"
+ },
+ "GS": {
+ "name": "Pietų Džordžija ir Pietų Sandvičo salos"
+ },
+ "KR": {
+ "name": "Pietų Korėja"
+ },
+ "SS": {
+ "name": "Pietų Sudanas"
+ },
+ "PN": {
+ "name": "Pitkernas"
+ },
+ "PT": {
+ "name": "Portugalija"
+ },
+ "FR": {
+ "name": "Prancūzija"
+ },
+ "GF": {
+ "name": "Prancūzijos Gviana"
+ },
+ "TF": {
+ "name": "Prancūzijos Pietų sritys"
+ },
+ "PF": {
+ "name": "Prancūzų Polinezija"
+ },
+ "PR": {
+ "name": "Puerto Rikas"
+ },
+ "GQ": {
+ "name": "Pusiaujo Gvinėja"
+ },
+ "RE": {
+ "name": "Reunjonas"
+ },
+ "TL": {
+ "name": "Rytų Timoras"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SB": {
+ "name": "Saliamono Salos"
+ },
+ "SV": {
+ "name": "Salvadoras"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marinas"
+ },
+ "ST": {
+ "name": "San Tomė ir Prinsipė"
+ },
+ "SA": {
+ "name": "Saudo Arabija"
+ },
+ "SC": {
+ "name": "Seišeliai"
+ },
+ "BL": {
+ "name": "Sen Bartelemi"
+ },
+ "MF": {
+ "name": "Sen Martenas"
+ },
+ "PM": {
+ "name": "Sen Pjeras ir Mikelonas"
+ },
+ "SN": {
+ "name": "Senegalas"
+ },
+ "KN": {
+ "name": "Sent Kitsas ir Nevis"
+ },
+ "RS": {
+ "name": "Serbija"
+ },
+ "EA": {
+ "name": "Seuta ir Melila"
+ },
+ "SL": {
+ "name": "Siera Leonė"
+ },
+ "SG": {
+ "name": "Singapūras"
+ },
+ "SX": {
+ "name": "Sint Martenas"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "SK": {
+ "name": "Slovakija"
+ },
+ "SI": {
+ "name": "Slovėnija"
+ },
+ "SO": {
+ "name": "Somalis"
+ },
+ "SD": {
+ "name": "Sudanas"
+ },
+ "FI": {
+ "name": "Suomija"
+ },
+ "SR": {
+ "name": "Surinamas"
+ },
+ "SJ": {
+ "name": "Svalbardas ir Janas Majenas"
+ },
+ "SZ": {
+ "name": "Svazilandas"
+ },
+ "KP": {
+ "name": "Šiaurės Korėja"
+ },
+ "LK": {
+ "name": "Šri Lanka"
+ },
+ "SH": {
+ "name": "Šv. Elenos Sala"
+ },
+ "SE": {
+ "name": "Švedija"
+ },
+ "CH": {
+ "name": "Šveicarija"
+ },
+ "VC": {
+ "name": "Šventasis Vincentas ir Grenadinai"
+ },
+ "LC": {
+ "name": "Šventoji Liucija"
+ },
+ "TJ": {
+ "name": "Tadžikija"
+ },
+ "TH": {
+ "name": "Tailandas"
+ },
+ "TW": {
+ "name": "Taivanas"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TC": {
+ "name": "Terkso ir Kaikoso Salos"
+ },
+ "TG": {
+ "name": "Togas"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidadas ir Tobagas"
+ },
+ "TA": {
+ "name": "Tristanas da Kunja"
+ },
+ "TN": {
+ "name": "Tunisas"
+ },
+ "TR": {
+ "name": "Turkija"
+ },
+ "TM": {
+ "name": "Turkmėnistanas"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugvajus"
+ },
+ "UZ": {
+ "name": "Uzbekistanas"
+ },
+ "EH": {
+ "name": "Vakarų Sachara"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikano Miesto Valstybė"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "HU": {
+ "name": "Vengrija"
+ },
+ "VN": {
+ "name": "Vietnamas"
+ },
+ "DE": {
+ "name": "Vokietija"
+ },
+ "WF": {
+ "name": "Volisas ir Futuna"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "ZW": {
+ "name": "Zimbabvė"
+ },
+ "CV": {
+ "name": "Žaliasis Kyšulys"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lu.json b/library/intl/resources/country/lu.json
new file mode 100644
index 000000000..e01eb6f8a
--- /dev/null
+++ b/library/intl/resources/country/lu.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika ya Súdi"
+ },
+ "AF": {
+ "name": "Afuganisita"
+ },
+ "AZ": {
+ "name": "Ajelbayidja"
+ },
+ "SA": {
+ "name": "Alabu Nsawudi"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DE": {
+ "name": "Alemanu"
+ },
+ "AR": {
+ "name": "Alijantine"
+ },
+ "DZ": {
+ "name": "Alijeri"
+ },
+ "AL": {
+ "name": "Alubani"
+ },
+ "AM": {
+ "name": "Ameni"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "AD": {
+ "name": "Andore"
+ },
+ "GB": {
+ "name": "Angeletele"
+ },
+ "AI": {
+ "name": "Angiye"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga ne Barbuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "BS": {
+ "name": "Bahamase"
+ },
+ "BH": {
+ "name": "Bahrene"
+ },
+ "BB": {
+ "name": "Barebade"
+ },
+ "BE": {
+ "name": "Belejiki"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BD": {
+ "name": "Benguladeshi"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BG": {
+ "name": "Biligari"
+ },
+ "BN": {
+ "name": "Brineyi"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "BY": {
+ "name": "Byelorisi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemalaku"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "CF": {
+ "name": "Ditunga dya Afrika wa munkatshi"
+ },
+ "CZ": {
+ "name": "Ditunga dya Tsheka"
+ },
+ "DO": {
+ "name": "Ditunga wa Duminiku"
+ },
+ "CD": {
+ "name": "Ditunga wa Kongu"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Duminiku"
+ },
+ "EC": {
+ "name": "Ekwatele"
+ },
+ "ER": {
+ "name": "Elitele"
+ },
+ "EE": {
+ "name": "Esitoni"
+ },
+ "ET": {
+ "name": "Etshiopi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Filande"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FJ": {
+ "name": "Fuji"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GQ": {
+ "name": "Gine Ekwatele"
+ },
+ "GF": {
+ "name": "Giyane wa Nfalanse"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IR": {
+ "name": "Ira"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IE": {
+ "name": "Irelande"
+ },
+ "UY": {
+ "name": "Irigwei"
+ },
+ "IS": {
+ "name": "Isilande"
+ },
+ "IL": {
+ "name": "Isirayele"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamaiki"
+ },
+ "JP": {
+ "name": "Japu"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibeletale"
+ },
+ "JO": {
+ "name": "Jodani"
+ },
+ "GE": {
+ "name": "Joriji"
+ },
+ "NC": {
+ "name": "Kaledoni wa mumu"
+ },
+ "KH": {
+ "name": "Kambodza"
+ },
+ "CM": {
+ "name": "Kamerune"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakusita"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kigizisita"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoru"
+ },
+ "CG": {
+ "name": "Kongu"
+ },
+ "KP": {
+ "name": "Kore wa muulu"
+ },
+ "KR": {
+ "name": "Kore wa mwinshi"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotedivuale"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "HR": {
+ "name": "Krowasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "AE": {
+ "name": "Lemila alabu"
+ },
+ "RE": {
+ "name": "Lenyo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Liba"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Likisambulu"
+ },
+ "LI": {
+ "name": "Lishuteni"
+ },
+ "LT": {
+ "name": "Litwani"
+ },
+ "CV": {
+ "name": "Lutanda lua Kapevele"
+ },
+ "KY": {
+ "name": "Lutanda lua Kayima"
+ },
+ "CK": {
+ "name": "Lutanda lua Kookɛ"
+ },
+ "FK": {
+ "name": "Lutanda lua Maluni"
+ },
+ "MP": {
+ "name": "Lutanda lua Mariane wa muulu"
+ },
+ "MH": {
+ "name": "Lutanda lua Marishale"
+ },
+ "NF": {
+ "name": "Lutanda lua Norfok"
+ },
+ "SB": {
+ "name": "Lutanda lua Solomu"
+ },
+ "TC": {
+ "name": "Lutanda lua Tuluki ne Kaiko"
+ },
+ "VI": {
+ "name": "Lutanda lua Vierzi wa Ameriki"
+ },
+ "VG": {
+ "name": "Lutanda lua Vierzi wa Angeletele"
+ },
+ "IO": {
+ "name": "Lutanda lwa Angeletele ku mbu wa Indiya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MV": {
+ "name": "Madive"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malite"
+ },
+ "MA": {
+ "name": "Maroke"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedwane"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "BO": {
+ "name": "Mbolivi"
+ },
+ "BA": {
+ "name": "Mbosini ne Hezegovine"
+ },
+ "BW": {
+ "name": "Mbotswana"
+ },
+ "MX": {
+ "name": "Meksike"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "BR": {
+ "name": "Mnulezile"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monaku"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morise"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "PL": {
+ "name": "Mpoloni"
+ },
+ "PR": {
+ "name": "Mpotoriku"
+ },
+ "PT": {
+ "name": "Mputulugeshi"
+ },
+ "MS": {
+ "name": "Musera"
+ },
+ "EG": {
+ "name": "Mushidi"
+ },
+ "MM": {
+ "name": "Myamare"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepálɛ"
+ },
+ "FR": {
+ "name": "Nfalanse"
+ },
+ "PH": {
+ "name": "Nfilipi"
+ },
+ "GA": {
+ "name": "Ngabu"
+ },
+ "GH": {
+ "name": "Ngana"
+ },
+ "GR": {
+ "name": "Ngeleka"
+ },
+ "GD": {
+ "name": "Ngelenade"
+ },
+ "GN": {
+ "name": "Ngine"
+ },
+ "GW": {
+ "name": "Nginebisau"
+ },
+ "GY": {
+ "name": "Ngiyane"
+ },
+ "GL": {
+ "name": "Ngowelande"
+ },
+ "GP": {
+ "name": "Ngwadelupe"
+ },
+ "GU": {
+ "name": "Ngwame"
+ },
+ "GT": {
+ "name": "Ngwatemala"
+ },
+ "NE": {
+ "name": "Nijere"
+ },
+ "NG": {
+ "name": "Nijerya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NO": {
+ "name": "Noriveje"
+ },
+ "ES": {
+ "name": "Nsipani"
+ },
+ "VA": {
+ "name": "Nvatika"
+ },
+ "NU": {
+ "name": "Nyue"
+ },
+ "NL": {
+ "name": "Olandɛ"
+ },
+ "OM": {
+ "name": "Omane"
+ },
+ "HN": {
+ "name": "Ondurase"
+ },
+ "HU": {
+ "name": "Ongili"
+ },
+ "AU": {
+ "name": "Ositali"
+ },
+ "AT": {
+ "name": "Otilisi"
+ },
+ "PK": {
+ "name": "Pakisita"
+ },
+ "PY": {
+ "name": "Palagwei"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palesine"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwazi wa Nginɛ wa mumu"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pikairni"
+ },
+ "PF": {
+ "name": "Polinezi wa Nfalanse"
+ },
+ "RU": {
+ "name": "Risi"
+ },
+ "RO": {
+ "name": "Romani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa wa Ameriki"
+ },
+ "SH": {
+ "name": "Santu eleni"
+ },
+ "KN": {
+ "name": "Santu krístofe ne Neves"
+ },
+ "LC": {
+ "name": "Santu lisi"
+ },
+ "SM": {
+ "name": "Santu Marine"
+ },
+ "PM": {
+ "name": "Santu pététo ne Mikelu"
+ },
+ "VC": {
+ "name": "Santu vesa ne Ngelenadine"
+ },
+ "ST": {
+ "name": "Sao Tome ne Presipɛ"
+ },
+ "SV": {
+ "name": "Savadore"
+ },
+ "SN": {
+ "name": "Senegale"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seshele"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "CN": {
+ "name": "Shine"
+ },
+ "CY": {
+ "name": "Shipele"
+ },
+ "SL": {
+ "name": "Siera Leone"
+ },
+ "SK": {
+ "name": "Silovaki"
+ },
+ "SI": {
+ "name": "Siloveni"
+ },
+ "SG": {
+ "name": "Singapure"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Suda"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SE": {
+ "name": "Suwedi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "CH": {
+ "name": "Swise"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TH": {
+ "name": "Tayilanda"
+ },
+ "TJ": {
+ "name": "Tazikisita"
+ },
+ "TL": {
+ "name": "Timoru wa diboku"
+ },
+ "TT": {
+ "name": "Tinidade ne Tobago"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TG": {
+ "name": "Togu"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tshadi"
+ },
+ "TM": {
+ "name": "Tukemenisita"
+ },
+ "TR": {
+ "name": "Tuluki"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreni"
+ },
+ "UZ": {
+ "name": "Uzibekisita"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viyetiname"
+ },
+ "WF": {
+ "name": "Walise ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemenu"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zelanda wa mumu"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/luo.json b/library/intl/resources/country/luo.json
new file mode 100644
index 000000000..10ab8cebc
--- /dev/null
+++ b/library/intl/resources/country/luo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua gi Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia gi Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "FK": {
+ "name": "Chuia mar Falkland"
+ },
+ "MH": {
+ "name": "Chuia mar Marshall"
+ },
+ "NF": {
+ "name": "Chuia mar Norfolk"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KP": {
+ "name": "Korea Masawa"
+ },
+ "KR": {
+ "name": "Korea Milambo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank gi Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts gi Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre gi Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent gi Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé gi Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad gi Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks gi Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis gi Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/luy.json b/library/intl/resources/country/luy.json
new file mode 100644
index 000000000..9b0be889b
--- /dev/null
+++ b/library/intl/resources/country/luy.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa lya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lv.json b/library/intl/resources/country/lv.json
new file mode 100644
index 000000000..ff93d7605
--- /dev/null
+++ b/library/intl/resources/country/lv.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistāna"
+ },
+ "AL": {
+ "name": "Albānija"
+ },
+ "DZ": {
+ "name": "Alžīrija"
+ },
+ "AS": {
+ "name": "Amerikāņu Samoa"
+ },
+ "US": {
+ "name": "Amerikas Savienotās Valstis"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angilja"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva un Barbuda"
+ },
+ "AE": {
+ "name": "Apvienotie Arābu Emirāti"
+ },
+ "AR": {
+ "name": "Argentīna"
+ },
+ "AM": {
+ "name": "Armēnija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "UM": {
+ "name": "ASV Aizjūras salas"
+ },
+ "VI": {
+ "name": "ASV Virdžīnas"
+ },
+ "AU": {
+ "name": "Austrālija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "TL": {
+ "name": "Austrumtimora"
+ },
+ "AZ": {
+ "name": "Azerbaidžāna"
+ },
+ "BS": {
+ "name": "Bahamu salas"
+ },
+ "BH": {
+ "name": "Bahreina"
+ },
+ "BY": {
+ "name": "Baltkrievija"
+ },
+ "BD": {
+ "name": "Bangladeša"
+ },
+ "BB": {
+ "name": "Barbadosa"
+ },
+ "BZ": {
+ "name": "Beliza"
+ },
+ "BE": {
+ "name": "Beļģija"
+ },
+ "BJ": {
+ "name": "Benina"
+ },
+ "BM": {
+ "name": "Bermudu salas"
+ },
+ "BO": {
+ "name": "Bolīvija"
+ },
+ "BA": {
+ "name": "Bosnija un Hercegovina"
+ },
+ "BW": {
+ "name": "Botsvāna"
+ },
+ "BR": {
+ "name": "Brazīlija"
+ },
+ "VG": {
+ "name": "Britu Virdžīnas"
+ },
+ "BN": {
+ "name": "Bruneja"
+ },
+ "BG": {
+ "name": "Bulgārija"
+ },
+ "BF": {
+ "name": "Burkinafaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butāna"
+ },
+ "CF": {
+ "name": "Centrālāfrikas Republika"
+ },
+ "TD": {
+ "name": "Čada"
+ },
+ "CZ": {
+ "name": "Čehija"
+ },
+ "CL": {
+ "name": "Čīle"
+ },
+ "DK": {
+ "name": "Dānija"
+ },
+ "AC": {
+ "name": "Debesbraukšanas sala"
+ },
+ "ZA": {
+ "name": "Dienvidāfrikas Republika"
+ },
+ "GS": {
+ "name": "Dienviddžordžija un Dienvidsendviču salas"
+ },
+ "KR": {
+ "name": "Dienvidkoreja"
+ },
+ "SS": {
+ "name": "Dienvidsudāna"
+ },
+ "DG": {
+ "name": "Djego Garsijas atols"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikāna"
+ },
+ "JE": {
+ "name": "Džērsija"
+ },
+ "DJ": {
+ "name": "Džibutija"
+ },
+ "EG": {
+ "name": "Ēģipte"
+ },
+ "EC": {
+ "name": "Ekvadora"
+ },
+ "GQ": {
+ "name": "Ekvatoriālā Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Fēru Salas"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipīnas"
+ },
+ "FK": {
+ "name": "Folklenda salas"
+ },
+ "FR": {
+ "name": "Francija"
+ },
+ "TF": {
+ "name": "Francijas Dienvidjūru Zemes"
+ },
+ "GF": {
+ "name": "Franču Gviāna"
+ },
+ "PF": {
+ "name": "Franču Polinēzija"
+ },
+ "GA": {
+ "name": "Gabona"
+ },
+ "GY": {
+ "name": "Gajāna"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gērnsija"
+ },
+ "GI": {
+ "name": "Gibraltārs"
+ },
+ "GD": {
+ "name": "Grenāda"
+ },
+ "GL": {
+ "name": "Grenlande"
+ },
+ "GR": {
+ "name": "Grieķija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guama"
+ },
+ "GP": {
+ "name": "Gvadelupa"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisava"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Hondurasa"
+ },
+ "HR": {
+ "name": "Horvātija"
+ },
+ "EE": {
+ "name": "Igaunija"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "IO": {
+ "name": "Indijas okeāna Britu teritorija"
+ },
+ "ID": {
+ "name": "Indonēzija"
+ },
+ "IQ": {
+ "name": "Irāka"
+ },
+ "IR": {
+ "name": "Irāna"
+ },
+ "IE": {
+ "name": "Īrija"
+ },
+ "IS": {
+ "name": "Īslande"
+ },
+ "IT": {
+ "name": "Itālija"
+ },
+ "IL": {
+ "name": "Izraēla"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japāna"
+ },
+ "NC": {
+ "name": "Jaunkaledonija"
+ },
+ "NZ": {
+ "name": "Jaunzēlande"
+ },
+ "YE": {
+ "name": "Jemena"
+ },
+ "JO": {
+ "name": "Jordānija"
+ },
+ "CV": {
+ "name": "Kaboverde"
+ },
+ "KY": {
+ "name": "Kaimanu salas"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerūna"
+ },
+ "CA": {
+ "name": "Kanāda"
+ },
+ "IC": {
+ "name": "Kanāriju salas"
+ },
+ "QA": {
+ "name": "Katara"
+ },
+ "KZ": {
+ "name": "Kazahstāna"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CY": {
+ "name": "Kipra"
+ },
+ "CW": {
+ "name": "Kirasao"
+ },
+ "KG": {
+ "name": "Kirgizstāna"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosu jeb Kīlinga salas"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komoru salas"
+ },
+ "CG": {
+ "name": "Kongo - Brazavila"
+ },
+ "CD": {
+ "name": "Kongo-Kinšasa"
+ },
+ "XK": {
+ "name": "Kosova"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CI": {
+ "name": "Kotdivuāra"
+ },
+ "RU": {
+ "name": "Krievija"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuka salas"
+ },
+ "KW": {
+ "name": "Kuveita"
+ },
+ "CN": {
+ "name": "Ķīna"
+ },
+ "HK": {
+ "name": "Ķīnas īpašās pārvaldes apgabals Honkonga"
+ },
+ "MO": {
+ "name": "Ķīnas īpašās pārvaldes apgabals Makao"
+ },
+ "LA": {
+ "name": "Laosa"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libāna"
+ },
+ "LR": {
+ "name": "Libērija"
+ },
+ "LY": {
+ "name": "Lībija"
+ },
+ "GB": {
+ "name": "Lielbritānija"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "LI": {
+ "name": "Lihtenšteina"
+ },
+ "LU": {
+ "name": "Luksemburga"
+ },
+ "MG": {
+ "name": "Madagaskara"
+ },
+ "YT": {
+ "name": "Majota"
+ },
+ "MK": {
+ "name": "Maķedonija"
+ },
+ "MY": {
+ "name": "Malaizija"
+ },
+ "MW": {
+ "name": "Malāvija"
+ },
+ "MV": {
+ "name": "Maldīvija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroka"
+ },
+ "MH": {
+ "name": "Māršala salas"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Maurīcija"
+ },
+ "MR": {
+ "name": "Mauritānija"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "ME": {
+ "name": "Melnkalne"
+ },
+ "IM": {
+ "name": "Mena"
+ },
+ "FM": {
+ "name": "Mikronēzija"
+ },
+ "MM": {
+ "name": "Mjanma (Birma)"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrata"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "NA": {
+ "name": "Namībija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepāla"
+ },
+ "NL": {
+ "name": "Nīderlande"
+ },
+ "BQ": {
+ "name": "Nīderlandes Karību salas"
+ },
+ "NE": {
+ "name": "Nigēra"
+ },
+ "NG": {
+ "name": "Nigērija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolkas sala"
+ },
+ "NO": {
+ "name": "Norvēģija"
+ },
+ "AX": {
+ "name": "Olandes salas"
+ },
+ "OM": {
+ "name": "Omāna"
+ },
+ "PK": {
+ "name": "Pakistāna"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestīna"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Jaungvineja"
+ },
+ "PY": {
+ "name": "Paragvaja"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkērna"
+ },
+ "PL": {
+ "name": "Polija"
+ },
+ "PT": {
+ "name": "Portugāle"
+ },
+ "PR": {
+ "name": "Puertoriko"
+ },
+ "RE": {
+ "name": "Reinjona"
+ },
+ "EH": {
+ "name": "Rietumsahāra"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumānija"
+ },
+ "SV": {
+ "name": "Salvadora"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "Sanmarīno"
+ },
+ "ST": {
+ "name": "Santome un Prinsipi"
+ },
+ "SA": {
+ "name": "Saūda Arābija"
+ },
+ "BL": {
+ "name": "Senbartelmī"
+ },
+ "SN": {
+ "name": "Senegāla"
+ },
+ "MF": {
+ "name": "Senmartēna"
+ },
+ "PM": {
+ "name": "Senpjēra un Mikelona"
+ },
+ "KN": {
+ "name": "Sentkitsa un Nevisa"
+ },
+ "LC": {
+ "name": "Sentlūsija"
+ },
+ "VC": {
+ "name": "Sentvinsenta un Grenadīnas"
+ },
+ "RS": {
+ "name": "Serbija"
+ },
+ "EA": {
+ "name": "Seūta un Melilja"
+ },
+ "SG": {
+ "name": "Singapūra"
+ },
+ "SX": {
+ "name": "Sintmārtena"
+ },
+ "SY": {
+ "name": "Sīrija"
+ },
+ "SL": {
+ "name": "Sjerraleone"
+ },
+ "SK": {
+ "name": "Slovākija"
+ },
+ "SI": {
+ "name": "Slovēnija"
+ },
+ "SO": {
+ "name": "Somālija"
+ },
+ "FI": {
+ "name": "Somija"
+ },
+ "ES": {
+ "name": "Spānija"
+ },
+ "SD": {
+ "name": "Sudāna"
+ },
+ "SR": {
+ "name": "Surinama"
+ },
+ "SH": {
+ "name": "Sv.Helēnas sala"
+ },
+ "SJ": {
+ "name": "Svalbāra un Jana Majena sala"
+ },
+ "SZ": {
+ "name": "Svazilenda"
+ },
+ "SC": {
+ "name": "Šeišelu salas"
+ },
+ "LK": {
+ "name": "Šrilanka"
+ },
+ "CH": {
+ "name": "Šveice"
+ },
+ "TJ": {
+ "name": "Tadžikistāna"
+ },
+ "TW": {
+ "name": "Taivāna"
+ },
+ "TH": {
+ "name": "Taizeme"
+ },
+ "TZ": {
+ "name": "Tanzānija"
+ },
+ "TC": {
+ "name": "Tērksas un Kaikosas salas"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidāda un Tobāgo"
+ },
+ "TA": {
+ "name": "Tristana da Kuņas salas"
+ },
+ "TN": {
+ "name": "Tunisija"
+ },
+ "TR": {
+ "name": "Turcija"
+ },
+ "TM": {
+ "name": "Turkmenistāna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungārija"
+ },
+ "UY": {
+ "name": "Urugvaja"
+ },
+ "UZ": {
+ "name": "Uzbekistāna"
+ },
+ "DE": {
+ "name": "Vācija"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikāns"
+ },
+ "VE": {
+ "name": "Venecuēla"
+ },
+ "VN": {
+ "name": "Vjetnama"
+ },
+ "WF": {
+ "name": "Volisa un Futuna"
+ },
+ "SB": {
+ "name": "Zālamana salas"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "KP": {
+ "name": "Ziemeļkoreja"
+ },
+ "MP": {
+ "name": "Ziemeļu Marianas salas"
+ },
+ "CX": {
+ "name": "Ziemsvētku sala"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ },
+ "SE": {
+ "name": "Zviedrija"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mas.json b/library/intl/resources/country/mas.json
new file mode 100644
index 000000000..5ad80c6ba
--- /dev/null
+++ b/library/intl/resources/country/mas.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mer.json b/library/intl/resources/country/mer.json
new file mode 100644
index 000000000..222406ed9
--- /dev/null
+++ b/library/intl/resources/country/mer.json
@@ -0,0 +1,761 @@
+{
+ "IE": {
+ "name": "Aelandi"
+ },
+ "ZA": {
+ "name": "Afrika ya Southi"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "CK": {
+ "name": "Aĩrandi cia Cook"
+ },
+ "FK": {
+ "name": "Aĩrandi cia Falklandi"
+ },
+ "KY": {
+ "name": "Aĩrandi cia Kayman"
+ },
+ "MP": {
+ "name": "Aĩrandi cia Mariana ya nothi"
+ },
+ "MH": {
+ "name": "Aĩrandi cia Marshal"
+ },
+ "NF": {
+ "name": "Aĩrandi cia Norfok"
+ },
+ "SB": {
+ "name": "Airandi Cia Solomon"
+ },
+ "TC": {
+ "name": "Aĩrandi cia Takĩ na Kaiko"
+ },
+ "VI": {
+ "name": "Aĩrandi cia Virgin cia Amerika"
+ },
+ "VG": {
+ "name": "Aĩrandi cia Virgin cia Ngeretha"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Alubania"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "DZ": {
+ "name": "Angiria"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AT": {
+ "name": "Austiria"
+ },
+ "AU": {
+ "name": "Austrĩlia"
+ },
+ "AZ": {
+ "name": "Azebaijani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Baharini"
+ },
+ "BM": {
+ "name": "Bamuda"
+ },
+ "BD": {
+ "name": "Bangiradeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BE": {
+ "name": "Beronjiamu"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilu"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "CY": {
+ "name": "Caipurasi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme cia Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "FR": {
+ "name": "Fransi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine ya Iquita"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Fransi"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangarĩ"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Irani"
+ },
+ "IL": {
+ "name": "Isiraeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italĩ"
+ },
+ "ET": {
+ "name": "Ithiopia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "JO": {
+ "name": "Jorondani"
+ },
+ "NC": {
+ "name": "Kalendoia Ĩnjeru"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CU": {
+ "name": "Kiuba"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Korea Nothi"
+ },
+ "KR": {
+ "name": "Korea Saũthi"
+ },
+ "HR": {
+ "name": "Koroashia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "KW": {
+ "name": "Kuwĩ ti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Lĩbia"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembogu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malĩsia"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Maurĩtiasi"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "GB": {
+ "name": "Ngeretha"
+ },
+ "GI": {
+ "name": "Ngĩbrata"
+ },
+ "GR": {
+ "name": "Ngiriki"
+ },
+ "GL": {
+ "name": "Ngirinilandi"
+ },
+ "NE": {
+ "name": "Nija"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NZ": {
+ "name": "Niuzilandi"
+ },
+ "DE": {
+ "name": "Njamanĩ"
+ },
+ "NO": {
+ "name": "Norwi"
+ },
+ "IO": {
+ "name": "Nthĩ cia Ngeretha gatagatĩ ka ĩria ria Hindi"
+ },
+ "CF": {
+ "name": "Nthĩ ya Afrika gatĩgatĩ"
+ },
+ "CZ": {
+ "name": "Nthĩ ya Cheki"
+ },
+ "DO": {
+ "name": "Nthĩ ya Dominika"
+ },
+ "CD": {
+ "name": "Nthĩ ya Kidemokrasĩ ya Kongo"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Fransi"
+ },
+ "PT": {
+ "name": "Potogo"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RU": {
+ "name": "Rashia"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "PS": {
+ "name": "Rũtere rwa Westi banki na Gaza cia Palestina"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Amerika"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spĩni"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swizilandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TR": {
+ "name": "Takĩ"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thaĩlandi"
+ },
+ "TL": {
+ "name": "Timori ya Isti"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tukumenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukirĩni"
+ },
+ "UY": {
+ "name": "Urugwĩ"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mfe.json b/library/intl/resources/country/mfe.json
new file mode 100644
index 000000000..cdb6195a9
--- /dev/null
+++ b/library/intl/resources/country/mfe.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DE": {
+ "name": "Almagn"
+ },
+ "DZ": {
+ "name": "Alzeri"
+ },
+ "AD": {
+ "name": "Andor"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua-ek-Barbuda"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayti"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbad"
+ },
+ "BY": {
+ "name": "Belaris"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BE": {
+ "name": "Belzik"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermid"
+ },
+ "BG": {
+ "name": "Bilgari"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosni-Herzegovinn"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BT": {
+ "name": "Boutan"
+ },
+ "BR": {
+ "name": "Brezil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Dannmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominik"
+ },
+ "EC": {
+ "name": "Ekwater"
+ },
+ "AE": {
+ "name": "Emira arab ini"
+ },
+ "ER": {
+ "name": "Erythre"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinn"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine ekwatoryal"
+ },
+ "GW": {
+ "name": "Gine-Bisau"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenad"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GP": {
+ "name": "Guadloup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Gwiyann franse"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "UA": {
+ "name": "Ikrenn"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodj"
+ },
+ "CM": {
+ "name": "Kamerounn"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap-Ver"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolonbi"
+ },
+ "KM": {
+ "name": "Komor"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweit"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "FR": {
+ "name": "Lafrans"
+ },
+ "KP": {
+ "name": "Lakore-dinor"
+ },
+ "KR": {
+ "name": "Lakore-disid"
+ },
+ "US": {
+ "name": "Lamerik"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "SA": {
+ "name": "Larabi Saoudit"
+ },
+ "RE": {
+ "name": "Larenion"
+ },
+ "RU": {
+ "name": "Larisi"
+ },
+ "AR": {
+ "name": "Larzantinn"
+ },
+ "CN": {
+ "name": "Lasinn"
+ },
+ "SY": {
+ "name": "Lasiri"
+ },
+ "SE": {
+ "name": "Laswed"
+ },
+ "CH": {
+ "name": "Laswis"
+ },
+ "VA": {
+ "name": "Lata Vatikan"
+ },
+ "IN": {
+ "name": "Lenn"
+ },
+ "ES": {
+ "name": "Lespagn"
+ },
+ "ET": {
+ "name": "Letiopi"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "EG": {
+ "name": "Lezipt"
+ },
+ "LS": {
+ "name": "Lezoto"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "NF": {
+ "name": "Lil Norfolk"
+ },
+ "LT": {
+ "name": "Lituani"
+ },
+ "AU": {
+ "name": "Lostrali"
+ },
+ "AT": {
+ "name": "Lostris"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiv"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malt"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MK": {
+ "name": "Masedwann"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Mexik"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Moldavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montsera"
+ },
+ "MU": {
+ "name": "Moris"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niowe"
+ },
+ "NE": {
+ "name": "Nizer"
+ },
+ "NG": {
+ "name": "Nizeria"
+ },
+ "NO": {
+ "name": "Norvez"
+ },
+ "NZ": {
+ "name": "Nouvel Zeland"
+ },
+ "NC": {
+ "name": "Nouvel-Kaledoni"
+ },
+ "NL": {
+ "name": "Oland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HU": {
+ "name": "Ongri"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouazi-Nouvel-Gine"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perou"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinezi franse"
+ },
+ "PL": {
+ "name": "Pologn"
+ },
+ "PT": {
+ "name": "Portigal"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "CZ": {
+ "name": "Repiblik Chek"
+ },
+ "CD": {
+ "name": "Repiblik demokratik Kongo"
+ },
+ "DO": {
+ "name": "Repiblik dominikin"
+ },
+ "CF": {
+ "name": "Repiblik Lafrik Santral"
+ },
+ "RO": {
+ "name": "Roumani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint-Christophe-ek-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-ek-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-ek-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa amerikin"
+ },
+ "ST": {
+ "name": "São Tome-ek-Prínsip"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesel"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "ZA": {
+ "name": "Sid-Afrik"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaki"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "IO": {
+ "name": "Teritwar Britanik Losean Indien"
+ },
+ "PS": {
+ "name": "Teritwar Palestinn"
+ },
+ "TH": {
+ "name": "Thayland"
+ },
+ "TL": {
+ "name": "Timor oriantal"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TR": {
+ "name": "Tirki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinite-ek-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-ek-Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemenn"
+ },
+ "JM": {
+ "name": "Zamaik"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "JP": {
+ "name": "Zapon"
+ },
+ "GE": {
+ "name": "Zeorzi"
+ },
+ "GI": {
+ "name": "Zibraltar"
+ },
+ "CK": {
+ "name": "Zil Cook"
+ },
+ "KY": {
+ "name": "Zil Kayman"
+ },
+ "FK": {
+ "name": "Zil malwinn"
+ },
+ "MH": {
+ "name": "Zil Marshall"
+ },
+ "MP": {
+ "name": "Zil Maryann dinor"
+ },
+ "SB": {
+ "name": "Zil Salomon"
+ },
+ "TC": {
+ "name": "Zil Tirk ek Caïcos"
+ },
+ "VG": {
+ "name": "Zil vierz britanik"
+ },
+ "VI": {
+ "name": "Zil Vierz Lamerik"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "JO": {
+ "name": "Zordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mg.json b/library/intl/resources/country/mg.json
new file mode 100644
index 000000000..b2d229987
--- /dev/null
+++ b/library/intl/resources/country/mg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Atsimo"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemaina"
+ },
+ "DZ": {
+ "name": "Alzeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "GB": {
+ "name": "Angletera"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga sy Barboda"
+ },
+ "AU": {
+ "name": "Aostralia"
+ },
+ "AT": {
+ "name": "Aotrisy"
+ },
+ "SA": {
+ "name": "Arabia saodita"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arobà"
+ },
+ "AR": {
+ "name": "Arzantina"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesy"
+ },
+ "BB": {
+ "name": "Barbady"
+ },
+ "BY": {
+ "name": "Belarosy"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Belzika"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermioda"
+ },
+ "BT": {
+ "name": "Bhotana"
+ },
+ "BG": {
+ "name": "Biolgaria"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BF": {
+ "name": "Borkina Faso"
+ },
+ "BI": {
+ "name": "Borondi"
+ },
+ "BA": {
+ "name": "Bosnia sy Herzegovina"
+ },
+ "BW": {
+ "name": "Botsoana"
+ },
+ "BR": {
+ "name": "Brezila"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djiboti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Ejypta"
+ },
+ "EC": {
+ "name": "Ekoatera"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirà Arabo mitambatra"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ES": {
+ "name": "Espaina"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "US": {
+ "name": "Etazonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "IO": {
+ "name": "Faridranomasina indiana britanika"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finlandy"
+ },
+ "VA": {
+ "name": "Firenen’i Vatikana"
+ },
+ "FR": {
+ "name": "Frantsa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GW": {
+ "name": "Giné-Bisao"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GP": {
+ "name": "Goadelopy"
+ },
+ "GT": {
+ "name": "Goatemalà"
+ },
+ "GD": {
+ "name": "Grenady"
+ },
+ "GR": {
+ "name": "Gresy"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guinea Ekoatera"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana frantsay"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Hondiorasy"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongria"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "IN": {
+ "name": "Indy"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandy"
+ },
+ "IS": {
+ "name": "Islandy"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israely"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaïka"
+ },
+ "JP": {
+ "name": "Japana"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KH": {
+ "name": "Kambôdja"
+ },
+ "CM": {
+ "name": "Kamerona"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiobà"
+ },
+ "KG": {
+ "name": "Kiordistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Kôeity"
+ },
+ "CO": {
+ "name": "Kôlômbia"
+ },
+ "KM": {
+ "name": "Kômaoro"
+ },
+ "CG": {
+ "name": "Kôngô"
+ },
+ "KR": {
+ "name": "Korea Atsimo"
+ },
+ "KP": {
+ "name": "Korea Avaratra"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rikà"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "LA": {
+ "name": "Laôs"
+ },
+ "RE": {
+ "name": "Larenion"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Libana"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LU": {
+ "name": "Lioksamboro"
+ },
+ "LI": {
+ "name": "Listenstein"
+ },
+ "LT": {
+ "name": "Litoania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikara"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MY": {
+ "name": "Malaizia"
+ },
+ "MW": {
+ "name": "Malaoì"
+ },
+ "MV": {
+ "name": "Maldiva"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MU": {
+ "name": "Maorisy"
+ },
+ "MR": {
+ "name": "Maoritania"
+ },
+ "MA": {
+ "name": "Marôka"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "YT": {
+ "name": "Mayôty"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "FM": {
+ "name": "Mikrônezia"
+ },
+ "MD": {
+ "name": "Môldavia"
+ },
+ "MC": {
+ "name": "Mônakô"
+ },
+ "MN": {
+ "name": "Môngôlia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naorò"
+ },
+ "NP": {
+ "name": "Nepala"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NI": {
+ "name": "Nikaragoà"
+ },
+ "NU": {
+ "name": "Nioé"
+ },
+ "NG": {
+ "name": "Nizeria"
+ },
+ "NO": {
+ "name": "Nôrvezy"
+ },
+ "VG": {
+ "name": "Nosy britanika virijiny"
+ },
+ "CV": {
+ "name": "Nosy Cap-Vert"
+ },
+ "FK": {
+ "name": "Nosy Falkand"
+ },
+ "KY": {
+ "name": "Nosy Kayman"
+ },
+ "CK": {
+ "name": "Nosy Kook"
+ },
+ "MP": {
+ "name": "Nosy Mariana Atsinanana"
+ },
+ "MH": {
+ "name": "Nosy Marshall"
+ },
+ "NF": {
+ "name": "Nosy Norfolk"
+ },
+ "SB": {
+ "name": "Nosy Salomona"
+ },
+ "TC": {
+ "name": "Nosy Turks sy Caïques"
+ },
+ "VI": {
+ "name": "Nosy Virijiny Etazonia"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "UG": {
+ "name": "Oganda"
+ },
+ "UA": {
+ "name": "Okraina"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UY": {
+ "name": "Orogoay"
+ },
+ "UZ": {
+ "name": "Ozbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palao"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paragoay"
+ },
+ "PE": {
+ "name": "Peroa"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PL": {
+ "name": "Pôlôna"
+ },
+ "PF": {
+ "name": "Polynezia frantsay"
+ },
+ "PT": {
+ "name": "Pôrtiogala"
+ },
+ "PR": {
+ "name": "Pôrtô Rikô"
+ },
+ "DO": {
+ "name": "Repoblika Dominikanina"
+ },
+ "CF": {
+ "name": "Repoblika Ivon’Afrika"
+ },
+ "CD": {
+ "name": "Repoblikan’i Kongo"
+ },
+ "CZ": {
+ "name": "Repoblikan’i Tseky"
+ },
+ "RW": {
+ "name": "Roanda"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Rosia"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa amerikanina"
+ },
+ "ST": {
+ "name": "São Tomé-et-Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyshela"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singaporo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SZ": {
+ "name": "Soazilandy"
+ },
+ "SD": {
+ "name": "Sodan"
+ },
+ "SE": {
+ "name": "Soedy"
+ },
+ "CH": {
+ "name": "Soisa"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SR": {
+ "name": "Sorinam"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "CY": {
+ "name": "Sypra"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taioana"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandy"
+ },
+ "TL": {
+ "name": "Timor Atsinanana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelao"
+ },
+ "TO": {
+ "name": "Tongà"
+ },
+ "TN": {
+ "name": "Tonizia"
+ },
+ "TR": {
+ "name": "Torkia"
+ },
+ "TM": {
+ "name": "Torkmenistan"
+ },
+ "TV": {
+ "name": "Tovalò"
+ },
+ "TT": {
+ "name": "Trinidad sy Tobagô"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsady"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanoatò"
+ },
+ "VE": {
+ "name": "Venezoelà"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis sy Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "GE": {
+ "name": "Zeorzia"
+ },
+ "GI": {
+ "name": "Zibraltara"
+ },
+ "ZW": {
+ "name": "Zimbaboe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mgh.json b/library/intl/resources/country/mgh.json
new file mode 100644
index 000000000..516a1a273
--- /dev/null
+++ b/library/intl/resources/country/mgh.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika du Sulu"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DZ": {
+ "name": "Alujeria"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "AL": {
+ "name": "Ualbania"
+ },
+ "AD": {
+ "name": "Uandora"
+ },
+ "IE": {
+ "name": "Uayalandi"
+ },
+ "AZ": {
+ "name": "Uazabajani"
+ },
+ "BJ": {
+ "name": "Ubelin"
+ },
+ "MG": {
+ "name": "Ubukini"
+ },
+ "TD": {
+ "name": "Uchadi"
+ },
+ "CZ": {
+ "name": "Ucheki"
+ },
+ "CL": {
+ "name": "Uchile"
+ },
+ "CN": {
+ "name": "Uchina"
+ },
+ "DK": {
+ "name": "Udenimaka"
+ },
+ "DM": {
+ "name": "Udominika"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "GF": {
+ "name": "Ufaransa yo Gwaya"
+ },
+ "PF": {
+ "name": "Ufaransa yo Potina"
+ },
+ "FJ": {
+ "name": "Ufiji"
+ },
+ "PH": {
+ "name": "Ufilipino"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "AF": {
+ "name": "Ufugustani"
+ },
+ "GA": {
+ "name": "Ugaboni"
+ },
+ "GM": {
+ "name": "Ugambia"
+ },
+ "GH": {
+ "name": "Ugana"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GN": {
+ "name": "Ugine"
+ },
+ "GW": {
+ "name": "Uginebisau"
+ },
+ "GD": {
+ "name": "Ugrenada"
+ },
+ "GL": {
+ "name": "Ugrinlandi"
+ },
+ "GY": {
+ "name": "Uguyana"
+ },
+ "GP": {
+ "name": "Ugwadelupe"
+ },
+ "GU": {
+ "name": "Ugwam"
+ },
+ "GT": {
+ "name": "Ugwatemala"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "HT": {
+ "name": "Uhaiti"
+ },
+ "IN": {
+ "name": "Uhindini"
+ },
+ "ES": {
+ "name": "Uhispania"
+ },
+ "HN": {
+ "name": "Uhondurasi"
+ },
+ "HU": {
+ "name": "Uhungaria"
+ },
+ "IL": {
+ "name": "Uisraeli"
+ },
+ "JM": {
+ "name": "Ujamaika"
+ },
+ "JP": {
+ "name": "Ujapani"
+ },
+ "GI": {
+ "name": "Ujibralta"
+ },
+ "DJ": {
+ "name": "Ujibuti"
+ },
+ "TJ": {
+ "name": "Ujikistani"
+ },
+ "GE": {
+ "name": "Ujojia"
+ },
+ "KH": {
+ "name": "Ukambodia"
+ },
+ "CA": {
+ "name": "Ukanada"
+ },
+ "QA": {
+ "name": "Ukatari"
+ },
+ "KZ": {
+ "name": "Ukazakistani"
+ },
+ "KE": {
+ "name": "Ukenya"
+ },
+ "CI": {
+ "name": "Ukodiva"
+ },
+ "CO": {
+ "name": "Ukolombia"
+ },
+ "KM": {
+ "name": "Ukomoro"
+ },
+ "CG": {
+ "name": "Ukongo"
+ },
+ "HR": {
+ "name": "Ukorasia"
+ },
+ "KP": {
+ "name": "Ukorea Kaskazini"
+ },
+ "KR": {
+ "name": "Ukorea Kusini"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "CU": {
+ "name": "Ukuba"
+ },
+ "CY": {
+ "name": "Ukuprosi"
+ },
+ "LV": {
+ "name": "Ulativia"
+ },
+ "LB": {
+ "name": "Ulebanoni"
+ },
+ "LS": {
+ "name": "Ulesoto"
+ },
+ "LR": {
+ "name": "Uliberia"
+ },
+ "LY": {
+ "name": "Ulibya"
+ },
+ "MW": {
+ "name": "Umalawi"
+ },
+ "ME": {
+ "name": "Umantegro"
+ },
+ "US": {
+ "name": "Umarekani"
+ },
+ "MK": {
+ "name": "Umasedonia"
+ },
+ "EG": {
+ "name": "Umisiri"
+ },
+ "MZ": {
+ "name": "Umozambiki"
+ },
+ "ID": {
+ "name": "Undonesia"
+ },
+ "NE": {
+ "name": "Unijeri"
+ },
+ "NG": {
+ "name": "Unijeria"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "NO": {
+ "name": "Unorwe"
+ },
+ "OM": {
+ "name": "Uomani"
+ },
+ "PK": {
+ "name": "Upakistani"
+ },
+ "PA": {
+ "name": "Upanama"
+ },
+ "PG": {
+ "name": "Upapua"
+ },
+ "PE": {
+ "name": "Uperuu"
+ },
+ "PN": {
+ "name": "Upitkairni"
+ },
+ "PL": {
+ "name": "Upolandi"
+ },
+ "PR": {
+ "name": "Upwetoriko"
+ },
+ "ER": {
+ "name": "Uriterea"
+ },
+ "RE": {
+ "name": "Uriyunioni"
+ },
+ "RO": {
+ "name": "Uromania"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "BI": {
+ "name": "Urundi"
+ },
+ "RW": {
+ "name": "Urwanda"
+ },
+ "SV": {
+ "name": "Usalavado"
+ },
+ "SM": {
+ "name": "Usamarino"
+ },
+ "WS": {
+ "name": "Usamoa"
+ },
+ "AS": {
+ "name": "Usamoa ya Marekani"
+ },
+ "SH": {
+ "name": "Usantahelena"
+ },
+ "KN": {
+ "name": "Usantakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Usantalusia"
+ },
+ "PM": {
+ "name": "Usantapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Usantavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Usao Tome na Principe"
+ },
+ "SA": {
+ "name": "Usaudi"
+ },
+ "LU": {
+ "name": "Usembaji"
+ },
+ "SN": {
+ "name": "Usenegali"
+ },
+ "SC": {
+ "name": "Ushelisheli"
+ },
+ "LI": {
+ "name": "Ushenteni"
+ },
+ "SG": {
+ "name": "Usingapoo"
+ },
+ "SY": {
+ "name": "Usiria"
+ },
+ "LK": {
+ "name": "Usirilanka"
+ },
+ "SK": {
+ "name": "Uslovakia"
+ },
+ "SI": {
+ "name": "Uslovenia"
+ },
+ "SO": {
+ "name": "Usomalia"
+ },
+ "SD": {
+ "name": "Usudani"
+ },
+ "SR": {
+ "name": "Usurinamu"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TH": {
+ "name": "Utailandi"
+ },
+ "TZ": {
+ "name": "Utanzania"
+ },
+ "TL": {
+ "name": "Utimo Mashariki"
+ },
+ "TG": {
+ "name": "Utogo"
+ },
+ "TK": {
+ "name": "Utokelau"
+ },
+ "TO": {
+ "name": "Utonga"
+ },
+ "TT": {
+ "name": "Utrinidad na Tobago"
+ },
+ "TR": {
+ "name": "Utuki"
+ },
+ "TN": {
+ "name": "Utunisia"
+ },
+ "TM": {
+ "name": "Uturukimenistani"
+ },
+ "TV": {
+ "name": "Utuvalu"
+ },
+ "LT": {
+ "name": "Utwania"
+ },
+ "VU": {
+ "name": "Uvanuatu"
+ },
+ "VA": {
+ "name": "Uvatikani"
+ },
+ "VE": {
+ "name": "Uvenezuela"
+ },
+ "VN": {
+ "name": "Uvietinamu"
+ },
+ "WF": {
+ "name": "Uwalis na Futuna"
+ },
+ "YE": {
+ "name": "Uyemeni"
+ },
+ "JO": {
+ "name": "Uyordani"
+ },
+ "ZM": {
+ "name": "Uzambia"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "ZW": {
+ "name": "Uzimbabwe"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "IQ": {
+ "name": "Wiraki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mk.json b/library/intl/resources/country/mk.json
new file mode 100644
index 000000000..0dae5e0d8
--- /dev/null
+++ b/library/intl/resources/country/mk.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Авганистан"
+ },
+ "AU": {
+ "name": "Австралија"
+ },
+ "AT": {
+ "name": "Австрија"
+ },
+ "AZ": {
+ "name": "Азербејџан"
+ },
+ "AL": {
+ "name": "Албанија"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Американска Самоа"
+ },
+ "VI": {
+ "name": "Американски Девствени Острови"
+ },
+ "UM": {
+ "name": "Американски територии во Пацификот"
+ },
+ "AI": {
+ "name": "Ангвила"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андора"
+ },
+ "AQ": {
+ "name": "Антарктик"
+ },
+ "AG": {
+ "name": "Антигва и Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "Белорусија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуди"
+ },
+ "CX": {
+ "name": "Божиќен Остров"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "Босна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "CI": {
+ "name": "Брегот на Слоновата Коска"
+ },
+ "IO": {
+ "name": "Британска Индоокеанска Територија"
+ },
+ "VG": {
+ "name": "Британски Девствени Острови"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "Бугарија"
+ },
+ "BF": {
+ "name": "Буркина Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Виетнам"
+ },
+ "WF": {
+ "name": "Волис и Футуна"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гвадалупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GU": {
+ "name": "Гвам"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-Бисау"
+ },
+ "DE": {
+ "name": "Германија"
+ },
+ "GG": {
+ "name": "Гернзи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грција"
+ },
+ "DK": {
+ "name": "Данска"
+ },
+ "DG": {
+ "name": "Диего Гарсија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминиканска Република"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторска Гвинеја"
+ },
+ "SV": {
+ "name": "Ел Салвадор"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "AM": {
+ "name": "Ерменија"
+ },
+ "EE": {
+ "name": "Естонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "CV": {
+ "name": "Зелен ’Рт"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирска"
+ },
+ "IS": {
+ "name": "Исланд"
+ },
+ "TL": {
+ "name": "Источен Тимор (Тимор Лесте)"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапонија"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "SS": {
+ "name": "Јужен Судан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Џорџија и Јужни Сендвички Острови"
+ },
+ "ZA": {
+ "name": "Јужноафриканска Република"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кајмански Острови"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарски Острови"
+ },
+ "BQ": {
+ "name": "Карипска Холандија"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "Киргистан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокосови (Килиншки) Острови"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "Коморски Острови"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Костарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукови Острови"
+ },
+ "CW": {
+ "name": "Курасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвија"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "Луксембург"
+ },
+ "MR": {
+ "name": "Мавританија"
+ },
+ "MU": {
+ "name": "Маврициус"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Мајот"
+ },
+ "MO": {
+ "name": "Макао С.А.Р Кина"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "Маршалски Острови"
+ },
+ "MX": {
+ "name": "Мексико"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MM": {
+ "name": "Мјанмар (Бурма)"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "Монсерат"
+ },
+ "NA": {
+ "name": "Намибија"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерија"
+ },
+ "NI": {
+ "name": "Никарагва"
+ },
+ "NU": {
+ "name": "Ниуе"
+ },
+ "NZ": {
+ "name": "Нов Зеланд"
+ },
+ "NC": {
+ "name": "Нова Каледонија"
+ },
+ "NO": {
+ "name": "Норвешка"
+ },
+ "NF": {
+ "name": "Норфолшки Остров"
+ },
+ "AE": {
+ "name": "Обединети Арапски Емирати"
+ },
+ "GB": {
+ "name": "Обединето Кралство"
+ },
+ "AX": {
+ "name": "Оландски острови"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "Остров Асенсион"
+ },
+ "IM": {
+ "name": "Остров Ман"
+ },
+ "TC": {
+ "name": "Острови Туркс и Кајкос"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестински територии"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Нова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкернски Острови"
+ },
+ "PL": {
+ "name": "Полска"
+ },
+ "PR": {
+ "name": "Порторико"
+ },
+ "PT": {
+ "name": "Португалија"
+ },
+ "CZ": {
+ "name": "Република Чешка"
+ },
+ "RE": {
+ "name": "Ријунион"
+ },
+ "RO": {
+ "name": "Романија"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RU": {
+ "name": "Русија"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принсипе"
+ },
+ "SA": {
+ "name": "Саудиска Арабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Жан Мејен"
+ },
+ "SH": {
+ "name": "Света Елена"
+ },
+ "LC": {
+ "name": "Света Луција"
+ },
+ "BL": {
+ "name": "Свети Вартоломеј"
+ },
+ "VC": {
+ "name": "Свети Винсент и Гренадините"
+ },
+ "KN": {
+ "name": "Свети Кристофер и Невис"
+ },
+ "SX": {
+ "name": "Свети Мартин"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северни Маријански Острови"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "PM": {
+ "name": "Сент Пјер и Микелан"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сиера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "US": {
+ "name": "Соединети Американски Држави"
+ },
+ "SB": {
+ "name": "Соломонски Острови"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "Таџикистан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "TR": {
+ "name": "Турција"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "HU": {
+ "name": "Унгарија"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "Фарски Острови"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "Финска"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "Фолкландски Острови"
+ },
+ "FR": {
+ "name": "Франција"
+ },
+ "GF": {
+ "name": "Француска Гвајана"
+ },
+ "PF": {
+ "name": "Француска Полинезија"
+ },
+ "TF": {
+ "name": "Француски Јужни територии"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С.А.Р Кина"
+ },
+ "HN": {
+ "name": "Хондурас"
+ },
+ "HR": {
+ "name": "Хрватска"
+ },
+ "CF": {
+ "name": "Централноафриканска Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "Џерси"
+ },
+ "DJ": {
+ "name": "Џибути"
+ },
+ "CH": {
+ "name": "Швајцарија"
+ },
+ "SE": {
+ "name": "Шведска"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ml.json b/library/intl/resources/country/ml.json
new file mode 100644
index 000000000..398c97dd3
--- /dev/null
+++ b/library/intl/resources/country/ml.json
@@ -0,0 +1,761 @@
+{
+ "AQ": {
+ "name": "അൻറാർട്ടിക്ക"
+ },
+ "AD": {
+ "name": "അന്റോറ"
+ },
+ "AF": {
+ "name": "അഫ്‌ഗാനിസ്ഥാൻ"
+ },
+ "US": {
+ "name": "അമേരിക്കൻ ഐക്യനാടുകൾ"
+ },
+ "AS": {
+ "name": "അമേരിക്കൻ സമോവ"
+ },
+ "AO": {
+ "name": "അംഗോള"
+ },
+ "IE": {
+ "name": "അയർലാൻഡ്"
+ },
+ "AR": {
+ "name": "അർജൻറീന"
+ },
+ "AM": {
+ "name": "അർമേനിയ"
+ },
+ "AX": {
+ "name": "അലൻഡ് ദ്വീപുകൾ"
+ },
+ "AL": {
+ "name": "അൽബേനിയ"
+ },
+ "AC": {
+ "name": "അസൻഷൻ ദ്വീപ്"
+ },
+ "AZ": {
+ "name": "അസർബൈജാൻ"
+ },
+ "DZ": {
+ "name": "അൾജീരിയ"
+ },
+ "AW": {
+ "name": "അറൂബ"
+ },
+ "AI": {
+ "name": "ആൻഗ്വില്ല"
+ },
+ "AG": {
+ "name": "ആൻറിഗ്വയും ബർബുഡയും"
+ },
+ "EC": {
+ "name": "ഇക്വഡോർ"
+ },
+ "GQ": {
+ "name": "ഇക്വറ്റോറിയൽ ഗിനിയ"
+ },
+ "ID": {
+ "name": "ഇന്തോനേഷ്യ"
+ },
+ "IN": {
+ "name": "ഇന്ത്യ"
+ },
+ "IL": {
+ "name": "ഇസ്രായേൽ"
+ },
+ "IQ": {
+ "name": "ഇറാഖ്"
+ },
+ "IR": {
+ "name": "ഇറാൻ"
+ },
+ "IT": {
+ "name": "ഇറ്റലി"
+ },
+ "EG": {
+ "name": "ഈജിപ്ത്"
+ },
+ "UA": {
+ "name": "ഉക്രെയ്‌ൻ"
+ },
+ "UG": {
+ "name": "ഉഗാണ്ട"
+ },
+ "MP": {
+ "name": "ഉത്തര മറിയാനാ ദ്വീപുകൾ"
+ },
+ "KP": {
+ "name": "ഉത്തരകൊറിയ"
+ },
+ "UZ": {
+ "name": "ഉസ്‌ബെക്കിസ്ഥാൻ"
+ },
+ "UY": {
+ "name": "ഉറുഗ്വേ"
+ },
+ "ET": {
+ "name": "എത്യോപ്യ"
+ },
+ "SV": {
+ "name": "എൽ സാൽവദോർ"
+ },
+ "EE": {
+ "name": "എസ്റ്റോണിയ‍"
+ },
+ "ER": {
+ "name": "എറിത്രിയ"
+ },
+ "IM": {
+ "name": "ഐൽ ഓഫ് മാൻ"
+ },
+ "IS": {
+ "name": "ഐസ്‌ലാന്റ്"
+ },
+ "OM": {
+ "name": "ഒമാൻ"
+ },
+ "AT": {
+ "name": "ഓസ്ട്രിയ"
+ },
+ "AU": {
+ "name": "ഓസ്‌ട്രേലിയ"
+ },
+ "KH": {
+ "name": "കംബോഡിയ"
+ },
+ "KZ": {
+ "name": "കസാഖിസ്ഥാൻ"
+ },
+ "CA": {
+ "name": "കാനഡ"
+ },
+ "IC": {
+ "name": "കാനറി ദ്വീപുകൾ"
+ },
+ "CM": {
+ "name": "കാമറൂൺ"
+ },
+ "KI": {
+ "name": "കിരിബാട്ടി"
+ },
+ "KG": {
+ "name": "കിർഗിസ്ഥാൻ"
+ },
+ "CK": {
+ "name": "കുക്ക് ദ്വീപുകൾ"
+ },
+ "KW": {
+ "name": "കുവൈറ്റ്"
+ },
+ "CW": {
+ "name": "കുറാകാവോ"
+ },
+ "KE": {
+ "name": "കെനിയ"
+ },
+ "CV": {
+ "name": "കേപ്പ് വെർദെ"
+ },
+ "KY": {
+ "name": "കേമാൻ ദ്വീപുകൾ"
+ },
+ "XK": {
+ "name": "കൊസോവൊ"
+ },
+ "CO": {
+ "name": "കൊളംബിയ"
+ },
+ "CC": {
+ "name": "കോക്കസ് ദ്വീപുകൾ"
+ },
+ "CI": {
+ "name": "കോട്ട് ഡി വാർ"
+ },
+ "KM": {
+ "name": "കോമൊറോസ്"
+ },
+ "CD": {
+ "name": "കോംഗോ - കിൻഷാസ"
+ },
+ "CG": {
+ "name": "കോംഗോ - ബ്രാസവില്ലി"
+ },
+ "CR": {
+ "name": "കോസ്റ്ററിക്ക"
+ },
+ "CU": {
+ "name": "ക്യൂബ"
+ },
+ "CX": {
+ "name": "ക്രിസ്മസ് ദ്വീപ്"
+ },
+ "HR": {
+ "name": "ക്രൊയേഷ്യ"
+ },
+ "QA": {
+ "name": "ഖത്തർ"
+ },
+ "GY": {
+ "name": "ഗയാന"
+ },
+ "GA": {
+ "name": "ഗാബൺ"
+ },
+ "GM": {
+ "name": "ഗാംബിയ"
+ },
+ "GN": {
+ "name": "ഗിനിയ"
+ },
+ "GW": {
+ "name": "ഗിനിയ-ബിസൗ"
+ },
+ "GG": {
+ "name": "ഗേൺസി"
+ },
+ "GD": {
+ "name": "ഗ്രനേഡ"
+ },
+ "GL": {
+ "name": "ഗ്രീൻലാൻറ്"
+ },
+ "GR": {
+ "name": "ഗ്രീസ്"
+ },
+ "GT": {
+ "name": "ഗ്വാട്ടിമാല"
+ },
+ "GP": {
+ "name": "ഗ്വാഡലൂപ്പ്"
+ },
+ "GU": {
+ "name": "ഗ്വാം"
+ },
+ "GH": {
+ "name": "ഘാന"
+ },
+ "CL": {
+ "name": "ചിലി"
+ },
+ "CZ": {
+ "name": "ചെക്ക് റിപ്പബ്ലിക്"
+ },
+ "CN": {
+ "name": "ചൈന"
+ },
+ "TD": {
+ "name": "ഛാഡ്"
+ },
+ "JP": {
+ "name": "ജപ്പാൻ"
+ },
+ "JM": {
+ "name": "ജമൈക്ക"
+ },
+ "DE": {
+ "name": "ജർമനി"
+ },
+ "GI": {
+ "name": "ജിബ്രാൾട്ടർ"
+ },
+ "JE": {
+ "name": "ജേഴ്സി"
+ },
+ "GE": {
+ "name": "ജോർജ്ജിയ"
+ },
+ "JO": {
+ "name": "ജോർദ്ദാൻ"
+ },
+ "TC": {
+ "name": "ടർക്ക്‌സും കെയ്‌ക്കോ ദ്വീപുകളും"
+ },
+ "TZ": {
+ "name": "ടാൻസാനിയ"
+ },
+ "TN": {
+ "name": "ടുണീഷ്യ"
+ },
+ "TV": {
+ "name": "ടുവാലു"
+ },
+ "TK": {
+ "name": "ടോക്കെലൂ"
+ },
+ "TG": {
+ "name": "ടോഗോ"
+ },
+ "TO": {
+ "name": "ടോംഗ"
+ },
+ "TA": {
+ "name": "ട്രസ്റ്റൻ ഡ കൂന"
+ },
+ "TT": {
+ "name": "ട്രിനിഡാഡും ടുബാഗോയും"
+ },
+ "DG": {
+ "name": "ഡീഗോ ഗ്രാഷ്യ"
+ },
+ "DK": {
+ "name": "ഡെൻമാർക്ക്"
+ },
+ "DM": {
+ "name": "ഡൊമിനിക്ക"
+ },
+ "DO": {
+ "name": "ഡൊമിനിക്കൻ റിപ്പബ്ലിക്"
+ },
+ "TJ": {
+ "name": "താജിക്കിസ്ഥാൻ"
+ },
+ "TH": {
+ "name": "തായ്‌ലാൻഡ്"
+ },
+ "TW": {
+ "name": "തായ്‌വാൻ"
+ },
+ "TL": {
+ "name": "തിമോർ-ലെസ്റ്റെ"
+ },
+ "TR": {
+ "name": "തുർക്കി"
+ },
+ "TM": {
+ "name": "തുർക്ക്മെനിസ്ഥാൻ"
+ },
+ "GS": {
+ "name": "ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്‌വിച്ച് ദ്വീപുകളും"
+ },
+ "SS": {
+ "name": "ദക്ഷിണ സുഡാൻ"
+ },
+ "KR": {
+ "name": "ദക്ഷിണകൊറിയ"
+ },
+ "ZA": {
+ "name": "ദക്ഷിണാഫ്രിക്ക"
+ },
+ "DJ": {
+ "name": "ദിജിബൗട്ടി"
+ },
+ "NA": {
+ "name": "നമീബിയ"
+ },
+ "NI": {
+ "name": "നിക്കരാഗ്വ"
+ },
+ "NL": {
+ "name": "നെതർലാൻഡ്‌സ്"
+ },
+ "NP": {
+ "name": "നേപ്പാൾ"
+ },
+ "NE": {
+ "name": "നൈജർ"
+ },
+ "NG": {
+ "name": "നൈജീരിയ"
+ },
+ "NF": {
+ "name": "നോർഫോക് ദ്വീപ്"
+ },
+ "NO": {
+ "name": "നോർവെ"
+ },
+ "NR": {
+ "name": "നൗറു"
+ },
+ "NU": {
+ "name": "ന്യൂയി"
+ },
+ "NZ": {
+ "name": "ന്യൂസിലാൻറ്"
+ },
+ "PA": {
+ "name": "പനാമ"
+ },
+ "PY": {
+ "name": "പരാഗ്വേ"
+ },
+ "PW": {
+ "name": "പലാവു"
+ },
+ "EH": {
+ "name": "പശ്ചിമ സഹാറ"
+ },
+ "PK": {
+ "name": "പാക്കിസ്ഥാൻ"
+ },
+ "PG": {
+ "name": "പാപ്പുവ ന്യൂ ഗിനിയ"
+ },
+ "PS": {
+ "name": "പാലസ്‌തീൻ പ്രദേശങ്ങൾ"
+ },
+ "PN": {
+ "name": "പിറ്റ്‌കെയ്‌ൻ ദ്വീപുകൾ"
+ },
+ "NC": {
+ "name": "പുതിയ കാലിഡോണിയ"
+ },
+ "PE": {
+ "name": "പെറു"
+ },
+ "PT": {
+ "name": "പോർച്ചുഗൽ"
+ },
+ "PL": {
+ "name": "പോളണ്ട്"
+ },
+ "PR": {
+ "name": "പ്യൂർട്ടോ റിക്കോ"
+ },
+ "FO": {
+ "name": "ഫറോ ദ്വീപുകൾ"
+ },
+ "FK": {
+ "name": "ഫാക്ക്‌ലാന്റ് ദ്വീപുകൾ"
+ },
+ "FJ": {
+ "name": "ഫിജി"
+ },
+ "FI": {
+ "name": "ഫിൻലാൻഡ്"
+ },
+ "PH": {
+ "name": "ഫിലിപ്പൈൻസ്"
+ },
+ "GF": {
+ "name": "ഫ്രഞ്ച് ഗയാന"
+ },
+ "TF": {
+ "name": "ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശം"
+ },
+ "PF": {
+ "name": "ഫ്രഞ്ച് പോളിനേഷ്യ"
+ },
+ "FR": {
+ "name": "ഫ്രാൻസ്"
+ },
+ "BD": {
+ "name": "ബംഗ്ലാദേശ്"
+ },
+ "BM": {
+ "name": "ബർമുഡ"
+ },
+ "BS": {
+ "name": "ബഹാമാസ്"
+ },
+ "BH": {
+ "name": "ബഹ്റിൻ"
+ },
+ "BG": {
+ "name": "ബൾഗേറിയ"
+ },
+ "BI": {
+ "name": "ബറുണ്ടി"
+ },
+ "BB": {
+ "name": "ബാർബഡോസ്"
+ },
+ "BF": {
+ "name": "ബുർക്കിനാ ഫാസോ"
+ },
+ "BJ": {
+ "name": "ബെനിൻ"
+ },
+ "BY": {
+ "name": "ബെലറൂസ്"
+ },
+ "BZ": {
+ "name": "ബെലീസ്"
+ },
+ "BE": {
+ "name": "ബെൽജിയം"
+ },
+ "BQ": {
+ "name": "ബൊണെയ്ർ, സിന്റ് യുസ്റ്റേഷ്യസ്, സാബ എന്നിവ"
+ },
+ "BO": {
+ "name": "ബൊളീവിയ"
+ },
+ "BW": {
+ "name": "ബോട്സ്വാന"
+ },
+ "BA": {
+ "name": "ബോസ്നിയയും ഹെർസഗോവിനയും"
+ },
+ "BR": {
+ "name": "ബ്രസീൽ"
+ },
+ "GB": {
+ "name": "ബ്രിട്ടൻ"
+ },
+ "IO": {
+ "name": "ബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശം"
+ },
+ "VG": {
+ "name": "ബ്രിട്ടീഷ് വെർജിൻ ദ്വീപുകൾ"
+ },
+ "BN": {
+ "name": "ബ്രൂണൈ"
+ },
+ "BT": {
+ "name": "ഭൂട്ടാൻ"
+ },
+ "MO": {
+ "name": "മക്കാവോ SAR ചൈന"
+ },
+ "MG": {
+ "name": "മഡഗാസ്കർ"
+ },
+ "MN": {
+ "name": "മംഗോളിയ"
+ },
+ "YT": {
+ "name": "മയോട്ടി"
+ },
+ "MW": {
+ "name": "മലാവി"
+ },
+ "MY": {
+ "name": "മലേഷ്യ"
+ },
+ "MD": {
+ "name": "മൾഡോവ"
+ },
+ "MQ": {
+ "name": "മാർട്ടിനിക്ക്"
+ },
+ "MH": {
+ "name": "മാർഷൽ‍‍ ദ്വീപുകൾ"
+ },
+ "ML": {
+ "name": "മാലി"
+ },
+ "MV": {
+ "name": "മാലിദ്വീപ്"
+ },
+ "MK": {
+ "name": "മാസിഡോണിയ"
+ },
+ "MT": {
+ "name": "മാൾട്ട"
+ },
+ "MX": {
+ "name": "മെക്സിക്കോ"
+ },
+ "FM": {
+ "name": "മൈക്രോനേഷ്യ"
+ },
+ "MC": {
+ "name": "മൊണാക്കോ"
+ },
+ "MS": {
+ "name": "മൊണ്ടെസരത്ത്"
+ },
+ "MZ": {
+ "name": "മൊസാംബിക്ക്"
+ },
+ "MA": {
+ "name": "മൊറോക്കൊ"
+ },
+ "ME": {
+ "name": "മോണ്ടെനെഗ്രോ"
+ },
+ "MR": {
+ "name": "മൗറിറ്റാനിയ"
+ },
+ "MU": {
+ "name": "മൗറീഷ്യസ്"
+ },
+ "MM": {
+ "name": "മ്യാൻമാർ (ബർമ്മ)"
+ },
+ "UM": {
+ "name": "യു.എസ്. ദ്വീപസമൂഹങ്ങൾ"
+ },
+ "VI": {
+ "name": "യു.എസ്. വെർജിൻ ദ്വീപുകൾ"
+ },
+ "AE": {
+ "name": "യുണൈറ്റഡ് അറബ് എമിറൈറ്റ്‌സ്"
+ },
+ "YE": {
+ "name": "യെമൻ"
+ },
+ "LU": {
+ "name": "ലക്സംബർഗ്"
+ },
+ "LA": {
+ "name": "ലാവോസ്"
+ },
+ "LV": {
+ "name": "ലാറ്റ്വിയ"
+ },
+ "LI": {
+ "name": "ലിച്ചൺസ്റ്റൈൻ"
+ },
+ "LT": {
+ "name": "ലിത്വാനിയ"
+ },
+ "LY": {
+ "name": "ലിബിയ"
+ },
+ "LB": {
+ "name": "ലെബനൻ"
+ },
+ "LS": {
+ "name": "ലെസോതോ"
+ },
+ "LR": {
+ "name": "ലൈബീരിയ"
+ },
+ "VA": {
+ "name": "വത്തിക്കാൻ"
+ },
+ "VU": {
+ "name": "വന്വാതു"
+ },
+ "WF": {
+ "name": "വാലിസ് ആന്റ് ഫ്യൂച്യുന"
+ },
+ "VN": {
+ "name": "വിയറ്റ്നാം"
+ },
+ "VE": {
+ "name": "വെനിസ്വേല"
+ },
+ "LK": {
+ "name": "ശ്രീലങ്ക"
+ },
+ "WS": {
+ "name": "സമോവ"
+ },
+ "SM": {
+ "name": "സാൻ മറിനോ"
+ },
+ "ZM": {
+ "name": "സാംബിയ"
+ },
+ "ST": {
+ "name": "സാവോ ടോമും പ്രിൻസിപെയും"
+ },
+ "SX": {
+ "name": "സിന്റ് മാർട്ടെൻ"
+ },
+ "SG": {
+ "name": "സിംഗപ്പുർ"
+ },
+ "ZW": {
+ "name": "സിംബാബ്‌വേ"
+ },
+ "SL": {
+ "name": "സിയെറ ലിയോൺ"
+ },
+ "SY": {
+ "name": "സിറിയ"
+ },
+ "SD": {
+ "name": "സുഡാൻ"
+ },
+ "SR": {
+ "name": "സുരിനെയിം"
+ },
+ "SN": {
+ "name": "സെനഗൽ"
+ },
+ "CF": {
+ "name": "സെൻട്രൽ ആഫ്രിക്കൻ റിപ്പബ്ലിക്"
+ },
+ "KN": {
+ "name": "സെന്റ് കിറ്റ്‌സും നെവിസും"
+ },
+ "PM": {
+ "name": "സെന്റ് പിയറിയും മിക്കലണും"
+ },
+ "BL": {
+ "name": "സെന്റ് ബാർത്തലമി"
+ },
+ "MF": {
+ "name": "സെൻറ് മാർട്ടിൻ"
+ },
+ "LC": {
+ "name": "സെൻറ് ലൂസിയ"
+ },
+ "VC": {
+ "name": "സെന്റ് വിൻസെന്റും ഗ്രനെഡൈൻസും"
+ },
+ "SH": {
+ "name": "സെൻറ് ഹെലീന"
+ },
+ "EA": {
+ "name": "സെയൂത്ത ആൻഡ് മെലിയ"
+ },
+ "SC": {
+ "name": "സെയ്‌ഷെൽസ്"
+ },
+ "RS": {
+ "name": "സെർബിയ"
+ },
+ "CY": {
+ "name": "സൈപ്രസ്"
+ },
+ "SO": {
+ "name": "സോമാലിയ"
+ },
+ "SB": {
+ "name": "സോളമൻ‍ ദ്വീപുകൾ"
+ },
+ "SA": {
+ "name": "സൗദി അറേബ്യ"
+ },
+ "ES": {
+ "name": "സ്‌പെയിൻ"
+ },
+ "SK": {
+ "name": "സ്ലോവാക്യ"
+ },
+ "SI": {
+ "name": "സ്ലോവേനിയ"
+ },
+ "SJ": {
+ "name": "സ്വാൽബാഡും ജാൻ മായേനും"
+ },
+ "SZ": {
+ "name": "സ്വാസിലാൻറ്"
+ },
+ "CH": {
+ "name": "സ്വിറ്റ്സർലാൻഡ്"
+ },
+ "SE": {
+ "name": "സ്വീഡൻ"
+ },
+ "HU": {
+ "name": "ഹംഗറി"
+ },
+ "HT": {
+ "name": "ഹെയ്തി"
+ },
+ "HK": {
+ "name": "ഹോങ് കോങ് എസ്.ഏ.ആർ. ചൈന"
+ },
+ "HN": {
+ "name": "ഹോണ്ടുറാസ്"
+ },
+ "RU": {
+ "name": "റഷ്യ"
+ },
+ "RE": {
+ "name": "റീയൂണിയൻ"
+ },
+ "RW": {
+ "name": "റുവാണ്ട"
+ },
+ "RO": {
+ "name": "റൊമാനിയ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mn.json b/library/intl/resources/country/mn.json
new file mode 100644
index 000000000..7497cd6da
--- /dev/null
+++ b/library/intl/resources/country/mn.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австрали"
+ },
+ "AT": {
+ "name": "Австри"
+ },
+ "AZ": {
+ "name": "Азербайжан"
+ },
+ "AX": {
+ "name": "Аландын Арлууд"
+ },
+ "AL": {
+ "name": "Албани"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "US": {
+ "name": "Америкийн Нэгдсэн Улс"
+ },
+ "AS": {
+ "name": "Америкийн Самоа"
+ },
+ "AI": {
+ "name": "Ангила"
+ },
+ "AO": {
+ "name": "Ангол"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктик"
+ },
+ "AG": {
+ "name": "Антигуа ба Барбуда"
+ },
+ "VI": {
+ "name": "АНУ-ын Виржиний Арлууд"
+ },
+ "UM": {
+ "name": "АНУ-ын тойрсон арлууд"
+ },
+ "AE": {
+ "name": "Арабын Нэгдсэн Эмират"
+ },
+ "AR": {
+ "name": "Аргентин"
+ },
+ "AM": {
+ "name": "Армен"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AC": {
+ "name": "Аскенсион Арал"
+ },
+ "AF": {
+ "name": "Афганистан"
+ },
+ "BS": {
+ "name": "Багам"
+ },
+ "NP": {
+ "name": "Балба"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "EH": {
+ "name": "Баруун Сахар"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "Беларус"
+ },
+ "BE": {
+ "name": "Белги"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд"
+ },
+ "MO": {
+ "name": "БНХАУ-ын Тусгай захиргааны бүс Макао"
+ },
+ "HK": {
+ "name": "БНХАУ-ын Тусгай захиргааны бүс Хонг Конг"
+ },
+ "BG": {
+ "name": "Болгар"
+ },
+ "BO": {
+ "name": "Боливи"
+ },
+ "BA": {
+ "name": "Босни Херцеговин"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "Британийн Виржиний Арлууд"
+ },
+ "IO": {
+ "name": "Британийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүд"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "DO": {
+ "name": "Бүгд Найрамдах Доминикан"
+ },
+ "CZ": {
+ "name": "Бүгд Найрамдах Чех Улс"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан хот улс"
+ },
+ "VE": {
+ "name": "Венесуэл"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "Гамби"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделуп"
+ },
+ "GT": {
+ "name": "Гватемал"
+ },
+ "GN": {
+ "name": "Гвиней"
+ },
+ "GW": {
+ "name": "Гвиней-Бисау"
+ },
+ "DE": {
+ "name": "Герман"
+ },
+ "GG": {
+ "name": "Гернси"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "NL": {
+ "name": "Голланд"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "GR": {
+ "name": "Грек"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GE": {
+ "name": "Гүрж"
+ },
+ "DK": {
+ "name": "Дани"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего Гарсиа"
+ },
+ "DM": {
+ "name": "Доминик"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "JE": {
+ "name": "Жерси"
+ },
+ "ZM": {
+ "name": "Замби"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "CX": {
+ "name": "Зул Сарын Арал"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "ID": {
+ "name": "Индонези"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирланд"
+ },
+ "IS": {
+ "name": "Исланд"
+ },
+ "ES": {
+ "name": "Испани"
+ },
+ "IT": {
+ "name": "Итали"
+ },
+ "GB": {
+ "name": "Их Британи"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "JO": {
+ "name": "Йордан"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кайманы Арлууд"
+ },
+ "KH": {
+ "name": "Камбож"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канад"
+ },
+ "IC": {
+ "name": "Канарын арлууд"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "BQ": {
+ "name": "Карибын Нидерланд"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кени"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос (Кийлинг) Арлууд"
+ },
+ "CO": {
+ "name": "Колумб"
+ },
+ "KM": {
+ "name": "Коморос"
+ },
+ "CG": {
+ "name": "Конго Браззавиль"
+ },
+ "CD": {
+ "name": "Конго-Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста Рика"
+ },
+ "CI": {
+ "name": "Кот д’Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "Куракао"
+ },
+ "CK": {
+ "name": "Күүкийн Арлууд"
+ },
+ "KG": {
+ "name": "Кыргызстан"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латви"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либери"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "Ливи"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MR": {
+ "name": "Мавритани"
+ },
+ "MU": {
+ "name": "Мавритус"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотте"
+ },
+ "MK": {
+ "name": "Македон"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайз"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "Маршаллын Арлууд"
+ },
+ "MX": {
+ "name": "Мексик"
+ },
+ "FM": {
+ "name": "Микронези"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдав"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монгол"
+ },
+ "ME": {
+ "name": "Монтенегро"
+ },
+ "MS": {
+ "name": "Монтсеррат"
+ },
+ "MM": {
+ "name": "Мьянмар (Бурма)"
+ },
+ "IM": {
+ "name": "Мэн Арал"
+ },
+ "NA": {
+ "name": "Намиби"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигери"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуэ"
+ },
+ "NO": {
+ "name": "Норвеги"
+ },
+ "NF": {
+ "name": "Норфолк Арлууд"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "RU": {
+ "name": "Орос"
+ },
+ "ZA": {
+ "name": "Өмнөд Африк тив"
+ },
+ "GS": {
+ "name": "Өмнөд Жоржиа ба Өмнөд Сэндвичийн Арлууд"
+ },
+ "KR": {
+ "name": "Өмнөд Солонгос"
+ },
+ "SS": {
+ "name": "Өмнөд Судан"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестины нутаг дэвсгэрүүд"
+ },
+ "PA": {
+ "name": "Панам"
+ },
+ "PG": {
+ "name": "Папуа Шинэ Гвиней"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкэрн Арлууд"
+ },
+ "PL": {
+ "name": "Польш"
+ },
+ "PT": {
+ "name": "Португал"
+ },
+ "PR": {
+ "name": "Пуэрто Рико"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румын"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе ба Принсипи"
+ },
+ "SA": {
+ "name": "Саудын Араб"
+ },
+ "SZ": {
+ "name": "Свазиланд"
+ },
+ "SJ": {
+ "name": "Свалбард ба Ян Майен"
+ },
+ "SC": {
+ "name": "Сейшел"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "BL": {
+ "name": "Сент Бартельми"
+ },
+ "LC": {
+ "name": "Сент Люсиа"
+ },
+ "SH": {
+ "name": "Сент Хелена"
+ },
+ "KN": {
+ "name": "Сент-Киттс ба Невис"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "RS": {
+ "name": "Серби"
+ },
+ "EA": {
+ "name": "Сеута ба Мелилья"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Мартен"
+ },
+ "SY": {
+ "name": "Сири"
+ },
+ "SK": {
+ "name": "Словак"
+ },
+ "SI": {
+ "name": "Словени"
+ },
+ "SB": {
+ "name": "Соломоны Арлууд"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "VC": {
+ "name": "Сэнт Винсэнт ба Гренадин"
+ },
+ "PM": {
+ "name": "Сэнт Пьер ба Микелон"
+ },
+ "TJ": {
+ "name": "Тажикистан"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "Танзани"
+ },
+ "TL": {
+ "name": "Тимор-Лесте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "CF": {
+ "name": "Төв Африкийн Бүгд Найрамдах Улс"
+ },
+ "TT": {
+ "name": "Тринидад ба Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Кунья"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TR": {
+ "name": "Турк"
+ },
+ "TC": {
+ "name": "Турк ба Кайкосын Арлууд"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "UA": {
+ "name": "Украйн"
+ },
+ "HU": {
+ "name": "Унгар"
+ },
+ "WF": {
+ "name": "Уоллис ба Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фароэ Арлууд"
+ },
+ "FJ": {
+ "name": "Фижи"
+ },
+ "PH": {
+ "name": "Филиппин"
+ },
+ "FI": {
+ "name": "Финланд"
+ },
+ "FK": {
+ "name": "Фолькландын Арлууд"
+ },
+ "FR": {
+ "name": "Франц"
+ },
+ "GF": {
+ "name": "Францын Гайана"
+ },
+ "TF": {
+ "name": "Францын өмнөд газар нутаг"
+ },
+ "PF": {
+ "name": "Францын Полинез"
+ },
+ "MP": {
+ "name": "Хойд Марианы Арлууд"
+ },
+ "KP": {
+ "name": "Хойд Солонгос"
+ },
+ "HR": {
+ "name": "Хорват"
+ },
+ "CN": {
+ "name": "Хятад"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "SE": {
+ "name": "Швед"
+ },
+ "CH": {
+ "name": "Швейцари"
+ },
+ "NZ": {
+ "name": "Шинэ Зеланд"
+ },
+ "NC": {
+ "name": "Шинэ Каледони"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваторын Гвиней"
+ },
+ "SV": {
+ "name": "Эль Сальвадор"
+ },
+ "IN": {
+ "name": "Энэтхэг"
+ },
+ "ER": {
+ "name": "Эритри"
+ },
+ "EE": {
+ "name": "Эстон"
+ },
+ "ET": {
+ "name": "Этиоп"
+ },
+ "JM": {
+ "name": "Ямайк"
+ },
+ "JP": {
+ "name": "Япон"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mr.json b/library/intl/resources/country/mr.json
new file mode 100644
index 000000000..b8eb8c84c
--- /dev/null
+++ b/library/intl/resources/country/mr.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AI": {
+ "name": "अँग्विला"
+ },
+ "AQ": {
+ "name": "अंटार्क्टिका"
+ },
+ "AG": {
+ "name": "अँटिग्वा आणि बर्बुडा"
+ },
+ "AD": {
+ "name": "अँडोरा"
+ },
+ "AZ": {
+ "name": "अझरबैजान"
+ },
+ "AF": {
+ "name": "अफगाणिस्तान"
+ },
+ "AS": {
+ "name": "अमेरिकन सामोआ"
+ },
+ "AW": {
+ "name": "अरुबा"
+ },
+ "AR": {
+ "name": "अर्जेंटिना"
+ },
+ "AM": {
+ "name": "अर्मेनिया"
+ },
+ "SV": {
+ "name": "अल साल्वाडोर"
+ },
+ "DZ": {
+ "name": "अल्जीरिया"
+ },
+ "AL": {
+ "name": "अल्बानिया"
+ },
+ "AX": {
+ "name": "अ‍ॅलँड बेटे"
+ },
+ "AC": {
+ "name": "अ‍ॅसेन्शियन बेट"
+ },
+ "IS": {
+ "name": "आइसलँड"
+ },
+ "IE": {
+ "name": "आयर्लंड"
+ },
+ "CI": {
+ "name": "आयव्हरी कोस्ट"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "EC": {
+ "name": "इक्वाडोर"
+ },
+ "GQ": {
+ "name": "इक्वेटोरियल गिनी"
+ },
+ "EG": {
+ "name": "इजिप्त"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ET": {
+ "name": "इथिओपिया"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "IL": {
+ "name": "इस्त्राइल"
+ },
+ "IM": {
+ "name": "इस्ले ऑफ मॅन"
+ },
+ "IR": {
+ "name": "ईराण"
+ },
+ "UZ": {
+ "name": "उझबेकिस्तान"
+ },
+ "KP": {
+ "name": "उत्तर कोरिया"
+ },
+ "MP": {
+ "name": "उत्तरी मारियाना बेटे"
+ },
+ "UY": {
+ "name": "उरुग्वे"
+ },
+ "ER": {
+ "name": "एरिट्रिया"
+ },
+ "EE": {
+ "name": "एस्टोनिया"
+ },
+ "AT": {
+ "name": "ऑस्ट्रिया"
+ },
+ "AU": {
+ "name": "ऑस्ट्रेलिया"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KH": {
+ "name": "कंबोडिया"
+ },
+ "KZ": {
+ "name": "कझाकस्तान"
+ },
+ "QA": {
+ "name": "कतार"
+ },
+ "CD": {
+ "name": "काँगो - किंशासा"
+ },
+ "CG": {
+ "name": "काँगो - ब्राझाविले"
+ },
+ "KG": {
+ "name": "किरगिझस्तान"
+ },
+ "KI": {
+ "name": "किरीबाटी"
+ },
+ "CK": {
+ "name": "कुक बेटे"
+ },
+ "CW": {
+ "name": "कुरॅको"
+ },
+ "KW": {
+ "name": "कुवेत"
+ },
+ "CA": {
+ "name": "कॅनडा"
+ },
+ "IC": {
+ "name": "कॅनरी बेटे"
+ },
+ "CM": {
+ "name": "कॅमेरून"
+ },
+ "BQ": {
+ "name": "कॅरिबियन नेदरलँड्स"
+ },
+ "CF": {
+ "name": "केंद्रीय अफ्रिकी प्रजासत्ताक"
+ },
+ "KE": {
+ "name": "केनिया"
+ },
+ "CV": {
+ "name": "केप व्हर्डे"
+ },
+ "KY": {
+ "name": "केमन बेटे"
+ },
+ "CC": {
+ "name": "कोकोस (कीलिंग) बेटे"
+ },
+ "KM": {
+ "name": "कोमोरोज"
+ },
+ "CO": {
+ "name": "कोलम्बिया"
+ },
+ "XK": {
+ "name": "कोसोव्हो"
+ },
+ "CR": {
+ "name": "कोस्टा रिका"
+ },
+ "CU": {
+ "name": "क्यूबा"
+ },
+ "HR": {
+ "name": "क्रोएशिया"
+ },
+ "CX": {
+ "name": "ख्रिसमस बेट"
+ },
+ "GY": {
+ "name": "गयाना"
+ },
+ "GM": {
+ "name": "गाम्बिया"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गुआम"
+ },
+ "GA": {
+ "name": "गॅबॉन"
+ },
+ "GL": {
+ "name": "ग्रीनलंड"
+ },
+ "GR": {
+ "name": "ग्रीस"
+ },
+ "GD": {
+ "name": "ग्रेनेडा"
+ },
+ "GT": {
+ "name": "ग्वाटेमाला"
+ },
+ "GP": {
+ "name": "ग्वाडेलोउपे"
+ },
+ "GG": {
+ "name": "ग्वेर्नसे"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "JP": {
+ "name": "जपान"
+ },
+ "JM": {
+ "name": "जमैका"
+ },
+ "DE": {
+ "name": "जर्मनी"
+ },
+ "JE": {
+ "name": "जर्सी"
+ },
+ "DJ": {
+ "name": "जिबौटी"
+ },
+ "GI": {
+ "name": "जिब्राल्टर"
+ },
+ "GE": {
+ "name": "जॉर्जिया"
+ },
+ "JO": {
+ "name": "जॉर्डन"
+ },
+ "ZM": {
+ "name": "झाम्बिया"
+ },
+ "ZW": {
+ "name": "झिम्बाब्वे"
+ },
+ "CZ": {
+ "name": "झेक प्रजासत्ताक"
+ },
+ "TC": {
+ "name": "टर्क्स आणि कैकोस बेटे"
+ },
+ "TZ": {
+ "name": "टांझानिया"
+ },
+ "TV": {
+ "name": "टुवालु"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "ट्यूनिशिया"
+ },
+ "TA": {
+ "name": "ट्रिस्टन दा कुन्हा"
+ },
+ "DK": {
+ "name": "डेन्मार्क"
+ },
+ "DO": {
+ "name": "डोमिनिकन प्रजासत्ताक"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TJ": {
+ "name": "ताजिकिस्तान"
+ },
+ "TM": {
+ "name": "तुर्कमेनिस्तान"
+ },
+ "TR": {
+ "name": "तुर्की"
+ },
+ "TW": {
+ "name": "तैवान"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "त्रिनिदाद आणि टोबॅगो"
+ },
+ "TH": {
+ "name": "थायलंड"
+ },
+ "ZA": {
+ "name": "दक्षिण आफ्रिका"
+ },
+ "KR": {
+ "name": "दक्षिण कोरिया"
+ },
+ "GS": {
+ "name": "दक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटे"
+ },
+ "SS": {
+ "name": "दक्षिण सुदान"
+ },
+ "DG": {
+ "name": "दिएगो गार्सिया"
+ },
+ "NR": {
+ "name": "नऊरु"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NA": {
+ "name": "नामिबिया"
+ },
+ "NG": {
+ "name": "नायजेरिया"
+ },
+ "NI": {
+ "name": "निकाराग्वा"
+ },
+ "NU": {
+ "name": "नीयू"
+ },
+ "NL": {
+ "name": "नेदरलँड"
+ },
+ "NP": {
+ "name": "नेपाळ"
+ },
+ "NF": {
+ "name": "नॉरफॉक बेट"
+ },
+ "NO": {
+ "name": "नॉर्वे"
+ },
+ "NC": {
+ "name": "न्यू कॅलेडोनिया"
+ },
+ "NZ": {
+ "name": "न्यूझीलंड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PY": {
+ "name": "पराग्वे"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पश्चिम सहारा"
+ },
+ "PK": {
+ "name": "पाकिस्तान"
+ },
+ "PG": {
+ "name": "पापुआ न्यू गिनी"
+ },
+ "PN": {
+ "name": "पिटकैर्न बेटे"
+ },
+ "TL": {
+ "name": "पूर्व तिमोर"
+ },
+ "PS": {
+ "name": "पॅलेस्टिनियन प्रदेश"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PT": {
+ "name": "पोर्तुगाल"
+ },
+ "PL": {
+ "name": "पोलंड"
+ },
+ "PR": {
+ "name": "प्युएर्तो रिको"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिनलंड"
+ },
+ "PH": {
+ "name": "फिलिपिन्स"
+ },
+ "FO": {
+ "name": "फेरो बेटे"
+ },
+ "FK": {
+ "name": "फॉकलंड बेटे"
+ },
+ "FR": {
+ "name": "फ्रान्स"
+ },
+ "GF": {
+ "name": "फ्रेंच गयाना"
+ },
+ "TF": {
+ "name": "फ्रेंच दाक्षिणात्य प्रदेश"
+ },
+ "PF": {
+ "name": "फ्रेंच पॉलिनेशिया"
+ },
+ "BM": {
+ "name": "बर्मुडा"
+ },
+ "BZ": {
+ "name": "बलिझ"
+ },
+ "BG": {
+ "name": "बल्गेरिया"
+ },
+ "BS": {
+ "name": "बहामाज"
+ },
+ "BH": {
+ "name": "बहारीन"
+ },
+ "BD": {
+ "name": "बांगलादेश"
+ },
+ "BB": {
+ "name": "बार्बाडोस"
+ },
+ "BI": {
+ "name": "बुरुंडी"
+ },
+ "BF": {
+ "name": "बुर्किना फासो"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BE": {
+ "name": "बेल्जियम"
+ },
+ "BW": {
+ "name": "बोट्सवाना"
+ },
+ "BO": {
+ "name": "बोलिव्हिया"
+ },
+ "BA": {
+ "name": "बोस्निया अणि हर्जेगोविना"
+ },
+ "BR": {
+ "name": "ब्राझिल"
+ },
+ "VG": {
+ "name": "ब्रिटिश व्हर्जिन बेटे"
+ },
+ "IO": {
+ "name": "ब्रिटिश हिंदी महासागर क्षेत्र"
+ },
+ "BN": {
+ "name": "ब्रुनेई"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूतान"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MO": {
+ "name": "मकाओ एसएआर चीन"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "MG": {
+ "name": "मादागास्कर"
+ },
+ "FM": {
+ "name": "मायक्रोनेशिया"
+ },
+ "YT": {
+ "name": "मायोट्टे"
+ },
+ "MQ": {
+ "name": "मार्टिनिक"
+ },
+ "MH": {
+ "name": "मार्शल बेटे"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "माल्टा"
+ },
+ "MK": {
+ "name": "मॅसेडोनिया"
+ },
+ "MX": {
+ "name": "मेक्सिको"
+ },
+ "MS": {
+ "name": "मॉन्ट्सेराट"
+ },
+ "MR": {
+ "name": "मॉरिटानिया"
+ },
+ "MU": {
+ "name": "मॉरिशस"
+ },
+ "ME": {
+ "name": "मोंटेनेग्रो"
+ },
+ "MZ": {
+ "name": "मोझाम्बिक"
+ },
+ "MC": {
+ "name": "मोनॅको"
+ },
+ "MA": {
+ "name": "मोरोक्को"
+ },
+ "MD": {
+ "name": "मोल्डोव्हा"
+ },
+ "MM": {
+ "name": "म्यानमार (बर्मा)"
+ },
+ "UA": {
+ "name": "युक्रेन"
+ },
+ "UG": {
+ "name": "युगांडा"
+ },
+ "GB": {
+ "name": "युनायटेड किंगडम"
+ },
+ "US": {
+ "name": "युनायटेड स्टेट्स"
+ },
+ "UM": {
+ "name": "यू.एस. आउटलाइंग बेटे"
+ },
+ "VI": {
+ "name": "यू.एस. व्हर्जिन बेटे"
+ },
+ "YE": {
+ "name": "येमेन"
+ },
+ "RW": {
+ "name": "रवांडा"
+ },
+ "RU": {
+ "name": "रशिया"
+ },
+ "RE": {
+ "name": "रियुनियन"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लक्झेंबर्ग"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लात्विया"
+ },
+ "LR": {
+ "name": "लायबेरिया"
+ },
+ "LI": {
+ "name": "लिक्टेनस्टाइन"
+ },
+ "LT": {
+ "name": "लिथुआनिया"
+ },
+ "LY": {
+ "name": "लिबिया"
+ },
+ "LB": {
+ "name": "लेबनॉन"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "VU": {
+ "name": "वानौटु"
+ },
+ "WF": {
+ "name": "वालिस आणि फ्यूचूना"
+ },
+ "VN": {
+ "name": "व्हिएतनाम"
+ },
+ "VA": {
+ "name": "व्हॅटिकन सिटी"
+ },
+ "VE": {
+ "name": "व्हेनेझुएला"
+ },
+ "LK": {
+ "name": "श्रीलंका"
+ },
+ "AE": {
+ "name": "संयुक्त अरब अमीरात"
+ },
+ "RS": {
+ "name": "सर्बिया"
+ },
+ "ST": {
+ "name": "साओ टोम आणि प्रिंसिपे"
+ },
+ "WS": {
+ "name": "सामोआ"
+ },
+ "CY": {
+ "name": "सायप्रस"
+ },
+ "SG": {
+ "name": "सिंगापूर"
+ },
+ "SX": {
+ "name": "सिंट मार्टेन"
+ },
+ "SL": {
+ "name": "सिएरा लिओन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SD": {
+ "name": "सुदान"
+ },
+ "SR": {
+ "name": "सुरिनाम"
+ },
+ "SM": {
+ "name": "सॅन मरीनो"
+ },
+ "KN": {
+ "name": "सेंट किट्स आणि नेव्हिस"
+ },
+ "PM": {
+ "name": "सेंट पियरे आणि मिक्वेलोन"
+ },
+ "BL": {
+ "name": "सेंट बार्थेलेमी"
+ },
+ "MF": {
+ "name": "सेंट मार्टिन"
+ },
+ "LC": {
+ "name": "सेंट ल्यूसिया"
+ },
+ "VC": {
+ "name": "सेंट व्हिन्सेंट आणि ग्रेनडाइन्स"
+ },
+ "SH": {
+ "name": "सेंट हेलेना"
+ },
+ "SN": {
+ "name": "सेनेगल"
+ },
+ "SC": {
+ "name": "सेशेल्स"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमन बेटे"
+ },
+ "SA": {
+ "name": "सौदी अरब"
+ },
+ "ES": {
+ "name": "स्पेन"
+ },
+ "EA": {
+ "name": "स्यूटा आणि मेलिला"
+ },
+ "SK": {
+ "name": "स्लोव्हाकिया"
+ },
+ "SI": {
+ "name": "स्लोव्हेनिया"
+ },
+ "SZ": {
+ "name": "स्वाझिलँड"
+ },
+ "SJ": {
+ "name": "स्वालबर्ड आणि जान मायेन"
+ },
+ "CH": {
+ "name": "स्वित्झर्लंड"
+ },
+ "SE": {
+ "name": "स्वीडन"
+ },
+ "HU": {
+ "name": "हंगेरी"
+ },
+ "HK": {
+ "name": "हाँगकाँग एसएआर चीन"
+ },
+ "HT": {
+ "name": "हैती"
+ },
+ "HN": {
+ "name": "होंडुरास"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ms.json b/library/intl/resources/country/ms.json
new file mode 100644
index 000000000..736c47018
--- /dev/null
+++ b/library/intl/resources/country/ms.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Selatan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerika Syarikat"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua dan Barbuda"
+ },
+ "SA": {
+ "name": "Arab Saudi"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "NL": {
+ "name": "Belanda"
+ },
+ "BQ": {
+ "name": "Belanda Caribbean"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia dan Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "EA": {
+ "name": "Ceuta dan Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Cote d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curacao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiriah Arab Bersatu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana Perancis"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Khatulistiwa"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Jepun"
+ },
+ "DE": {
+ "name": "Jerman"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KH": {
+ "name": "Kemboja"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "AX": {
+ "name": "Kepulauan Aland"
+ },
+ "IC": {
+ "name": "Kepulauan Canary"
+ },
+ "KY": {
+ "name": "Kepulauan Cayman"
+ },
+ "CC": {
+ "name": "Kepulauan Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Kepulauan Cook"
+ },
+ "FK": {
+ "name": "Kepulauan Falkland"
+ },
+ "FO": {
+ "name": "Kepulauan Faroe"
+ },
+ "GS": {
+ "name": "Kepulauan Georgia Selatan & Sandwich Selatan"
+ },
+ "MP": {
+ "name": "Kepulauan Mariana Utara"
+ },
+ "MH": {
+ "name": "Kepulauan Marshall"
+ },
+ "PN": {
+ "name": "Kepulauan Pitcairn"
+ },
+ "SB": {
+ "name": "Kepulauan Solomon"
+ },
+ "UM": {
+ "name": "Kepulauan Terpencil A.S."
+ },
+ "TC": {
+ "name": "Kepulauan Turks dan Caicos"
+ },
+ "VI": {
+ "name": "Kepulauan Virgin A.S."
+ },
+ "VG": {
+ "name": "Kepulauan Virgin British"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KR": {
+ "name": "Korea Selatan"
+ },
+ "KP": {
+ "name": "Korea Utara"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "VA": {
+ "name": "Kota Vatican"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MA": {
+ "name": "Maghribi"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "EG": {
+ "name": "Mesir"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "FR": {
+ "name": "Perancis"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PF": {
+ "name": "Polinesia Perancis"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "AC": {
+ "name": "Pulau Ascension"
+ },
+ "CX": {
+ "name": "Pulau Krismas"
+ },
+ "NF": {
+ "name": "Pulau Norfolk"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Republik Afrika Tengah"
+ },
+ "CZ": {
+ "name": "Republik Czech"
+ },
+ "DO": {
+ "name": "Republik Dominica"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Barat"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts dan Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre dan Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent dan Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome dan Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "ES": {
+ "name": "Sepanyol"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Selatan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard dan Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad dan Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis dan Futuna"
+ },
+ "IO": {
+ "name": "Wilayah Lautan Hindi British"
+ },
+ "PS": {
+ "name": "Wilayah Palestin"
+ },
+ "TF": {
+ "name": "Wilayah Selatan Perancis"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "GR": {
+ "name": "Yunani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mt.json b/library/intl/resources/country/mt.json
new file mode 100644
index 000000000..e471f732e
--- /dev/null
+++ b/library/intl/resources/country/mt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika t’Isfel"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alġerija"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwilla"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Arġentina"
+ },
+ "AM": {
+ "name": "Armenja"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awstralja"
+ },
+ "AT": {
+ "name": "Awstrija"
+ },
+ "AZ": {
+ "name": "Ażerbajġan"
+ },
+ "BS": {
+ "name": "Baħamas"
+ },
+ "BH": {
+ "name": "Baħrajn"
+ },
+ "BD": {
+ "name": "Bangladexx"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belġju"
+ },
+ "BZ": {
+ "name": "Beliże"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorussja"
+ },
+ "BO": {
+ "name": "Bolivja"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Bożnija Ħerżegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulgarija"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Ċad"
+ },
+ "CL": {
+ "name": "Ċili"
+ },
+ "CY": {
+ "name": "Ċipru"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Eġittu"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirati Għarab Maqgħuda"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonja"
+ },
+ "ET": {
+ "name": "Etijopja"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FJ": {
+ "name": "Fiġi"
+ },
+ "PH": {
+ "name": "Filippini"
+ },
+ "FI": {
+ "name": "Finlandja"
+ },
+ "FR": {
+ "name": "Franza"
+ },
+ "JM": {
+ "name": "Ġamajka"
+ },
+ "DJ": {
+ "name": "Ġibuti"
+ },
+ "JO": {
+ "name": "Ġordan"
+ },
+ "GE": {
+ "name": "Ġorġja"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambja"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GQ": {
+ "name": "Ginea Ekwatorjali"
+ },
+ "GW": {
+ "name": "Ginea-Bissaw"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GR": {
+ "name": "Greċja"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandja"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "GF": {
+ "name": "Gujana Franċiża"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "AX": {
+ "name": "Gżejjer Aland"
+ },
+ "FO": {
+ "name": "Gżejjer Faroe"
+ },
+ "KY": {
+ "name": "Gżejjer Kajmani"
+ },
+ "MP": {
+ "name": "Gżejjer Marjana ta’ Fuq"
+ },
+ "MH": {
+ "name": "Gżejjer ta’ Marshall"
+ },
+ "SA": {
+ "name": "Għarabja Sawdita"
+ },
+ "HT": {
+ "name": "Ħaiti"
+ },
+ "HN": {
+ "name": "Ħonduras"
+ },
+ "HK": {
+ "name": "Ħong Kong S.A.R. Ċina"
+ },
+ "CN": {
+ "name": "Iċ-Ċina"
+ },
+ "BR": {
+ "name": "Il-Brażil"
+ },
+ "JP": {
+ "name": "Il-Ġappun"
+ },
+ "DE": {
+ "name": "Il-Ġermanja"
+ },
+ "ID": {
+ "name": "Indoneżja"
+ },
+ "RU": {
+ "name": "Ir-Russja"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Iżrael"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "KZ": {
+ "name": "Każakstan"
+ },
+ "KE": {
+ "name": "Kenja"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbja"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KR": {
+ "name": "Koreja t’Isfel"
+ },
+ "KP": {
+ "name": "Koreja ta’ Fuq"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CI": {
+ "name": "Kosta ta’ l-Avorju"
+ },
+ "HR": {
+ "name": "Kroazja"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwajt"
+ },
+ "IN": {
+ "name": "L-Indja"
+ },
+ "GB": {
+ "name": "L-Ingilterra"
+ },
+ "US": {
+ "name": "L-Istati Uniti"
+ },
+ "IT": {
+ "name": "L-Italja"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvja"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanu"
+ },
+ "LR": {
+ "name": "Liberja"
+ },
+ "LY": {
+ "name": "Libja"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwanja"
+ },
+ "LU": {
+ "name": "Lussemburgu"
+ },
+ "MK": {
+ "name": "Maċedonja"
+ },
+ "MO": {
+ "name": "Macao S.A.R., China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotte"
+ },
+ "MY": {
+ "name": "Malasja"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MD": {
+ "name": "Maldova"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokk"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mawritanja"
+ },
+ "MU": {
+ "name": "Mawrizju"
+ },
+ "MX": {
+ "name": "Messiku"
+ },
+ "FM": {
+ "name": "Mikronesja"
+ },
+ "MM": {
+ "name": "Mjanmar"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolja"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Możambik"
+ },
+ "NA": {
+ "name": "Namibja"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NE": {
+ "name": "Niġer"
+ },
+ "NG": {
+ "name": "Niġerja"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "NO": {
+ "name": "Norveġja"
+ },
+ "NL": {
+ "name": "Olanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa-Ginea Ġdida"
+ },
+ "PY": {
+ "name": "Paragwaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesja Franċiża"
+ },
+ "PL": {
+ "name": "Polonja"
+ },
+ "PT": {
+ "name": "Portugall"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Repubblika Afrikana Ċentrali"
+ },
+ "CZ": {
+ "name": "Repubblika Ċeka"
+ },
+ "DO": {
+ "name": "Republikka Domenikana"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumanija"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara tal-Punent"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Luċija"
+ },
+ "ST": {
+ "name": "Sao Tome and Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirja"
+ },
+ "SK": {
+ "name": "Slovakkja"
+ },
+ "SI": {
+ "name": "Slovenja"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalja"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanja"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "CH": {
+ "name": "Svizzera"
+ },
+ "SZ": {
+ "name": "Sważiland"
+ },
+ "TJ": {
+ "name": "Taġikistan"
+ },
+ "TH": {
+ "name": "Tajlandja"
+ },
+ "TW": {
+ "name": "Tajwan"
+ },
+ "TZ": {
+ "name": "Tanżanija"
+ },
+ "TF": {
+ "name": "Territorji Franċiżi ta’ Nofsinhar"
+ },
+ "PS": {
+ "name": "Territorju Palestinjan"
+ },
+ "TL": {
+ "name": "Timor tal-Lvant"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelaw"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad u Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneż"
+ },
+ "TR": {
+ "name": "Turkija"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungerija"
+ },
+ "UM": {
+ "name": "United States Minor Outlying Islands"
+ },
+ "UY": {
+ "name": "Urugwaj"
+ },
+ "UZ": {
+ "name": "Użbekistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezwela"
+ },
+ "VN": {
+ "name": "Vjetnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "ZM": {
+ "name": "Żambja"
+ },
+ "ZW": {
+ "name": "Żimbabwe"
+ },
+ "SE": {
+ "name": "Żvezja"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mua.json b/library/intl/resources/country/mua.json
new file mode 100644
index 000000000..6bfd0b550
--- /dev/null
+++ b/library/intl/resources/country/mua.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "afghanistaŋ"
+ },
+ "ZA": {
+ "name": "Afrika nekǝsǝŋ"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "albaniya"
+ },
+ "DZ": {
+ "name": "algeriya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "andorra"
+ },
+ "IO": {
+ "name": "anglofoŋ ma Indiya"
+ },
+ "AO": {
+ "name": "angola"
+ },
+ "AI": {
+ "name": "anguiya"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiguan ne Barbuda"
+ },
+ "AR": {
+ "name": "argentiniya"
+ },
+ "AM": {
+ "name": "armeniya"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "australiya"
+ },
+ "AT": {
+ "name": "austriya"
+ },
+ "AZ": {
+ "name": "azerbaijaŋ"
+ },
+ "BS": {
+ "name": "bahamas"
+ },
+ "BH": {
+ "name": "bahraiŋ"
+ },
+ "BD": {
+ "name": "bangladeshiya"
+ },
+ "BB": {
+ "name": "barbadiya"
+ },
+ "BY": {
+ "name": "belarussiya"
+ },
+ "BE": {
+ "name": "belgika"
+ },
+ "BZ": {
+ "name": "beliziya"
+ },
+ "BJ": {
+ "name": "beniŋ"
+ },
+ "BM": {
+ "name": "bermudiya"
+ },
+ "BO": {
+ "name": "boliviya"
+ },
+ "BA": {
+ "name": "bosniya ne Herzegovina"
+ },
+ "BW": {
+ "name": "botswana"
+ },
+ "BR": {
+ "name": "brazilya"
+ },
+ "BN": {
+ "name": "bruniya"
+ },
+ "BG": {
+ "name": "bulgariya"
+ },
+ "BF": {
+ "name": "burkina Faso"
+ },
+ "BI": {
+ "name": "burundi"
+ },
+ "BT": {
+ "name": "butaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "centrafrika"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Daŋmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominik"
+ },
+ "EC": {
+ "name": "Ekwatǝr"
+ },
+ "ES": {
+ "name": "Espaŋiya"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Filipiŋ"
+ },
+ "FR": {
+ "name": "Franssǝ"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboŋ"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgiya"
+ },
+ "DE": {
+ "name": "Germaniya"
+ },
+ "GD": {
+ "name": "Grenadǝ"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine ma Bissao"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungriya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japaŋ"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniya"
+ },
+ "NC": {
+ "name": "Kaledoniya mafuu"
+ },
+ "KH": {
+ "name": "kambodiya"
+ },
+ "CM": {
+ "name": "kameruŋ"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "CV": {
+ "name": "kap ma laŋne"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KY": {
+ "name": "kayman ma laŋne"
+ },
+ "KZ": {
+ "name": "Kazakstaŋ"
+ },
+ "KG": {
+ "name": "Kirgizstaŋ"
+ },
+ "CO": {
+ "name": "kolombiya"
+ },
+ "KM": {
+ "name": "komora"
+ },
+ "CG": {
+ "name": "kongo"
+ },
+ "CK": {
+ "name": "kook ma laŋne"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "kosta Rika"
+ },
+ "HR": {
+ "name": "kroatiya"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LV": {
+ "name": "Letoniya"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Lichtǝnsteiŋ"
+ },
+ "LT": {
+ "name": "Lituaniya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedoniya"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MY": {
+ "name": "Malaysiya"
+ },
+ "MV": {
+ "name": "Maldivǝ"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MR": {
+ "name": "Mauritaniya"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Micronesiya"
+ },
+ "MD": {
+ "name": "Moldoviya"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niwe"
+ },
+ "NF": {
+ "name": "Norfolk ma laŋne"
+ },
+ "NO": {
+ "name": "Norvegǝ"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "PK": {
+ "name": "Pakistaŋ"
+ },
+ "PG": {
+ "name": "Papuasiya Guine mafuu"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PL": {
+ "name": "Pologŋ"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Russiya"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SC": {
+ "name": "Saichel"
+ },
+ "AS": {
+ "name": "samoa Amerika"
+ },
+ "ST": {
+ "name": "Sao Tome ne Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "VG": {
+ "name": "ser Anglofon ma laŋne"
+ },
+ "CI": {
+ "name": "ser Ivoiriya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "VI": {
+ "name": "Sǝr amerika ma laŋne"
+ },
+ "GB": {
+ "name": "Sǝr Anglofoŋ"
+ },
+ "SA": {
+ "name": "Sǝr Arabiya"
+ },
+ "AE": {
+ "name": "Sǝr Arabiya ma taini"
+ },
+ "DO": {
+ "name": "Sǝr Dominik ma lii"
+ },
+ "EG": {
+ "name": "Sǝr Egypt"
+ },
+ "ER": {
+ "name": "Sǝr Eritre"
+ },
+ "FJ": {
+ "name": "Sǝr Fiji"
+ },
+ "FI": {
+ "name": "Sǝr Finland"
+ },
+ "GI": {
+ "name": "Sǝr Gibraltar"
+ },
+ "GR": {
+ "name": "Sǝr Grek"
+ },
+ "GL": {
+ "name": "Sǝr Groenland"
+ },
+ "GQ": {
+ "name": "Sǝr Guine"
+ },
+ "GF": {
+ "name": "Sǝr Guyana ma Franssǝ"
+ },
+ "GP": {
+ "name": "Sǝr Gwadeloupǝ"
+ },
+ "HT": {
+ "name": "Sǝr Haiti"
+ },
+ "SH": {
+ "name": "Sǝr Helena"
+ },
+ "HN": {
+ "name": "Sǝr Honduras"
+ },
+ "IN": {
+ "name": "Sǝr Indǝ"
+ },
+ "IE": {
+ "name": "Sǝr Ireland"
+ },
+ "IS": {
+ "name": "Sǝr Island"
+ },
+ "IL": {
+ "name": "Sǝr Israel"
+ },
+ "KE": {
+ "name": "Sǝr Kenya"
+ },
+ "KI": {
+ "name": "Sǝr Kiribati"
+ },
+ "CD": {
+ "name": "Sǝr Kongo ma dii ne zair"
+ },
+ "KP": {
+ "name": "Sǝr Kore fah sǝŋ"
+ },
+ "KR": {
+ "name": "Sǝr Kore nekǝsǝŋ"
+ },
+ "KW": {
+ "name": "Sǝr Kowait"
+ },
+ "KN": {
+ "name": "Sǝr Kristof ne Nievǝ"
+ },
+ "LK": {
+ "name": "Sǝr Lanka"
+ },
+ "LA": {
+ "name": "Sǝr Laos"
+ },
+ "LS": {
+ "name": "Sǝr Lesotho"
+ },
+ "LC": {
+ "name": "Sǝr Lucia"
+ },
+ "LU": {
+ "name": "Sǝr Luxemburg"
+ },
+ "NL": {
+ "name": "Sǝr ma kasǝŋ"
+ },
+ "MW": {
+ "name": "Sǝr Malawi"
+ },
+ "ML": {
+ "name": "Sǝr Mali"
+ },
+ "FK": {
+ "name": "Sǝr malouniya ma laŋne"
+ },
+ "MT": {
+ "name": "Sǝr Malta"
+ },
+ "MP": {
+ "name": "Sǝr Maria ma laŋne"
+ },
+ "SM": {
+ "name": "Sǝr Marino"
+ },
+ "MH": {
+ "name": "Sǝr Marshall ma laŋne"
+ },
+ "MU": {
+ "name": "Sǝr Mauricǝ"
+ },
+ "MS": {
+ "name": "Sǝr Montserrat"
+ },
+ "MM": {
+ "name": "Sǝr Myanmar"
+ },
+ "NR": {
+ "name": "Sǝr Nauru"
+ },
+ "NP": {
+ "name": "Sǝr Nepal"
+ },
+ "NE": {
+ "name": "Sǝr Niger"
+ },
+ "PW": {
+ "name": "Sǝr Palau"
+ },
+ "PS": {
+ "name": "Sǝr Palestiniya"
+ },
+ "PA": {
+ "name": "Sǝr Panama"
+ },
+ "PM": {
+ "name": "Sǝr Pǝtar ne Mikǝlon"
+ },
+ "PF": {
+ "name": "Sǝr Polynesiya ma Franssǝ"
+ },
+ "PT": {
+ "name": "Sǝr Portugal"
+ },
+ "RE": {
+ "name": "Sǝr Reunion"
+ },
+ "SB": {
+ "name": "Sǝr Salomon ma laŋne"
+ },
+ "SV": {
+ "name": "Sǝr Salvador"
+ },
+ "WS": {
+ "name": "Sǝr Samoa"
+ },
+ "SE": {
+ "name": "Sǝr Sued"
+ },
+ "SR": {
+ "name": "Sǝr Surinam"
+ },
+ "SZ": {
+ "name": "Sǝr Swaziland"
+ },
+ "CH": {
+ "name": "Sǝr Swiss"
+ },
+ "CZ": {
+ "name": "Sǝr Syek"
+ },
+ "TG": {
+ "name": "Sǝr Togo"
+ },
+ "TK": {
+ "name": "Sǝr Tokelau"
+ },
+ "TO": {
+ "name": "Sǝr Tonga"
+ },
+ "TV": {
+ "name": "Sǝr Tuvalu"
+ },
+ "VU": {
+ "name": "Sǝr Vanuatu"
+ },
+ "VE": {
+ "name": "Sǝr Venezuela"
+ },
+ "VN": {
+ "name": "Sǝr Vietnam"
+ },
+ "VC": {
+ "name": "Sǝr Vinceŋ ne Grenadiŋ"
+ },
+ "SL": {
+ "name": "Sierra Leonǝ"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TD": {
+ "name": "syad"
+ },
+ "CL": {
+ "name": "syili"
+ },
+ "CN": {
+ "name": "syiŋ"
+ },
+ "CY": {
+ "name": "Syipriya"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwaŋ"
+ },
+ "TJ": {
+ "name": "Tajikistaŋ"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TL": {
+ "name": "Timoriya"
+ },
+ "TT": {
+ "name": "Trinite ne Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TR": {
+ "name": "Turkiya"
+ },
+ "TC": {
+ "name": "Turkiya ne kaicos ma laŋne"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraiŋ"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzbekistaŋ"
+ },
+ "VA": {
+ "name": "Vaticaŋ"
+ },
+ "WF": {
+ "name": "Wallis ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeŋ"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "NZ": {
+ "name": "Zeland mafuu"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/my.json b/library/intl/resources/country/my.json
new file mode 100644
index 000000000..100b0d425
--- /dev/null
+++ b/library/intl/resources/country/my.json
@@ -0,0 +1,761 @@
+{
+ "CA": {
+ "name": "ကနေဒါ"
+ },
+ "KZ": {
+ "name": "ကာဇက်စတန်"
+ },
+ "QA": {
+ "name": "ကာတာ"
+ },
+ "IC": {
+ "name": "ကာနာရီကျွန်းစု"
+ },
+ "BQ": {
+ "name": "ကာရီဘီယံနယ်သာလန်"
+ },
+ "KW": {
+ "name": "ကူဝိတ်"
+ },
+ "KY": {
+ "name": "ကေမန် ကျွန်းစု"
+ },
+ "CR": {
+ "name": "ကော့စ်တာရီကာ"
+ },
+ "CC": {
+ "name": "ကိုကိုး ကျွန်းစု"
+ },
+ "XK": {
+ "name": "ကိုဆိုဗို"
+ },
+ "KM": {
+ "name": "ကိုမိုရိုစ်"
+ },
+ "CO": {
+ "name": "ကိုလံဘီယာ"
+ },
+ "KE": {
+ "name": "ကင်ညာ"
+ },
+ "CM": {
+ "name": "ကင်မရွန်း"
+ },
+ "KH": {
+ "name": "ကမ္ဘောဒီးယား"
+ },
+ "CU": {
+ "name": "ကျူးဘား"
+ },
+ "CK": {
+ "name": "ကွတ် ကျွန်းစု"
+ },
+ "CD": {
+ "name": "ကွန်ဂို-ကင်ရှာစ"
+ },
+ "CG": {
+ "name": "ကွန်ဂို-ဘရာဇာဗီလ်"
+ },
+ "KG": {
+ "name": "ခရူဂစ်စတန်"
+ },
+ "HR": {
+ "name": "ခရိုအေးရှား"
+ },
+ "CX": {
+ "name": "ခရစ်စမတ် ကျွန်း"
+ },
+ "KI": {
+ "name": "ခီရီဘာတီ"
+ },
+ "CW": {
+ "name": "ခူရာကာအို"
+ },
+ "CV": {
+ "name": "ခေ့ပ်ဗာဒူ"
+ },
+ "CL": {
+ "name": "ချီလီ"
+ },
+ "CZ": {
+ "name": "ချက် ပြည်ထောင်စု"
+ },
+ "TD": {
+ "name": "ချဒ်"
+ },
+ "GR": {
+ "name": "ဂရိ"
+ },
+ "GD": {
+ "name": "ဂရီနာဒါ"
+ },
+ "GL": {
+ "name": "ဂရင်းလန်း"
+ },
+ "GH": {
+ "name": "ဂါနာ"
+ },
+ "GA": {
+ "name": "ဂါဘွန်"
+ },
+ "GW": {
+ "name": "ဂီရာနာ-ဘီစ်စာဥ"
+ },
+ "GN": {
+ "name": "ဂီးနီ"
+ },
+ "GY": {
+ "name": "ဂူရာနာ"
+ },
+ "GP": {
+ "name": "ဂူအာဒီလုပ်"
+ },
+ "GU": {
+ "name": "ဂူအမ်"
+ },
+ "GM": {
+ "name": "ဂန်ဘီရာ"
+ },
+ "JP": {
+ "name": "ဂျပန်"
+ },
+ "JM": {
+ "name": "ဂျမေကာ"
+ },
+ "JE": {
+ "name": "ဂျာစီ"
+ },
+ "DE": {
+ "name": "ဂျာမဏီ"
+ },
+ "GI": {
+ "name": "ဂျီဘရော်လ်တာ"
+ },
+ "DJ": {
+ "name": "ဂျီဘူတီ"
+ },
+ "GE": {
+ "name": "ဂျော်ဂျီယာ"
+ },
+ "JO": {
+ "name": "ဂျော်ဒန်"
+ },
+ "GT": {
+ "name": "ဂွာတီမာလာ"
+ },
+ "GG": {
+ "name": "ဂွန်းဇီ"
+ },
+ "ES": {
+ "name": "စပိန်"
+ },
+ "SJ": {
+ "name": "စဗိုလ်ဘတ်နှင့်ဂျန်မေရန်"
+ },
+ "SK": {
+ "name": "စလိုဗေးကီးယား"
+ },
+ "SI": {
+ "name": "စလိုဗေးနီးယား"
+ },
+ "SG": {
+ "name": "စင်္ကာပူ"
+ },
+ "KN": {
+ "name": "စိန့်ကစ်နှင့်နီဗီစ်"
+ },
+ "ST": {
+ "name": "စိန့်တိုမီနှင့်ပရင်စီပ့်"
+ },
+ "PM": {
+ "name": "စိန့်ပီအဲရီနှင့်မီကွီလွန်"
+ },
+ "VC": {
+ "name": "စိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်းစ်"
+ },
+ "BL": {
+ "name": "စိန့်ဘာသီလီမိုင်"
+ },
+ "MF": {
+ "name": "စိန့်မာတင်"
+ },
+ "LC": {
+ "name": "စိန့်လူစီအာ"
+ },
+ "SH": {
+ "name": "စိန့်ဟဲလီနာ"
+ },
+ "SZ": {
+ "name": "စွာဇီလန်"
+ },
+ "WS": {
+ "name": "ဆာမိုအာ"
+ },
+ "RS": {
+ "name": "ဆားဘီးယား"
+ },
+ "SN": {
+ "name": "ဆီနီဂေါ"
+ },
+ "SL": {
+ "name": "ဆီအဲရာ လီအိုနီ"
+ },
+ "SY": {
+ "name": "ဆီးရီးယား"
+ },
+ "SD": {
+ "name": "ဆူဒန်"
+ },
+ "SR": {
+ "name": "ဆူရီနိမ်း"
+ },
+ "SC": {
+ "name": "ဆေးရှလ်"
+ },
+ "SM": {
+ "name": "ဆော့န်မာရီနို"
+ },
+ "SA": {
+ "name": "ဆော်ဒီအာရေးဗီးယား"
+ },
+ "SB": {
+ "name": "ဆော်လမွန်ကျွန်းစု"
+ },
+ "SO": {
+ "name": "ဆိုမာလီယာ"
+ },
+ "CY": {
+ "name": "ဆိုက်ပရက်စ်"
+ },
+ "SX": {
+ "name": "ဆင့်မာအာတင်"
+ },
+ "EA": {
+ "name": "ဆယ်ဥတာနှင့်မယ်လီလ်လာ"
+ },
+ "SE": {
+ "name": "ဆွီဒင်"
+ },
+ "CH": {
+ "name": "ဆွစ်ဇလန်"
+ },
+ "ZW": {
+ "name": "ဇင်ဘာဘွေ"
+ },
+ "ZM": {
+ "name": "ဇမ်ဘီယာ"
+ },
+ "CN": {
+ "name": "တရုတ်"
+ },
+ "MO": {
+ "name": "တရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ မကာအို"
+ },
+ "HK": {
+ "name": "တရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ ဟောင်ကောင်"
+ },
+ "TJ": {
+ "name": "တာဂျီကစ္စတန်"
+ },
+ "TN": {
+ "name": "တူနီးရှား"
+ },
+ "TR": {
+ "name": "တူရကီ"
+ },
+ "TG": {
+ "name": "တိုဂို"
+ },
+ "TC": {
+ "name": "တခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစု"
+ },
+ "TM": {
+ "name": "တာခ်မီန့စ်တန်"
+ },
+ "GS": {
+ "name": "တောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများ"
+ },
+ "KR": {
+ "name": "တောင်ကိုရီးယား"
+ },
+ "MP": {
+ "name": "တောင်ပိုင်းမာရီအာနာကျွန်းစု"
+ },
+ "ZA": {
+ "name": "တောင်အာဖရိက"
+ },
+ "TZ": {
+ "name": "တန်ဇန်းနီးယား"
+ },
+ "TO": {
+ "name": "တွန်ဂါ"
+ },
+ "TT": {
+ "name": "ထရိုင်နီဒတ်နှင့်တိုဘာဂို"
+ },
+ "TA": {
+ "name": "ထရစ်တန်ဒါကွန်ဟာ"
+ },
+ "TV": {
+ "name": "ထူးဗလူ"
+ },
+ "TK": {
+ "name": "ထိုးခါလူ"
+ },
+ "TW": {
+ "name": "ထိုင်ဝမ်"
+ },
+ "TH": {
+ "name": "ထိုင်း"
+ },
+ "DG": {
+ "name": "ဒီအေဂိုဂရာစီအာ"
+ },
+ "DM": {
+ "name": "ဒိုမီနီကာ"
+ },
+ "DO": {
+ "name": "ဒိုမီနီကန်"
+ },
+ "DK": {
+ "name": "ဒိန်းမတ်"
+ },
+ "NC": {
+ "name": "နယူး ကယ်လီဒိုနီးယား"
+ },
+ "NZ": {
+ "name": "နယူးဇီလန်"
+ },
+ "NR": {
+ "name": "နာဥူရူ"
+ },
+ "NI": {
+ "name": "နီကာရာဂွာ"
+ },
+ "NP": {
+ "name": "နီပေါ"
+ },
+ "NU": {
+ "name": "နီဥူအေ"
+ },
+ "NF": {
+ "name": "နောဖော့ခ်ကျွန်း"
+ },
+ "NO": {
+ "name": "နော်ဝေ"
+ },
+ "NE": {
+ "name": "နိုင်ဂျာ"
+ },
+ "NG": {
+ "name": "နိုင်ဂျီးရီးယား"
+ },
+ "NA": {
+ "name": "နမ်မီးဘီးယား"
+ },
+ "NL": {
+ "name": "နယ်သာလန်"
+ },
+ "PA": {
+ "name": "ပနားမား"
+ },
+ "PW": {
+ "name": "ပလောင်"
+ },
+ "PK": {
+ "name": "ပါကစ္စတန်"
+ },
+ "PG": {
+ "name": "ပါပူရာနယူးဂီနီ"
+ },
+ "PY": {
+ "name": "ပါရာဂွေး"
+ },
+ "PS": {
+ "name": "ပါလက်စတိုင်း ပိုင်နက်"
+ },
+ "PE": {
+ "name": "ပီရူး"
+ },
+ "PT": {
+ "name": "ပေါ်တူဂီ"
+ },
+ "PR": {
+ "name": "ပေါ်တူရီကို"
+ },
+ "PL": {
+ "name": "ပိုလန်"
+ },
+ "PN": {
+ "name": "ပစ်တ်ကိန်းကျွန်းစု"
+ },
+ "FR": {
+ "name": "ပြင်သစ်"
+ },
+ "GF": {
+ "name": "ပြင်သစ် ဂီယာနာ"
+ },
+ "TF": {
+ "name": "ပြင်သစ် တောင်ပိုင်း ပိုင်နက်များ"
+ },
+ "PF": {
+ "name": "ပြင်သစ် ပေါ်လီနေးရှား"
+ },
+ "FO": {
+ "name": "ဖာရိုး ကျွန်းစုများ"
+ },
+ "PH": {
+ "name": "ဖိလစ်ပိုင်"
+ },
+ "FJ": {
+ "name": "ဖီဂျီ"
+ },
+ "FK": {
+ "name": "ဖောက်ကလန် ကျွန်းစု"
+ },
+ "FI": {
+ "name": "ဖင်လန်"
+ },
+ "VA": {
+ "name": "ဗာတီကန်စီတီး"
+ },
+ "VU": {
+ "name": "ဗာနုအာတူ"
+ },
+ "VN": {
+ "name": "ဗီယက်နမ်"
+ },
+ "VE": {
+ "name": "ဗင်နီဇွဲလား"
+ },
+ "VG": {
+ "name": "ဗြိတိသျှ ဗာဂျင်း ကျွန်းစု"
+ },
+ "IO": {
+ "name": "ဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်"
+ },
+ "BR": {
+ "name": "ဘရာဇီး"
+ },
+ "BN": {
+ "name": "ဘရူနိုင်း"
+ },
+ "BS": {
+ "name": "ဘဟားမား"
+ },
+ "BF": {
+ "name": "ဘာကီနာ ဖာဆို"
+ },
+ "BB": {
+ "name": "ဘာဘဒိုးစ်"
+ },
+ "BM": {
+ "name": "ဘာမူဒါ"
+ },
+ "BH": {
+ "name": "ဘာရိန်း"
+ },
+ "BJ": {
+ "name": "ဘီနင်"
+ },
+ "BY": {
+ "name": "ဘီလာရုစ်"
+ },
+ "BG": {
+ "name": "ဘူဂေးရီးယား"
+ },
+ "BT": {
+ "name": "ဘူတန်"
+ },
+ "BI": {
+ "name": "ဘူရွန်ဒီ"
+ },
+ "BZ": {
+ "name": "ဘေလီဇ်"
+ },
+ "BA": {
+ "name": "ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနား"
+ },
+ "BW": {
+ "name": "ဘော့စ်ဝါနာ"
+ },
+ "BO": {
+ "name": "ဘိုလီးဘီးယား"
+ },
+ "BD": {
+ "name": "ဘင်္ဂလားဒေ့ရှ်"
+ },
+ "BE": {
+ "name": "ဘယ်လ်ဂျီယမ်"
+ },
+ "MY": {
+ "name": "မလေးရှား"
+ },
+ "MK": {
+ "name": "မာစီဒိုးနီးယား"
+ },
+ "MQ": {
+ "name": "မာတီနီကီ"
+ },
+ "MG": {
+ "name": "မာဒါဂတ်စကာ"
+ },
+ "MH": {
+ "name": "မာရှယ် ကျွန်းစု"
+ },
+ "MW": {
+ "name": "မာလာဝီ"
+ },
+ "ML": {
+ "name": "မာလီ"
+ },
+ "YT": {
+ "name": "မေအိုတီ"
+ },
+ "MR": {
+ "name": "မောရီတာနီအာ"
+ },
+ "MU": {
+ "name": "မော်ရေရှားစ်"
+ },
+ "MA": {
+ "name": "မော်ရိုကို"
+ },
+ "MV": {
+ "name": "မော်လ်ဒိုက်"
+ },
+ "MZ": {
+ "name": "မိုဇန်ဘစ်"
+ },
+ "MC": {
+ "name": "မိုနာကို"
+ },
+ "MX": {
+ "name": "မက္ကဆီကို"
+ },
+ "MS": {
+ "name": "မောင့်စဲရက်"
+ },
+ "FM": {
+ "name": "မိုင်ခရိုနီရှား"
+ },
+ "IM": {
+ "name": "မန်ကျွန်း"
+ },
+ "MT": {
+ "name": "မောလ်တာ"
+ },
+ "MD": {
+ "name": "မောလ်ဒိုဗာ"
+ },
+ "KP": {
+ "name": "မြောက်ကိုရီးယား"
+ },
+ "SS": {
+ "name": "မြောက်ဆူဒန်"
+ },
+ "MM": {
+ "name": "မြန်မာ"
+ },
+ "MN": {
+ "name": "မွန်ဂိုးလီးယား"
+ },
+ "ME": {
+ "name": "မွန်တီနိဂရိုး"
+ },
+ "YE": {
+ "name": "ယီမင်"
+ },
+ "UA": {
+ "name": "ယူကရိန်း"
+ },
+ "UG": {
+ "name": "ယူဂန္ဓာ"
+ },
+ "GB": {
+ "name": "ယူနိုက်တက်ကင်းဒမ်း"
+ },
+ "US": {
+ "name": "ယူနိုက်တက်စတိတ်"
+ },
+ "UM": {
+ "name": "ယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများ"
+ },
+ "AE": {
+ "name": "ယူအေအီး"
+ },
+ "VI": {
+ "name": "ယူအက်စ် ဗာဂျင်း ကျွန်းစု"
+ },
+ "RW": {
+ "name": "ရဝန်ဒါ"
+ },
+ "RU": {
+ "name": "ရုရှ"
+ },
+ "RE": {
+ "name": "ရဲအူနီရွန်"
+ },
+ "RO": {
+ "name": "ရိုမေးနီးယား"
+ },
+ "LA": {
+ "name": "လာအို"
+ },
+ "LS": {
+ "name": "လီဆိုသို"
+ },
+ "LY": {
+ "name": "လီဗရာ"
+ },
+ "LU": {
+ "name": "လူဇင်ဘတ်"
+ },
+ "LB": {
+ "name": "လက်ဘနွန်"
+ },
+ "LR": {
+ "name": "လိုင်ဘေးရီးယား"
+ },
+ "LT": {
+ "name": "လစ်သူယေးနီးယား"
+ },
+ "LI": {
+ "name": "လစ်ခ်ထင်စတိုင်"
+ },
+ "LV": {
+ "name": "လတ်ဗီးယား"
+ },
+ "WF": {
+ "name": "ဝေါလစ်နှင့်ဖူထူးနား"
+ },
+ "LK": {
+ "name": "သီရိလင်္ကာ"
+ },
+ "HT": {
+ "name": "ဟေတီ"
+ },
+ "HU": {
+ "name": "ဟန်ဂေရီ"
+ },
+ "HN": {
+ "name": "ဟွန်ဒူးရပ်စ်"
+ },
+ "AZ": {
+ "name": "အဇာဘိုင်ဂျန်"
+ },
+ "EH": {
+ "name": "အနောက်ပိုင်း ဆာဟာရ"
+ },
+ "AS": {
+ "name": "အမေရိကန် စမိုအ"
+ },
+ "TL": {
+ "name": "အရှေ့တီမော"
+ },
+ "CF": {
+ "name": "အလယ်ပိုင်း အာဖရိက ပြည်ထောင်စု"
+ },
+ "AR": {
+ "name": "အာဂျင်တီးနား"
+ },
+ "AF": {
+ "name": "အာဖဂန်နစ္စတန်"
+ },
+ "AM": {
+ "name": "အာမေနီးယား"
+ },
+ "AW": {
+ "name": "အာရုဘာ"
+ },
+ "AX": {
+ "name": "အာလန်ကျွန်း"
+ },
+ "GQ": {
+ "name": "အီကွေတာ ဂီရာနာ"
+ },
+ "EC": {
+ "name": "အီကွေဒေါ"
+ },
+ "EG": {
+ "name": "အီဂျစ်"
+ },
+ "IT": {
+ "name": "အီတလီ"
+ },
+ "ER": {
+ "name": "အီရီတရီအာ"
+ },
+ "IQ": {
+ "name": "အီရတ်"
+ },
+ "IR": {
+ "name": "အီရန်"
+ },
+ "ET": {
+ "name": "အီသီယိုးပီးယား"
+ },
+ "UZ": {
+ "name": "ဥဘက်ကစ္စတန်"
+ },
+ "UY": {
+ "name": "ဥရုဂွေး"
+ },
+ "AL": {
+ "name": "အဲလ်ဘာနီအာ"
+ },
+ "AT": {
+ "name": "ဩစတြီးယား"
+ },
+ "AU": {
+ "name": "ဩစတြေးလျ"
+ },
+ "OM": {
+ "name": "အိုမန်"
+ },
+ "EE": {
+ "name": "အက်စတိုးနီးယား"
+ },
+ "AC": {
+ "name": "အက်စ်စင်ရှီအွန်ကျွန်း"
+ },
+ "IS": {
+ "name": "အိုက်စလန်"
+ },
+ "AO": {
+ "name": "အင်ဂိုလာ"
+ },
+ "ID": {
+ "name": "အင်ဒိုနီးရှား"
+ },
+ "CI": {
+ "name": "အိုင်ဗရီကိုစ့်"
+ },
+ "IE": {
+ "name": "အိုင်ယာလန်"
+ },
+ "IL": {
+ "name": "အစ္စရေး"
+ },
+ "AI": {
+ "name": "အန်ဂွီလာ"
+ },
+ "AQ": {
+ "name": "အန္တာတိက"
+ },
+ "AG": {
+ "name": "အန်တီဂုအာနှင့်ဘာဘုဒါ"
+ },
+ "AD": {
+ "name": "အန်ဒိုရာ"
+ },
+ "IN": {
+ "name": "အိန္ဒိယ"
+ },
+ "DZ": {
+ "name": "အယ်လ်ဂျီးရီးယား"
+ },
+ "SV": {
+ "name": "အယ်လ်ဆာဗေးဒိုး"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/naq.json b/library/intl/resources/country/naq.json
new file mode 100644
index 000000000..1d7584f11
--- /dev/null
+++ b/library/intl/resources/country/naq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistanni"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaniab"
+ },
+ "DZ": {
+ "name": "Algeriab"
+ },
+ "AS": {
+ "name": "Americab Samoab"
+ },
+ "US": {
+ "name": "Amerikab"
+ },
+ "AD": {
+ "name": "Andorrab"
+ },
+ "AO": {
+ "name": "Angolab"
+ },
+ "AI": {
+ "name": "Anguillab"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguab tsî Barbudab"
+ },
+ "AR": {
+ "name": "Argentinab"
+ },
+ "AM": {
+ "name": "Armeniab"
+ },
+ "AW": {
+ "name": "Arubab"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australieb"
+ },
+ "AT": {
+ "name": "Austriab"
+ },
+ "AZ": {
+ "name": "Azerbaijanni"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgiummi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benins"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BT": {
+ "name": "Bhutans"
+ },
+ "BO": {
+ "name": "Boliviab"
+ },
+ "BA": {
+ "name": "Bosniab tsî Herzegovinab"
+ },
+ "BW": {
+ "name": "Botswanab"
+ },
+ "BR": {
+ "name": "Braziliab"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgariab"
+ },
+ "BF": {
+ "name": "Burkina Fasob"
+ },
+ "BI": {
+ "name": "Burundib"
+ },
+ "KH": {
+ "name": "Cambodiab"
+ },
+ "CM": {
+ "name": "Cameroonni"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republiki"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chilib"
+ },
+ "CN": {
+ "name": "Chinab"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombiab"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congob"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croatiab"
+ },
+ "CU": {
+ "name": "Cubab"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republiki"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominicab"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "DE": {
+ "name": "Duitslandi"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuadori"
+ },
+ "EG": {
+ "name": "Egipteb"
+ },
+ "SV": {
+ "name": "El Salvadori"
+ },
+ "GQ": {
+ "name": "Equatorial Guineab"
+ },
+ "ER": {
+ "name": "Eritreab"
+ },
+ "EE": {
+ "name": "Estoniab"
+ },
+ "ET": {
+ "name": "Ethiopiab"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fijib"
+ },
+ "FI": {
+ "name": "Finlandi"
+ },
+ "FR": {
+ "name": "Frankreiki"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambiab"
+ },
+ "GE": {
+ "name": "Georgiab"
+ },
+ "GH": {
+ "name": "Ghanab"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GN": {
+ "name": "Guineab"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongareieb"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "Indiab"
+ },
+ "ID": {
+ "name": "Indonesiab"
+ },
+ "IR": {
+ "name": "Iranni"
+ },
+ "IQ": {
+ "name": "Iraqi"
+ },
+ "IE": {
+ "name": "Irlandi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italiab"
+ },
+ "CI": {
+ "name": "Ivoorkusi"
+ },
+ "JM": {
+ "name": "Jamaicab"
+ },
+ "JP": {
+ "name": "Japanni"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanni"
+ },
+ "CA": {
+ "name": "Kanadab"
+ },
+ "KZ": {
+ "name": "Kazakhstanni"
+ },
+ "KE": {
+ "name": "Kenyab"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KP": {
+ "name": "Koreab, Noord"
+ },
+ "KR": {
+ "name": "Koreab, Suid"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "KG": {
+ "name": "Kyrgyzstanni"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanonni"
+ },
+ "LS": {
+ "name": "Lesothob"
+ },
+ "LR": {
+ "name": "Liberiab"
+ },
+ "LY": {
+ "name": "Libyab"
+ },
+ "LI": {
+ "name": "Liechtensteinni"
+ },
+ "LT": {
+ "name": "Lithuaniab"
+ },
+ "LU": {
+ "name": "Luxembourgi"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedoniab"
+ },
+ "MG": {
+ "name": "Madagascari"
+ },
+ "MW": {
+ "name": "Malawib"
+ },
+ "MY": {
+ "name": "Malaysiab"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Malib"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexicob"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibiab"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealandi"
+ },
+ "NI": {
+ "name": "Nicaraguab"
+ },
+ "NE": {
+ "name": "Nigeri"
+ },
+ "NG": {
+ "name": "Nigerieb"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noorweeb"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistanni"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank and Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guineab"
+ },
+ "PY": {
+ "name": "Paraguaib"
+ },
+ "PE": {
+ "name": "Perub"
+ },
+ "PH": {
+ "name": "Philippinni"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RU": {
+ "name": "Rasiab"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwandab"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabiab"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somaliab"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanieb"
+ },
+ "LK": {
+ "name": "Sri Lankab"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudanni"
+ },
+ "ZA": {
+ "name": "Suid Afrikab"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swedeb"
+ },
+ "CH": {
+ "name": "Switzerlandi"
+ },
+ "SY": {
+ "name": "Syriab"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniab"
+ },
+ "TH": {
+ "name": "Thailandi"
+ },
+ "TG": {
+ "name": "Togob"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiab"
+ },
+ "TR": {
+ "name": "Turkeieb"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Ugandab"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguaib"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuelab"
+ },
+ "VN": {
+ "name": "Vietnammi"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "GR": {
+ "name": "Xrikelandi"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambiab"
+ },
+ "ZW": {
+ "name": "Zimbabweb"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nb.json b/library/intl/resources/country/nb.json
new file mode 100644
index 000000000..0e4154e07
--- /dev/null
+++ b/library/intl/resources/country/nb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "Britiske territorier i Indiahavet"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøyene"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmasøya"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cookøyene"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "De amerikanske jomfruøyene"
+ },
+ "VG": {
+ "name": "De britiske jomfruøyene"
+ },
+ "AE": {
+ "name": "De forente arabiske emirater"
+ },
+ "TF": {
+ "name": "De franske sørterritorier"
+ },
+ "DO": {
+ "name": "Den dominikanske republikk"
+ },
+ "CF": {
+ "name": "Den sentralafrikanske republikk"
+ },
+ "PS": {
+ "name": "Det palestinske området"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "GQ": {
+ "name": "Ekvatorial-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsøyene"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinene"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesia"
+ },
+ "FO": {
+ "name": "Færøyene"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "GR": {
+ "name": "Hellas"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong S.A.R. Kina"
+ },
+ "BY": {
+ "name": "Hviterussland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodsja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanariøyene"
+ },
+ "CV": {
+ "name": "Kapp Verde"
+ },
+ "BQ": {
+ "name": "Karibisk Nederland"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosøyene"
+ },
+ "KM": {
+ "name": "Komorene"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao S.A.R. Kina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivene"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløyene"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiaføderasjonen"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nord-Korea"
+ },
+ "MP": {
+ "name": "Nord-Marianene"
+ },
+ "NF": {
+ "name": "Norfolkøya"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Ny-Caledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "SB": {
+ "name": "Salomonøyene"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé og Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellene"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts og Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "PM": {
+ "name": "St. Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent og Grenadinene"
+ },
+ "GB": {
+ "name": "Storbritannia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "CH": {
+ "name": "Sveits"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "ZA": {
+ "name": "Sør-Afrika"
+ },
+ "GS": {
+ "name": "Sør-Georgia og Sør-Sandwichøyene"
+ },
+ "KR": {
+ "name": "Sør-Korea"
+ },
+ "SS": {
+ "name": "Sør-Sudan"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "CZ": {
+ "name": "Tsjekkia"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøyene"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USAs ytre øyer"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vest-Sahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "TL": {
+ "name": "Øst-Timor"
+ },
+ "AT": {
+ "name": "Østerrike"
+ },
+ "AX": {
+ "name": "Åland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nd.json b/library/intl/resources/country/nd.json
new file mode 100644
index 000000000..8fe088957
--- /dev/null
+++ b/library/intl/resources/country/nd.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeriya"
+ },
+ "US": {
+ "name": "Amelika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua le Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BB": {
+ "name": "Bhabhadosi"
+ },
+ "BS": {
+ "name": "Bhahamas"
+ },
+ "BH": {
+ "name": "Bhahareni"
+ },
+ "BD": {
+ "name": "Bhangiladeshi"
+ },
+ "BY": {
+ "name": "Bhelarusi"
+ },
+ "BE": {
+ "name": "Bhelgium"
+ },
+ "BZ": {
+ "name": "Bhelize"
+ },
+ "BM": {
+ "name": "Bhemuda"
+ },
+ "BJ": {
+ "name": "Bhenini"
+ },
+ "BO": {
+ "name": "Bholiviya"
+ },
+ "BA": {
+ "name": "Bhosnia le Herzegovina"
+ },
+ "BF": {
+ "name": "Bhukina Faso"
+ },
+ "BG": {
+ "name": "Bhulgariya"
+ },
+ "BI": {
+ "name": "Bhurundi"
+ },
+ "BT": {
+ "name": "Bhutani"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmakhi"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "DM": {
+ "name": "Dominikha"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FR": {
+ "name": "Furansi"
+ },
+ "GA": {
+ "name": "Gabhoni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Gwiyana ye Furansi"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Isuraeli"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "CI": {
+ "name": "Ivory Coast"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jodani"
+ },
+ "QA": {
+ "name": "Kathari"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "CM": {
+ "name": "Khameruni"
+ },
+ "CA": {
+ "name": "Khanada"
+ },
+ "KE": {
+ "name": "Khenya"
+ },
+ "KI": {
+ "name": "Khiribati"
+ },
+ "CO": {
+ "name": "Kholombiya"
+ },
+ "KM": {
+ "name": "Khomoro"
+ },
+ "CG": {
+ "name": "Khongo"
+ },
+ "CR": {
+ "name": "Khosta Rikha"
+ },
+ "KW": {
+ "name": "Khuweiti"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebhanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Libheriya"
+ },
+ "LY": {
+ "name": "Libhiya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MY": {
+ "name": "Malezhiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksikho"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monakho"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morokho"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "ZA": {
+ "name": "Mzansi ye Afrika"
+ },
+ "NA": {
+ "name": "Namibhiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nephali"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Noweyi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank and Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PK": {
+ "name": "Phakistani"
+ },
+ "PE": {
+ "name": "Pheru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PL": {
+ "name": "Pholandi"
+ },
+ "PF": {
+ "name": "Pholinesiya ye Fulansi"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RU": {
+ "name": "Rashiya"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "AS": {
+ "name": "Samoa ye Amelika"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Thayilandi"
+ },
+ "TW": {
+ "name": "Thayiwani"
+ },
+ "TR": {
+ "name": "Thekhi"
+ },
+ "TG": {
+ "name": "Thogo"
+ },
+ "TK": {
+ "name": "Thokelawu"
+ },
+ "TO": {
+ "name": "Thonga"
+ },
+ "TV": {
+ "name": "Thuvalu"
+ },
+ "TT": {
+ "name": "Trinidad le Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VU": {
+ "name": "Vhanuatu"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "UA": {
+ "name": "Yukreini"
+ },
+ "UY": {
+ "name": "Yurugwai"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ne.json b/library/intl/resources/country/ne.json
new file mode 100644
index 000000000..01db81abb
--- /dev/null
+++ b/library/intl/resources/country/ne.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अङ्गोला"
+ },
+ "AZ": {
+ "name": "अजरबैजान"
+ },
+ "AQ": {
+ "name": "अन्टारतिका"
+ },
+ "AD": {
+ "name": "अन्डोर्रा"
+ },
+ "AF": {
+ "name": "अफगानिस्तान"
+ },
+ "AS": {
+ "name": "अमेरिकी समोआ"
+ },
+ "AR": {
+ "name": "अर्जेन्टिना"
+ },
+ "AX": {
+ "name": "अलान्ड टापुहरु"
+ },
+ "DZ": {
+ "name": "अल्जेरिया"
+ },
+ "AL": {
+ "name": "अल्बानिया"
+ },
+ "AT": {
+ "name": "अष्ट्रिया"
+ },
+ "AU": {
+ "name": "अष्ट्रेलिया"
+ },
+ "IM": {
+ "name": "आइज्ले अफ् म्यान"
+ },
+ "CI": {
+ "name": "आइभरी कोस्ट"
+ },
+ "IS": {
+ "name": "आइस्ल्याण्ड"
+ },
+ "AI": {
+ "name": "आङ्गुइला"
+ },
+ "IE": {
+ "name": "आयरल्याण्ड"
+ },
+ "AW": {
+ "name": "आरूबा"
+ },
+ "AM": {
+ "name": "आर्मेनिया"
+ },
+ "EC": {
+ "name": "इक्वडेर"
+ },
+ "IL": {
+ "name": "इजरायल"
+ },
+ "EG": {
+ "name": "इजिप्ट"
+ },
+ "IT": {
+ "name": "इटाली"
+ },
+ "ET": {
+ "name": "इथियोपिया"
+ },
+ "ID": {
+ "name": "इन्डोनेशिया"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "IR": {
+ "name": "इरान"
+ },
+ "EE": {
+ "name": "इस्टोनिया"
+ },
+ "UZ": {
+ "name": "उज्बेकिस्तान"
+ },
+ "KP": {
+ "name": "उत्तर कोरिया"
+ },
+ "MP": {
+ "name": "उत्तरी मारिआना टापु"
+ },
+ "UY": {
+ "name": "उरूग्वे"
+ },
+ "AG": {
+ "name": "एन्टिगुआ र बारबुडा"
+ },
+ "ER": {
+ "name": "एरित्रिया"
+ },
+ "SV": {
+ "name": "एल् साल्भाडोर"
+ },
+ "AC": {
+ "name": "एस्केन्सन टापु"
+ },
+ "OM": {
+ "name": "ओमन"
+ },
+ "QA": {
+ "name": "कतार"
+ },
+ "KH": {
+ "name": "कम्बोडिया"
+ },
+ "KZ": {
+ "name": "काजाकस्तान"
+ },
+ "KI": {
+ "name": "किरिबाटी"
+ },
+ "KG": {
+ "name": "किर्गिस्थान"
+ },
+ "CK": {
+ "name": "कुक टापुहरु"
+ },
+ "CW": {
+ "name": "कुराकाओ"
+ },
+ "KW": {
+ "name": "कुवेत"
+ },
+ "CF": {
+ "name": "केन्द्रीय अफ्रिकी गणतन्त्र"
+ },
+ "KE": {
+ "name": "केन्या"
+ },
+ "CV": {
+ "name": "केप भर्डे"
+ },
+ "KY": {
+ "name": "केयमान टापु"
+ },
+ "CC": {
+ "name": "कोकोस (किलिंग) टापुहरु"
+ },
+ "CG": {
+ "name": "कोङ्गो - ब्राज्जाभिल्ले"
+ },
+ "CD": {
+ "name": "कोङ्गो-किन्शासा"
+ },
+ "KM": {
+ "name": "कोमोरोस"
+ },
+ "CO": {
+ "name": "कोलोम्बिया"
+ },
+ "CR": {
+ "name": "कोष्टारिका"
+ },
+ "XK": {
+ "name": "कोसोवो"
+ },
+ "CA": {
+ "name": "क्यानाडा"
+ },
+ "IC": {
+ "name": "क्यानारी टापुहरू"
+ },
+ "CM": {
+ "name": "क्यामरून"
+ },
+ "BQ": {
+ "name": "क्यारिवियन नेदरल्याण्ड्स"
+ },
+ "CU": {
+ "name": "क्युबा"
+ },
+ "CX": {
+ "name": "क्रिष्टमस टापु"
+ },
+ "HR": {
+ "name": "क्रोएशिया"
+ },
+ "GM": {
+ "name": "गाम्विया"
+ },
+ "GA": {
+ "name": "गावोन"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GG": {
+ "name": "गुएर्नसे"
+ },
+ "GY": {
+ "name": "गुयाना"
+ },
+ "GU": {
+ "name": "गुवाम"
+ },
+ "GL": {
+ "name": "ग्रिनल्याण्ड"
+ },
+ "GR": {
+ "name": "ग्रिस"
+ },
+ "GD": {
+ "name": "ग्रेनाडा"
+ },
+ "GT": {
+ "name": "ग्वाटेमाला"
+ },
+ "GP": {
+ "name": "ग्वाडेलुप"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणतन्त्र"
+ },
+ "JM": {
+ "name": "जमाइका"
+ },
+ "GE": {
+ "name": "जर्जिया"
+ },
+ "DE": {
+ "name": "जर्मनी"
+ },
+ "JE": {
+ "name": "जर्सी"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "जाम्बिया"
+ },
+ "GI": {
+ "name": "जिब्राल्टार"
+ },
+ "ZW": {
+ "name": "जिम्बाबे"
+ },
+ "JO": {
+ "name": "जोर्डन"
+ },
+ "TR": {
+ "name": "टर्की"
+ },
+ "TL": {
+ "name": "टिमोर-लेस्टे"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "ट्युनिसिया"
+ },
+ "TA": {
+ "name": "ट्रिस्टान डा कुन्हा"
+ },
+ "DJ": {
+ "name": "डिजिबुटी"
+ },
+ "DG": {
+ "name": "डियगो गार्सिया"
+ },
+ "DK": {
+ "name": "डेनमार्क"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणतन्त्र"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिस्तान"
+ },
+ "TZ": {
+ "name": "तान्जानिया"
+ },
+ "TV": {
+ "name": "तुभालु"
+ },
+ "TC": {
+ "name": "तुर्क र काइकोस टापु"
+ },
+ "TM": {
+ "name": "तुर्कमेनिस्तान"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "त्रिनिडाड एण्ड टोबागो"
+ },
+ "TH": {
+ "name": "थाइल्याण्ड"
+ },
+ "ZA": {
+ "name": "दक्षिण अफ्रिका"
+ },
+ "KR": {
+ "name": "दक्षिण कोरिया"
+ },
+ "GS": {
+ "name": "दक्षिण जर्जिया र दक्षिण स्यान्डवीच टापुहरू"
+ },
+ "SS": {
+ "name": "दक्षिणी सुडान"
+ },
+ "NC": {
+ "name": "नयाँ कालेडोनिया"
+ },
+ "NO": {
+ "name": "नर्वे"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NG": {
+ "name": "नाइजेरिया"
+ },
+ "NR": {
+ "name": "नाउरू"
+ },
+ "NA": {
+ "name": "नामिबिया"
+ },
+ "NI": {
+ "name": "निकारागुवा"
+ },
+ "NU": {
+ "name": "नियुइ"
+ },
+ "NL": {
+ "name": "नेदरल्याण्ड्स"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नोरफोल्क टापु"
+ },
+ "NZ": {
+ "name": "न्युजिल्याण्ड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PG": {
+ "name": "पपुआ न्यू गाइनिया"
+ },
+ "PW": {
+ "name": "पलाउ"
+ },
+ "EH": {
+ "name": "पश्चिमी साहारा"
+ },
+ "PK": {
+ "name": "पाकिस्तान"
+ },
+ "PN": {
+ "name": "पिटकाइर्न टापुहरु"
+ },
+ "PR": {
+ "name": "पुएर्टो रिको"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PT": {
+ "name": "पोर्चुगल"
+ },
+ "PL": {
+ "name": "पोल्याण्ड"
+ },
+ "PY": {
+ "name": "प्याराग्वे"
+ },
+ "PS": {
+ "name": "प्यालेस्टनी भू-भागहरु"
+ },
+ "FK": {
+ "name": "फकल्याण्ड टापुहरु"
+ },
+ "FO": {
+ "name": "फारोर टापुहरु"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिन्ल्याण्ड"
+ },
+ "PH": {
+ "name": "फिलिपिन्स"
+ },
+ "FR": {
+ "name": "फ्रान्स"
+ },
+ "GF": {
+ "name": "फ्रान्सेली गायना"
+ },
+ "TF": {
+ "name": "फ्रान्सेली दक्षिणी क्षेत्रहरु"
+ },
+ "PF": {
+ "name": "फ्रान्सेली पोलिनेसिया"
+ },
+ "BD": {
+ "name": "बङ्गलादेश"
+ },
+ "BF": {
+ "name": "बर्किना फासो"
+ },
+ "BM": {
+ "name": "बर्मुडा"
+ },
+ "BH": {
+ "name": "बहराइन"
+ },
+ "BS": {
+ "name": "बहामास"
+ },
+ "BB": {
+ "name": "बार्बाडोस"
+ },
+ "BI": {
+ "name": "बुरूण्डी"
+ },
+ "BG": {
+ "name": "बुल्गेरिया"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "GB": {
+ "name": "बेलायत"
+ },
+ "VG": {
+ "name": "बेलायती भर्जिन टापुहरु"
+ },
+ "IO": {
+ "name": "बेलायती हिन्द महासागर क्षेत्र"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलिज"
+ },
+ "BE": {
+ "name": "बेल्जियम"
+ },
+ "BW": {
+ "name": "बोट्स्वाना"
+ },
+ "BO": {
+ "name": "बोलिभिया"
+ },
+ "BA": {
+ "name": "बोस्निया एण्ड हर्जगोभिनिया"
+ },
+ "BR": {
+ "name": "ब्राजिल"
+ },
+ "BN": {
+ "name": "ब्रुनाइ"
+ },
+ "VU": {
+ "name": "भानुआतु"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "VN": {
+ "name": "भिएतनाम"
+ },
+ "BT": {
+ "name": "भुटान"
+ },
+ "GQ": {
+ "name": "भू-मध्यीय गिनी"
+ },
+ "VA": {
+ "name": "भेटिकन सिटी"
+ },
+ "VE": {
+ "name": "भेनेजुएला"
+ },
+ "MO": {
+ "name": "मकावो चिनिँया स्वशासित क्षेत्र"
+ },
+ "MN": {
+ "name": "मङ्गोलिया"
+ },
+ "MG": {
+ "name": "मडागास्कर"
+ },
+ "MY": {
+ "name": "मलेसिया"
+ },
+ "FM": {
+ "name": "माइक्रोनेसिया"
+ },
+ "MU": {
+ "name": "माउरिटस"
+ },
+ "MR": {
+ "name": "माउरिटानिया"
+ },
+ "YT": {
+ "name": "मायोट्ट"
+ },
+ "MQ": {
+ "name": "मार्टिनिक"
+ },
+ "MH": {
+ "name": "मार्शल टापुहरु"
+ },
+ "MW": {
+ "name": "मालावी"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "माल्टा"
+ },
+ "MD": {
+ "name": "माल्डोभा"
+ },
+ "MV": {
+ "name": "माल्दिभ्स"
+ },
+ "MX": {
+ "name": "मेक्सिको"
+ },
+ "MZ": {
+ "name": "मोजाम्बिक"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MS": {
+ "name": "मोन्टसेर्राट"
+ },
+ "ME": {
+ "name": "मोन्टेनेग्रो"
+ },
+ "MA": {
+ "name": "मोरोक्को"
+ },
+ "MK": {
+ "name": "म्याकेडोनिया"
+ },
+ "MM": {
+ "name": "म्यान्मार (बर्मा)"
+ },
+ "UA": {
+ "name": "युक्रेन"
+ },
+ "UG": {
+ "name": "युगाण्डा"
+ },
+ "YE": {
+ "name": "येमेन"
+ },
+ "RW": {
+ "name": "रवाण्डा"
+ },
+ "RE": {
+ "name": "रियुनियन"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लक्जेमबर्ग"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लाट्भिया"
+ },
+ "LI": {
+ "name": "लिएखटेन्स्टाइन"
+ },
+ "LT": {
+ "name": "लिथुअनिया"
+ },
+ "LY": {
+ "name": "लिबिया"
+ },
+ "LB": {
+ "name": "लेबनन"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "WF": {
+ "name": "वालिस र फुटुना"
+ },
+ "LK": {
+ "name": "श्रीलङ्का"
+ },
+ "SJ": {
+ "name": "सभाल्बार्ड र जान मायेन"
+ },
+ "AE": {
+ "name": "संयुक्त अरब इमिराट्स"
+ },
+ "US": {
+ "name": "संयुक्त राज्य"
+ },
+ "UM": {
+ "name": "संयुक्त राज्य बाह्य टापुहरु"
+ },
+ "VI": {
+ "name": "संयुक्त राज्य भर्जिन टापुहरु"
+ },
+ "RS": {
+ "name": "सर्बिया"
+ },
+ "CY": {
+ "name": "साइप्रस"
+ },
+ "SA": {
+ "name": "साउदी अरब"
+ },
+ "ST": {
+ "name": "साओ टोमे र प्रिन्सिप"
+ },
+ "SM": {
+ "name": "सान् मारिनो"
+ },
+ "WS": {
+ "name": "सामोआ"
+ },
+ "EA": {
+ "name": "सिउटा र मेलिला"
+ },
+ "SL": {
+ "name": "सिएर्रा लिओन"
+ },
+ "SG": {
+ "name": "सिङ्गापुर"
+ },
+ "SX": {
+ "name": "सिन्ट मार्टेन"
+ },
+ "SY": {
+ "name": "सिरिया"
+ },
+ "SD": {
+ "name": "सुडान"
+ },
+ "SR": {
+ "name": "सुरिनेम"
+ },
+ "SC": {
+ "name": "सेचेलेस"
+ },
+ "SN": {
+ "name": "सेनेगाल"
+ },
+ "KN": {
+ "name": "सेन्ट किट्स र नेभिस"
+ },
+ "PM": {
+ "name": "सेन्ट पिर्रे र मिक्केलोन"
+ },
+ "BL": {
+ "name": "सेन्ट बार्थालेमी"
+ },
+ "VC": {
+ "name": "सेन्ट भिन्सेन्ट र ग्रेनाडिन्स"
+ },
+ "MF": {
+ "name": "सेन्ट मार्टिन"
+ },
+ "LC": {
+ "name": "सेन्ट लुसिया"
+ },
+ "SH": {
+ "name": "सेन्ट हेलेना"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमोन टापुहरु"
+ },
+ "ES": {
+ "name": "स्पेन"
+ },
+ "SK": {
+ "name": "स्लोभाकिया"
+ },
+ "SI": {
+ "name": "स्लोभेनिया"
+ },
+ "SZ": {
+ "name": "स्वाजिल्याण्ड"
+ },
+ "CH": {
+ "name": "स्विजरल्याण्ड"
+ },
+ "SE": {
+ "name": "स्विडेन"
+ },
+ "HK": {
+ "name": "हङकङ चिनिया समाजवादी स्वायत्त क्षेत्र"
+ },
+ "HU": {
+ "name": "हङ्गेरी"
+ },
+ "HN": {
+ "name": "हन्डुरास"
+ },
+ "HT": {
+ "name": "हैटी"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nl-BE.json b/library/intl/resources/country/nl-BE.json
new file mode 100644
index 000000000..57f2522e5
--- /dev/null
+++ b/library/intl/resources/country/nl-BE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagdeneilanden"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden in de Indische Oceaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilanden"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribisch Nederland"
+ },
+ "KY": {
+ "name": "Caymaneilanden"
+ },
+ "CF": {
+ "name": "Centraal-Afrikaanse Republiek"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmaseiland"
+ },
+ "CC": {
+ "name": "Cocoseilanden"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilanden"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominicaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklandeilanden"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indische Oceaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekenland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "IM": {
+ "name": "Het Eiland Man"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van China"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IS": {
+ "name": "IJsland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "UM": {
+ "name": "Kleine afgelegen eilanden van de Verenigde Staten"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAR van China"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilanden"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieuw-Caledonië"
+ },
+ "NZ": {
+ "name": "Nieuw-Zeeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelijke Marianen"
+ },
+ "NO": {
+ "name": "Noorwegen"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oost-Timor"
+ },
+ "AT": {
+ "name": "Oostenrijk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestijnse gebieden"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieuw-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilanden"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomoneilanden"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechië"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilanden"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabische Emiraten"
+ },
+ "US": {
+ "name": "Verenigde Staten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Rusland"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "ZA": {
+ "name": "Zuid-Afrika"
+ },
+ "GS": {
+ "name": "Zuid-Georgia en Zuidelijke Sandwicheilanden"
+ },
+ "KR": {
+ "name": "Zuid-Korea"
+ },
+ "SS": {
+ "name": "Zuid-Soedan"
+ },
+ "SE": {
+ "name": "Zweden"
+ },
+ "CH": {
+ "name": "Zwitserland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nl.json b/library/intl/resources/country/nl.json
new file mode 100644
index 000000000..a6facca87
--- /dev/null
+++ b/library/intl/resources/country/nl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagdeneilanden"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden in de Indische Oceaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilanden"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribisch Nederland"
+ },
+ "KY": {
+ "name": "Caymaneilanden"
+ },
+ "CF": {
+ "name": "Centraal-Afrikaanse Republiek"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmaseiland"
+ },
+ "CC": {
+ "name": "Cocoseilanden"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilanden"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominicaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklandeilanden"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indische Oceaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekenland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van China"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IS": {
+ "name": "IJsland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "UM": {
+ "name": "Kleine afgelegen eilanden van de Verenigde Staten"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAR van China"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilanden"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieuw-Caledonië"
+ },
+ "NZ": {
+ "name": "Nieuw-Zeeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelijke Marianen"
+ },
+ "NO": {
+ "name": "Noorwegen"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oost-Timor"
+ },
+ "AT": {
+ "name": "Oostenrijk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestijnse gebieden"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieuw-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilanden"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomonseilanden"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechië"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilanden"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabische Emiraten"
+ },
+ "US": {
+ "name": "Verenigde Staten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Rusland"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "ZA": {
+ "name": "Zuid-Afrika"
+ },
+ "GS": {
+ "name": "Zuid-Georgia en Zuidelijke Sandwicheilanden"
+ },
+ "KR": {
+ "name": "Zuid-Korea"
+ },
+ "SS": {
+ "name": "Zuid-Soedan"
+ },
+ "SE": {
+ "name": "Zweden"
+ },
+ "CH": {
+ "name": "Zwitserland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nmg.json b/library/intl/resources/country/nmg.json
new file mode 100644
index 000000000..63e8d7fb9
--- /dev/null
+++ b/library/intl/resources/country/nmg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistaŋ"
+ },
+ "ZA": {
+ "name": "Afríka yí sí"
+ },
+ "EG": {
+ "name": "Ägyptɛn"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amɛŕka"
+ },
+ "AD": {
+ "name": "Andɔ́ra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguílla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antíga bá Barbúda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Árúba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IL": {
+ "name": "Äsrɛl"
+ },
+ "AZ": {
+ "name": "Azerbaïjaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbado"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BE": {
+ "name": "Bɛlgik"
+ },
+ "BZ": {
+ "name": "Bɛliz"
+ },
+ "BD": {
+ "name": "Bɛŋgladɛsh"
+ },
+ "BM": {
+ "name": "Bɛrmuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Ɛrzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunɛi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominíka"
+ },
+ "EC": {
+ "name": "Ekuateur"
+ },
+ "ER": {
+ "name": "Erytrea"
+ },
+ "ET": {
+ "name": "Ethiopiá"
+ },
+ "EE": {
+ "name": "Ɛstonia"
+ },
+ "FR": {
+ "name": "Fala"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fijiá"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabɔŋ"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gána"
+ },
+ "GI": {
+ "name": "Gilbratar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grɛce"
+ },
+ "GP": {
+ "name": "Guadeloup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine Bisso"
+ },
+ "GQ": {
+ "name": "Guine Ekuatorial"
+ },
+ "PG": {
+ "name": "Guine Papuasi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane Fala"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "DE": {
+ "name": "Jaman"
+ },
+ "JP": {
+ "name": "Japɔn"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibúti"
+ },
+ "JO": {
+ "name": "Jɔrdania"
+ },
+ "GE": {
+ "name": "Jɔrgia"
+ },
+ "NC": {
+ "name": "Kaledoni nwanah"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstaŋ"
+ },
+ "KE": {
+ "name": "Kɛnya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongó Zaïre"
+ },
+ "KP": {
+ "name": "Koré yí bvuɔ"
+ },
+ "KR": {
+ "name": "Koré yí sí"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Ríka"
+ },
+ "CI": {
+ "name": "Kote d´Ivoire"
+ },
+ "KW": {
+ "name": "Kowɛit"
+ },
+ "CO": {
+ "name": "Kɔlɔ́mbia"
+ },
+ "KM": {
+ "name": "Kɔmɔr"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KG": {
+ "name": "Kyrgystaŋ"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenstein"
+ },
+ "LT": {
+ "name": "Lituaniá"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "FK": {
+ "name": "Maŋ má Falkland"
+ },
+ "CV": {
+ "name": "Maŋ́ má Kapvɛr"
+ },
+ "CK": {
+ "name": "Maŋ́ má Kook"
+ },
+ "KY": {
+ "name": "Maŋ́ má kumbi"
+ },
+ "MH": {
+ "name": "Maŋ́ má Marshall"
+ },
+ "NF": {
+ "name": "Maŋ́ má Nɔrfɔrk"
+ },
+ "SB": {
+ "name": "Maŋ́ má Salomɔn"
+ },
+ "TC": {
+ "name": "Maŋ́ má Turk na Kaiko"
+ },
+ "MP": {
+ "name": "Maŋ́ Mariá"
+ },
+ "MA": {
+ "name": "Marɔk"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "YT": {
+ "name": "Mayɔt"
+ },
+ "MX": {
+ "name": "Mɛxik"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "AE": {
+ "name": "Minlambɔ́ Nsaŋ́nsa mí Arabia"
+ },
+ "VI": {
+ "name": "Minsilɛ mí maŋ́ m´Amɛrka"
+ },
+ "VG": {
+ "name": "Minsilɛ́ mímaŋ mí ngɛ̄lɛ̄n"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morisse"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MD": {
+ "name": "Mɔldavia"
+ },
+ "MN": {
+ "name": "Mɔngolia"
+ },
+ "MS": {
+ "name": "Mɔnserrat"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NL": {
+ "name": "Nedɛrland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niuɛ"
+ },
+ "CZ": {
+ "name": "Nlambɔ́ bó tschɛk"
+ },
+ "DO": {
+ "name": "Nlambɔ́ Dominíka"
+ },
+ "GB": {
+ "name": "Nlambɔ́ Ngɛlɛn"
+ },
+ "IO": {
+ "name": "Nlambɔ́ ngɛlɛn ma yí maŋ ntsiɛh"
+ },
+ "NR": {
+ "name": "Noru"
+ },
+ "NO": {
+ "name": "Nɔrvɛg"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AU": {
+ "name": "Östraliá"
+ },
+ "AT": {
+ "name": "Ötrish"
+ },
+ "HN": {
+ "name": "Ɔndúras"
+ },
+ "HU": {
+ "name": "Ɔngría"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palɛstin"
+ },
+ "PW": {
+ "name": "Palo"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "ES": {
+ "name": "Paŋá"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PF": {
+ "name": "Polynesia Fala"
+ },
+ "PL": {
+ "name": "Pɔlɔŋ"
+ },
+ "PT": {
+ "name": "Pɔrtugal"
+ },
+ "PR": {
+ "name": "Puɛrto Riko"
+ },
+ "RE": {
+ "name": "Réuniɔn"
+ },
+ "RO": {
+ "name": "Roumania"
+ },
+ "RU": {
+ "name": "Russi"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts na Nevis"
+ },
+ "SH": {
+ "name": "Saint Lina"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Peter ba Mikelɔn"
+ },
+ "VC": {
+ "name": "Saint Vincent ba Grenadines"
+ },
+ "SV": {
+ "name": "Salvadɔr"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa m ́Amɛ́rka"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé ba Prinship"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "CF": {
+ "name": "Sentrafríka"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychɛlle"
+ },
+ "CN": {
+ "name": "Shine"
+ },
+ "SL": {
+ "name": "Sierra Leɔn"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sipria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SE": {
+ "name": "Suɛd"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "CH": {
+ "name": "Switzɛrland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Taïland"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TJ": {
+ "name": "Tajikistaŋ"
+ },
+ "TZ": {
+ "name": "Tanzánía"
+ },
+ "TL": {
+ "name": "Timɔr tsindikēh"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tɔnga"
+ },
+ "TT": {
+ "name": "Trinidad ba Tobágó"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tshad"
+ },
+ "CL": {
+ "name": "Tshili"
+ },
+ "TN": {
+ "name": "Tunisiá"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmɛnistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalú"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrɛn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbǝkistaŋ"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaŋ"
+ },
+ "VE": {
+ "name": "Vǝnǝzuela"
+ },
+ "VN": {
+ "name": "Viɛtnam"
+ },
+ "WF": {
+ "name": "Wallis ba Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yǝmɛn"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeland nwanah"
+ },
+ "ZW": {
+ "name": "Zimbabwǝ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nn.json b/library/intl/resources/country/nn.json
new file mode 100644
index 000000000..f6188d1de
--- /dev/null
+++ b/library/intl/resources/country/nn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "TL": {
+ "name": "Aust-Timor"
+ },
+ "AT": {
+ "name": "Austerrike"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia og Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "Britiske område i Det indiske hav"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøyane"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmasøya"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cookøyane"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "Dei amerikanske jomfruøyane"
+ },
+ "VG": {
+ "name": "Dei britiske jomfruøyane"
+ },
+ "AE": {
+ "name": "Dei sameinte arabiske emirata"
+ },
+ "DO": {
+ "name": "Den dominikanske republikken"
+ },
+ "CF": {
+ "name": "Den sentralafrikanske republikken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "GQ": {
+ "name": "Ekvatorial-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbeinskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsøyane"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinane"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesia"
+ },
+ "TF": {
+ "name": "Franske sørområde"
+ },
+ "FO": {
+ "name": "Færøyane"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "GR": {
+ "name": "Hellas"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong S.A.R. Kina"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodsja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanariøyane"
+ },
+ "CV": {
+ "name": "Kapp Verde"
+ },
+ "BQ": {
+ "name": "Karibisk Nederland"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosøyane"
+ },
+ "KM": {
+ "name": "Komorene"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "BY": {
+ "name": "Kviterussland"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao S.A.R. Kina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivane"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløyane"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiaføderasjonen"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "SX": {
+ "name": "Nederlandsk St. Martin"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nord-Korea"
+ },
+ "MP": {
+ "name": "Nord-Marianane"
+ },
+ "NO": {
+ "name": "Noreg"
+ },
+ "NF": {
+ "name": "Norfolkøyane"
+ },
+ "NC": {
+ "name": "Ny-Caledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsk territorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SB": {
+ "name": "Salomonøyane"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé og Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellane"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "KN": {
+ "name": "St. Christopher og Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "PM": {
+ "name": "St. Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent og Grenadinane"
+ },
+ "GB": {
+ "name": "Storbritannia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "CH": {
+ "name": "Sveits"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "ZA": {
+ "name": "Sør-Afrika"
+ },
+ "GS": {
+ "name": "Sør-Georgia og Sør-Sandwich-øyane"
+ },
+ "KR": {
+ "name": "Sør-Korea"
+ },
+ "SS": {
+ "name": "Sør-Sudan"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CZ": {
+ "name": "Tsjekkia"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøyane"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USAs ytre småøyar"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vest-Sahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Åland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nus.json b/library/intl/resources/country/nus.json
new file mode 100644
index 000000000..e48b5158b
--- /dev/null
+++ b/library/intl/resources/country/nus.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Abganithtan"
+ },
+ "AZ": {
+ "name": "Adhe̱rbe̱ja̱n"
+ },
+ "AR": {
+ "name": "Aɛrgentin"
+ },
+ "AM": {
+ "name": "Aɛrmänia"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albänia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerika thamow"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguaa kɛnɛ Barbuda"
+ },
+ "AO": {
+ "name": "Aŋgola"
+ },
+ "AI": {
+ "name": "Aŋguɛla"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Athɔra̱lia"
+ },
+ "AT": {
+ "name": "Athtɛria"
+ },
+ "BS": {
+ "name": "Bämuɔth"
+ },
+ "BR": {
+ "name": "Bäraadhiil"
+ },
+ "BB": {
+ "name": "Bärbadoth"
+ },
+ "BH": {
+ "name": "Ba̱reen"
+ },
+ "BY": {
+ "name": "Be̱lɛruth"
+ },
+ "BE": {
+ "name": "Be̱lgim"
+ },
+ "BD": {
+ "name": "Bengeladiec"
+ },
+ "BJ": {
+ "name": "Be̱ni̱n"
+ },
+ "BM": {
+ "name": "Be̱rmudaa"
+ },
+ "BZ": {
+ "name": "Bilidha"
+ },
+ "BW": {
+ "name": "Bothiwaana"
+ },
+ "BA": {
+ "name": "Bothnia kɛnɛ ɣärgobinia"
+ },
+ "BG": {
+ "name": "Bulga̱a̱ria"
+ },
+ "BO": {
+ "name": "Bulibia"
+ },
+ "BF": {
+ "name": "Burkinɛ pa̱thu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunɛy"
+ },
+ "VG": {
+ "name": "Burutic dhuɔ̱ɔ̱l be̱rgin"
+ },
+ "IO": {
+ "name": "Burutic ɣe̱ndian oce̱n"
+ },
+ "BT": {
+ "name": "Buta̱n"
+ },
+ "TD": {
+ "name": "Ca̱d"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayna"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CF": {
+ "name": "Cɛntrɔl aprika repuɔblic"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili̱"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CA": {
+ "name": "Känɛda"
+ },
+ "KY": {
+ "name": "Kaymɛn ɣa̱ylɛn"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CM": {
+ "name": "Kɛmɛrun"
+ },
+ "CV": {
+ "name": "Kɛp bedi ɣa̱ylɛn"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CI": {
+ "name": "Kodibo̱o̱"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KH": {
+ "name": "Kombodia"
+ },
+ "KM": {
+ "name": "Komruth"
+ },
+ "HR": {
+ "name": "Korwaatia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kothtirika"
+ },
+ "CG": {
+ "name": "Kɔŋgɔ"
+ },
+ "CK": {
+ "name": "Kuk ɣa̱ylɛn"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nyn.json b/library/intl/resources/country/nyn.json
new file mode 100644
index 000000000..3340bf9ca
--- /dev/null
+++ b/library/intl/resources/country/nyn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "CI": {
+ "name": "Aivore Kositi"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AE": {
+ "name": "Amahanga ga Buharabu ageeteereine"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AG": {
+ "name": "Angiguwa na Babuda"
+ },
+ "AO": {
+ "name": "Angora"
+ },
+ "AI": {
+ "name": "Angwira"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "DZ": {
+ "name": "Arigyeriya"
+ },
+ "AM": {
+ "name": "Arimeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AL": {
+ "name": "Arubania"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azabagyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangaradeshi"
+ },
+ "BY": {
+ "name": "Bararusi"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "BZ": {
+ "name": "Berize"
+ },
+ "BF": {
+ "name": "Bokina Faso"
+ },
+ "BO": {
+ "name": "Boriiviya"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boziniya na Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "FR": {
+ "name": "Bufaransa"
+ },
+ "FI": {
+ "name": "Bufini"
+ },
+ "DE": {
+ "name": "Bugirimaani"
+ },
+ "GB": {
+ "name": "Bungyereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BG": {
+ "name": "Burugariya"
+ },
+ "TL": {
+ "name": "Burugweizooba bwa Timori"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TR": {
+ "name": "Buturuki \/Take"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Deenimaaka"
+ },
+ "CD": {
+ "name": "Demokoratika Ripaaburika ya Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "MP": {
+ "name": "Ebizinga by’amatemba ga Mariana"
+ },
+ "TC": {
+ "name": "Ebizinga bya Buturuki na Kaiko"
+ },
+ "FK": {
+ "name": "Ebizinga bya Faakilanda"
+ },
+ "IO": {
+ "name": "Ebizinga bya Indian ebya Bungyereza"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepuvade"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kuuku"
+ },
+ "MH": {
+ "name": "Ebizinga bya Marshaa"
+ },
+ "SB": {
+ "name": "Ebizinga bya Surimaani"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini ebya Amerika"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebya Bungyereza"
+ },
+ "CF": {
+ "name": "Eihanga rya Rwagati ya Afirika"
+ },
+ "NF": {
+ "name": "Ekizinga Norifoko"
+ },
+ "SV": {
+ "name": "Eri Salivado"
+ },
+ "ER": {
+ "name": "Eriteriya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Ethiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "PH": {
+ "name": "Firipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabooni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Giburaata"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guni"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Guriinirandi"
+ },
+ "GR": {
+ "name": "Guriisi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana ya Bufaransa"
+ },
+ "GP": {
+ "name": "Gwaderupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemara"
+ },
+ "JM": {
+ "name": "Gyamaika"
+ },
+ "JP": {
+ "name": "Gyapaani"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "GE": {
+ "name": "Gyogiya"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hoorandi"
+ },
+ "EC": {
+ "name": "Ikweda"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indoneeziya"
+ },
+ "IQ": {
+ "name": "Iraaka"
+ },
+ "IR": {
+ "name": "Iraani"
+ },
+ "IE": {
+ "name": "Irerandi"
+ },
+ "IL": {
+ "name": "Isirairi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itare"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasiya"
+ },
+ "KR": {
+ "name": "Koreya Amashuuma"
+ },
+ "KP": {
+ "name": "Koreya Amatemba"
+ },
+ "CO": {
+ "name": "Korombiya"
+ },
+ "KM": {
+ "name": "Koromo"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweiti"
+ },
+ "LU": {
+ "name": "Lakizembaaga"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Marawi"
+ },
+ "MY": {
+ "name": "marayizia"
+ },
+ "ML": {
+ "name": "Mari"
+ },
+ "MV": {
+ "name": "Maridives"
+ },
+ "MT": {
+ "name": "Marita"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MK": {
+ "name": "Masedoonia"
+ },
+ "MU": {
+ "name": "Maurishiasi"
+ },
+ "MR": {
+ "name": "Mauriteeniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikironesiya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoria"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MD": {
+ "name": "Moridova"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanamar"
+ },
+ "NE": {
+ "name": "Naigya"
+ },
+ "NG": {
+ "name": "Naigyeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepo"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niukaredonia"
+ },
+ "NZ": {
+ "name": "Niuzirandi"
+ },
+ "NO": {
+ "name": "Noorwe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "AU": {
+ "name": "Ositureeriya"
+ },
+ "AT": {
+ "name": "Osituria"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palaawu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PS": {
+ "name": "Parestiina na Gaza"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkaini"
+ },
+ "PT": {
+ "name": "Pocugo"
+ },
+ "PF": {
+ "name": "Polinesia ya Bufaransa"
+ },
+ "PL": {
+ "name": "Poorandi"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "DO": {
+ "name": "Ripaaburika ya Dominica"
+ },
+ "CZ": {
+ "name": "Ripaaburika ya Zeeki"
+ },
+ "RE": {
+ "name": "Riyuniyoni"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Rrasha"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saipurasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa ya Ameerika"
+ },
+ "SA": {
+ "name": "Saudi Areebiya"
+ },
+ "ZA": {
+ "name": "Sausi Afirika"
+ },
+ "ST": {
+ "name": "Sawo Tome na Purinsipo"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kittis na Nevisi"
+ },
+ "PM": {
+ "name": "Senti Piyerre na Mikweron"
+ },
+ "LC": {
+ "name": "Senti Rusiya"
+ },
+ "VC": {
+ "name": "Senti Vinsent na Gurenadini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shesheresi"
+ },
+ "SG": {
+ "name": "Singapo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "LK": {
+ "name": "Siriranka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovaakiya"
+ },
+ "SI": {
+ "name": "Sirovaaniya"
+ },
+ "SL": {
+ "name": "Sirra Riyooni"
+ },
+ "SO": {
+ "name": "Somaariya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swisi"
+ },
+ "TH": {
+ "name": "Tairandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TW": {
+ "name": "Tayiwaani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokerawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TT": {
+ "name": "Turinidad na Tobago"
+ },
+ "TM": {
+ "name": "Turukimenisitani"
+ },
+ "TV": {
+ "name": "Tuvaru"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukureini"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzibekisitani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuwera"
+ },
+ "VN": {
+ "name": "Viyetinaamu"
+ },
+ "WF": {
+ "name": "Warris na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/or.json b/library/intl/resources/country/or.json
new file mode 100644
index 000000000..4b225825b
--- /dev/null
+++ b/library/intl/resources/country/or.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AT": {
+ "name": "ଅଷ୍ଟ୍ରିଆ"
+ },
+ "AU": {
+ "name": "ଅଷ୍ଟ୍ରେଲିଆ"
+ },
+ "CI": {
+ "name": "ଆଇବରୀ କୋଷ୍ଟ"
+ },
+ "IM": {
+ "name": "ଆଇଲ୍ ଅଫ୍ ମୈନ୍"
+ },
+ "IS": {
+ "name": "ଆଇସଲ୍ୟାଣ୍ଡ"
+ },
+ "AI": {
+ "name": "ଆଙ୍ଗୁଇଲ୍ଲା"
+ },
+ "AO": {
+ "name": "ଆଙ୍ଗୋଲା"
+ },
+ "AZ": {
+ "name": "ଆଜେରବାଇଜାନ୍"
+ },
+ "AG": {
+ "name": "ଆଣ୍ଟିଗୁଆ ଏବଂ ବାରବୁଦା"
+ },
+ "AD": {
+ "name": "ଆଣ୍ଡୋରା"
+ },
+ "AF": {
+ "name": "ଆଫାଗାନିସ୍ତାନ୍"
+ },
+ "AS": {
+ "name": "ଆମେରିକାନ୍ ସାମୋଆ"
+ },
+ "IE": {
+ "name": "ଆୟରଲ୍ୟାଣ୍ଡ"
+ },
+ "AW": {
+ "name": "ଆରୁବା"
+ },
+ "AR": {
+ "name": "ଆର୍ଜେଣ୍ଟିନା"
+ },
+ "AQ": {
+ "name": "ଆର୍ଣ୍ଟକଟିକା"
+ },
+ "AM": {
+ "name": "ଆର୍ମେନିଆ"
+ },
+ "DZ": {
+ "name": "ଆଲଜେରିଆ"
+ },
+ "AL": {
+ "name": "ଆଲବାନିଆ"
+ },
+ "AX": {
+ "name": "ଆଲାଣ୍ଡ ଆଇସଲ୍ୟାଣ୍ଡ"
+ },
+ "GQ": {
+ "name": "ଇକ୍ବାଟେରିଆଲ୍ ଗୁଇନିଆ"
+ },
+ "EC": {
+ "name": "ଇକ୍ୱାଡୋର୍"
+ },
+ "EG": {
+ "name": "ଇଜିପ୍ଟ"
+ },
+ "IT": {
+ "name": "ଇଟାଲୀ"
+ },
+ "ID": {
+ "name": "ଇଣ୍ଡୋନେସିଆ"
+ },
+ "ET": {
+ "name": "ଇଥିଓପିଆ"
+ },
+ "IQ": {
+ "name": "ଇରାକ୍"
+ },
+ "IR": {
+ "name": "ଇରାନ୍"
+ },
+ "ER": {
+ "name": "ଇରିଟ୍ରିୟା"
+ },
+ "IL": {
+ "name": "ଇସ୍ରାଏଲ୍"
+ },
+ "UG": {
+ "name": "ଉଗାଣ୍ଡା"
+ },
+ "UZ": {
+ "name": "ଉଜବେକିସ୍ଥାନ୍"
+ },
+ "KP": {
+ "name": "ଉତ୍ତର କୋରିଆ"
+ },
+ "MP": {
+ "name": "ଉତ୍ତର ମାରିଆନା ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "UY": {
+ "name": "ଉରୁଗୁଏ"
+ },
+ "SV": {
+ "name": "ଏଲ୍ ସାଲଭାଡୋର୍"
+ },
+ "EE": {
+ "name": "ଏସ୍ତୋନିଆ"
+ },
+ "OM": {
+ "name": "ଓମାନ୍"
+ },
+ "CD": {
+ "name": "କଙ୍ଗୋ-କିନସାସା"
+ },
+ "CG": {
+ "name": "କଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେ"
+ },
+ "QA": {
+ "name": "କତାର୍"
+ },
+ "KZ": {
+ "name": "କାଜାକାସ୍ଥାନ୍"
+ },
+ "CA": {
+ "name": "କାନାଡା"
+ },
+ "CM": {
+ "name": "କାମେରୁନ୍"
+ },
+ "KM": {
+ "name": "କାମୋରସ୍"
+ },
+ "KH": {
+ "name": "କାମ୍ବୋଡିଆ"
+ },
+ "KI": {
+ "name": "କିରିବାଟୀ"
+ },
+ "KG": {
+ "name": "କିର୍ଗିଜିସ୍ଥାନ"
+ },
+ "KW": {
+ "name": "କୁଏତ୍"
+ },
+ "CK": {
+ "name": "କୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡ"
+ },
+ "KE": {
+ "name": "କେନିୟା"
+ },
+ "CV": {
+ "name": "କେପ୍ ଭର୍ଦେ"
+ },
+ "KY": {
+ "name": "କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "CC": {
+ "name": "କୋକୋସ୍ ଆଇସଲ୍ୟାଣ୍ଡ"
+ },
+ "CO": {
+ "name": "କୋଲମ୍ବିଆ"
+ },
+ "CR": {
+ "name": "କୋଷ୍ଟା ରିକା"
+ },
+ "HR": {
+ "name": "କ୍ରୋଆଟିଆ"
+ },
+ "CU": {
+ "name": "କ୍ୱିବା"
+ },
+ "CX": {
+ "name": "ଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ"
+ },
+ "GA": {
+ "name": "ଗାବୋନ୍"
+ },
+ "GM": {
+ "name": "ଗାମ୍ବିଆ"
+ },
+ "GU": {
+ "name": "ଗୁଆମ୍"
+ },
+ "GY": {
+ "name": "ଗୁଇନା"
+ },
+ "GW": {
+ "name": "ଗୁଇନିଆ-ବିସାଉ"
+ },
+ "GT": {
+ "name": "ଗୁଏତମାଲା"
+ },
+ "GN": {
+ "name": "ଗୁଏନେଆ"
+ },
+ "GG": {
+ "name": "ଗୁଏରନେସି"
+ },
+ "GP": {
+ "name": "ଗୌଡେଲୌପେ"
+ },
+ "GL": {
+ "name": "ଗ୍ରୀନଲ୍ୟାଣ୍ଡ"
+ },
+ "GR": {
+ "name": "ଗ୍ରୀସ୍"
+ },
+ "GD": {
+ "name": "ଗ୍ରେନାଡା"
+ },
+ "GH": {
+ "name": "ଘାନା"
+ },
+ "TD": {
+ "name": "ଚାଦ୍"
+ },
+ "CN": {
+ "name": "ଚିନ୍"
+ },
+ "CL": {
+ "name": "ଚିଲ୍ଲୀ"
+ },
+ "CZ": {
+ "name": "ଚେକ୍ ସାଧାରଣତନ୍ତ୍ର"
+ },
+ "GE": {
+ "name": "ଜର୍ଜିଆ"
+ },
+ "DE": {
+ "name": "ଜର୍ମାନୀ"
+ },
+ "JE": {
+ "name": "ଜର୍ସି"
+ },
+ "JP": {
+ "name": "ଜାପାନ୍"
+ },
+ "JM": {
+ "name": "ଜାମାଇକା"
+ },
+ "ZM": {
+ "name": "ଜାମ୍ବିଆ"
+ },
+ "GI": {
+ "name": "ଜିବ୍ରାଲ୍ଟର୍"
+ },
+ "ZW": {
+ "name": "ଜିମ୍ବାୱେ"
+ },
+ "JO": {
+ "name": "ଜୋର୍ଡାନ୍"
+ },
+ "TV": {
+ "name": "ଟୁଭାଲୁ"
+ },
+ "TK": {
+ "name": "ଟୋକେଲାଉ"
+ },
+ "TG": {
+ "name": "ଟୋଗୋ"
+ },
+ "TO": {
+ "name": "ଟୋଙ୍ଗା"
+ },
+ "DJ": {
+ "name": "ଡିବୌଟି"
+ },
+ "DK": {
+ "name": "ଡେନମାର୍କ"
+ },
+ "DO": {
+ "name": "ଡୋମିନକାନ୍ ପ୍ରଜାତନ୍ତ୍ର"
+ },
+ "DM": {
+ "name": "ଡୋମିନାକା"
+ },
+ "TW": {
+ "name": "ତାଇୱାନ୍"
+ },
+ "TJ": {
+ "name": "ତାଜିକିସ୍ଥାନ୍"
+ },
+ "TZ": {
+ "name": "ତାଞ୍ଜାନିଆ"
+ },
+ "TN": {
+ "name": "ତୁନିସିଆ"
+ },
+ "TM": {
+ "name": "ତୁର୍କମେନିସ୍ତାନ୍"
+ },
+ "TC": {
+ "name": "ତୁର୍କସ୍ ଏବଂ ସାଇକସ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "TR": {
+ "name": "ତୁର୍କୀ"
+ },
+ "TT": {
+ "name": "ତ୍ରିନିଦାଦ୍ ଏବଂ ଟୋବାଗୋ"
+ },
+ "TH": {
+ "name": "ଥାଇଲାଣ୍ଡ"
+ },
+ "ZA": {
+ "name": "ଦକ୍ଷିଣ ଆଫ୍ରିକା"
+ },
+ "KR": {
+ "name": "ଦକ୍ଷିଣ କୋରିଆ"
+ },
+ "GS": {
+ "name": "ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "SS": {
+ "name": "ଦକ୍ଷିନ ସୁଦାନ"
+ },
+ "NF": {
+ "name": "ନରଫ୍ଲକ୍ ଦ୍ବୀପ"
+ },
+ "NO": {
+ "name": "ନରୱେ"
+ },
+ "NE": {
+ "name": "ନାଇଜର୍"
+ },
+ "NG": {
+ "name": "ନାଇଜେରିଆ"
+ },
+ "NR": {
+ "name": "ନାଉରୁ"
+ },
+ "NA": {
+ "name": "ନାମ୍ବିଆ"
+ },
+ "NU": {
+ "name": "ନିଉ"
+ },
+ "NI": {
+ "name": "ନିକାରାଗୁଆ"
+ },
+ "NC": {
+ "name": "ନୂତନ କାଲେଡୋନିଆ"
+ },
+ "NL": {
+ "name": "ନେଦରଲ୍ୟାଣ୍ଡ"
+ },
+ "NP": {
+ "name": "ନେପାଳ"
+ },
+ "NZ": {
+ "name": "ନ୍ୟୁଜିଲାଣ୍ଡ"
+ },
+ "PG": {
+ "name": "ପପୁଆ ନ୍ୟୁ ଗୁଏନିଆ"
+ },
+ "PT": {
+ "name": "ପର୍ତ୍ତୁଗାଲ୍"
+ },
+ "EH": {
+ "name": "ପଶ୍ଚିମ ସାହାରା"
+ },
+ "PK": {
+ "name": "ପାକିସ୍ତାନ"
+ },
+ "PA": {
+ "name": "ପାନାମା"
+ },
+ "PY": {
+ "name": "ପାରାଗୁଏ"
+ },
+ "PW": {
+ "name": "ପାଲାଉ"
+ },
+ "PS": {
+ "name": "ପାଲେସ୍ତେନିଆ"
+ },
+ "PN": {
+ "name": "ପିଟକାଇରିନ୍"
+ },
+ "PR": {
+ "name": "ପୁଏର୍ତ୍ତୋ ରିକୋ"
+ },
+ "TL": {
+ "name": "ପୁର୍ବ ତିମୋର୍"
+ },
+ "PE": {
+ "name": "ପେରୁ"
+ },
+ "PL": {
+ "name": "ପୋଲାଣ୍ଡ"
+ },
+ "TF": {
+ "name": "ଫରାସୀ ଦକ୍ଷିଣ କ୍ଷେତ୍ର"
+ },
+ "FK": {
+ "name": "ଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "FO": {
+ "name": "ଫାରୋଇ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "FJ": {
+ "name": "ଫିଜି"
+ },
+ "FI": {
+ "name": "ଫିନଲ୍ୟାଣ୍ଡ"
+ },
+ "PH": {
+ "name": "ଫିଲିପାଇନସ୍"
+ },
+ "FR": {
+ "name": "ଫ୍ରାନ୍ସ"
+ },
+ "GF": {
+ "name": "ଫ୍ରେଞ୍ଚ ଗୁଇନା"
+ },
+ "PF": {
+ "name": "ଫ୍ରେଞ୍ଚ ପଲିନେସିଆ"
+ },
+ "BM": {
+ "name": "ବରମୁଡା"
+ },
+ "BD": {
+ "name": "ବାଙ୍ଗଲାଦେଶ୍"
+ },
+ "BB": {
+ "name": "ବାରବାଡୋସ୍"
+ },
+ "BS": {
+ "name": "ବାହାମାସ୍"
+ },
+ "BH": {
+ "name": "ବାହାରିନ୍"
+ },
+ "BI": {
+ "name": "ବୁରୁନ୍ଦି"
+ },
+ "BF": {
+ "name": "ବୁର୍କିନୋ ଫାସୋ"
+ },
+ "BG": {
+ "name": "ବୁଲଗେରିଆ"
+ },
+ "BJ": {
+ "name": "ବେନିନ୍"
+ },
+ "BE": {
+ "name": "ବେଲଜିୟମ୍"
+ },
+ "BY": {
+ "name": "ବେଲାରୁଷ୍"
+ },
+ "BZ": {
+ "name": "ବେଲିଜ୍"
+ },
+ "BW": {
+ "name": "ବୋଟସ୍ବାନ୍"
+ },
+ "BO": {
+ "name": "ବୋଲଭିଆ"
+ },
+ "BA": {
+ "name": "ବୋସନିଆ ଏବଂ ହର୍ଜଗୋଭିନା"
+ },
+ "BR": {
+ "name": "ବ୍ରାଜିଲ୍"
+ },
+ "VG": {
+ "name": "ବ୍ରିଟିଶ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "IO": {
+ "name": "ବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ର"
+ },
+ "GB": {
+ "name": "ବ୍ରିଟେନ୍"
+ },
+ "BN": {
+ "name": "ବ୍ରୁନେଇ"
+ },
+ "VA": {
+ "name": "ଭାଟିକାନ୍"
+ },
+ "VU": {
+ "name": "ଭାନୁଆତୁ"
+ },
+ "IN": {
+ "name": "ଭାରତ"
+ },
+ "VN": {
+ "name": "ଭିଏତନାମ୍"
+ },
+ "BT": {
+ "name": "ଭୁଟାନ୍"
+ },
+ "VE": {
+ "name": "ଭେନଜୁଏଲା"
+ },
+ "MN": {
+ "name": "ମଙ୍ଗୋଲିଆ"
+ },
+ "ME": {
+ "name": "ମଣ୍ଟେଗ୍ରୋ"
+ },
+ "MS": {
+ "name": "ମଣ୍ଟେସେରାଟ୍"
+ },
+ "CF": {
+ "name": "ମଧ୍ୟ ଆଫ୍ରିକୀୟ ଗଣତନ୍ତ୍ର"
+ },
+ "FM": {
+ "name": "ମାଇକ୍ରୋନେସିଆ"
+ },
+ "MR": {
+ "name": "ମାଉରିଟାନିଆ"
+ },
+ "MO": {
+ "name": "ମାକାଉ SAR ଚିନ୍"
+ },
+ "MG": {
+ "name": "ମାଡାଗାସ୍କର୍"
+ },
+ "YT": {
+ "name": "ମାୟୋଟେ"
+ },
+ "MQ": {
+ "name": "ମାର୍ଟିନିକ୍ୟୁ"
+ },
+ "MH": {
+ "name": "ମାର୍ଶଲ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "MD": {
+ "name": "ମାଲଡୋଭା"
+ },
+ "MW": {
+ "name": "ମାଲୱି"
+ },
+ "MY": {
+ "name": "ମାଲେସିଆ"
+ },
+ "MT": {
+ "name": "ମାଲ୍ଟା"
+ },
+ "MV": {
+ "name": "ମାଳଦ୍ବୀପ"
+ },
+ "ML": {
+ "name": "ମାଳୀ"
+ },
+ "MK": {
+ "name": "ମାସେଡୋନିଆ"
+ },
+ "MM": {
+ "name": "ମିୟାମାର୍"
+ },
+ "MX": {
+ "name": "ମେକ୍ସିକୋ"
+ },
+ "MZ": {
+ "name": "ମୋଜାମ୍ବିକ୍ୟୁ"
+ },
+ "MC": {
+ "name": "ମୋନାକୋ"
+ },
+ "MA": {
+ "name": "ମୋରୋକ୍କୋ"
+ },
+ "MU": {
+ "name": "ମୌରିସସ୍"
+ },
+ "VI": {
+ "name": "ୟୁଏସ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "US": {
+ "name": "ଯୁକ୍ତ ରାଷ୍ଟ୍ର ଆମେରିକା"
+ },
+ "UA": {
+ "name": "ୟୁକ୍ରାଇନ୍"
+ },
+ "UM": {
+ "name": "ୟୁନାଇଟେଡ୍ ଷ୍ଟେଟସ୍ ମାଇନର୍ ଆଉଟଲେଇଂ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "YE": {
+ "name": "ୟେମେନ୍"
+ },
+ "RW": {
+ "name": "ରାୱାଣ୍ଡା"
+ },
+ "RE": {
+ "name": "ରିୟୁନିଅନ୍"
+ },
+ "RU": {
+ "name": "ରୁଷିଆ"
+ },
+ "RO": {
+ "name": "ରୋମାନିଆ"
+ },
+ "LU": {
+ "name": "ଲକ୍ସେମବର୍ଗ"
+ },
+ "LA": {
+ "name": "ଲାଓସ୍"
+ },
+ "LV": {
+ "name": "ଲାଟଭିଆ"
+ },
+ "LI": {
+ "name": "ଲିଚେସ୍ତିଆନାନ୍"
+ },
+ "LT": {
+ "name": "ଲିଥାଆନିଆ"
+ },
+ "LY": {
+ "name": "ଲିବିଆ"
+ },
+ "LR": {
+ "name": "ଲିବେରିଆ"
+ },
+ "LB": {
+ "name": "ଲେବାନନ୍"
+ },
+ "LS": {
+ "name": "ଲେସୋଥୋ"
+ },
+ "WF": {
+ "name": "ୱାଲିସ୍ ଏବଂ ଫୁତୁନା"
+ },
+ "LK": {
+ "name": "ଶ୍ରୀଲଙ୍କା"
+ },
+ "AE": {
+ "name": "ସଂଯୁକ୍ତ ଆରବ ଏମିରେଟସ୍"
+ },
+ "RS": {
+ "name": "ସର୍ବିଆ"
+ },
+ "CY": {
+ "name": "ସାଇପ୍ରସ୍"
+ },
+ "SA": {
+ "name": "ସାଉଦି ଆରବିଆ"
+ },
+ "ST": {
+ "name": "ସାଓ ଟୋମେ ଏବଂ ପ୍ରିନସିପି"
+ },
+ "SM": {
+ "name": "ସାନ୍ ମାରିନୋ"
+ },
+ "WS": {
+ "name": "ସାମୋଆ"
+ },
+ "SJ": {
+ "name": "ସାଲ୍ଭାର୍ଡ ଏବଂ ଜାନ୍ ମାୟୋନ୍"
+ },
+ "SL": {
+ "name": "ସିଓରା ଲିଓନ୍"
+ },
+ "SG": {
+ "name": "ସିଙ୍ଗାପୁର୍"
+ },
+ "SY": {
+ "name": "ସିରିଆ"
+ },
+ "SD": {
+ "name": "ସୁଦାନ୍"
+ },
+ "SR": {
+ "name": "ସୁରିନାମ"
+ },
+ "SC": {
+ "name": "ସେଚେଲସ୍"
+ },
+ "KN": {
+ "name": "ସେଣ୍ଟ କିଟସ୍ ଏଣ୍ଡ ନେଭିସ୍"
+ },
+ "PM": {
+ "name": "ସେଣ୍ଟ ପିଏରେ ଏବଂ ମିକ୍ବାଲୋନ୍"
+ },
+ "BL": {
+ "name": "ସେଣ୍ଟ ବାର୍ଥେଲେମି"
+ },
+ "VC": {
+ "name": "ସେଣ୍ଟ ଭିନସେଣ୍ଟ ଏବଂ ଦି ଗ୍ରେନାଡିସ୍"
+ },
+ "MF": {
+ "name": "ସେଣ୍ଟ ମାର୍ଟିନ୍"
+ },
+ "LC": {
+ "name": "ସେଣ୍ଟ ଲୁସିଆ"
+ },
+ "SH": {
+ "name": "ସେଣ୍ଟ ହେଲେନା"
+ },
+ "SN": {
+ "name": "ସେନେଗାଲ୍"
+ },
+ "SO": {
+ "name": "ସୋମାଲିଆ"
+ },
+ "SB": {
+ "name": "ସୋଲୋମନ୍ ଦ୍ବୀପପୁଞ୍ଜ"
+ },
+ "ES": {
+ "name": "ସ୍ପେନ୍"
+ },
+ "SZ": {
+ "name": "ସ୍ବାଜିଲାଣ୍ଡ"
+ },
+ "CH": {
+ "name": "ସ୍ବିଜରଲ୍ୟାଣ୍ଡ"
+ },
+ "SK": {
+ "name": "ସ୍ଲୋଭାକିଆ"
+ },
+ "SI": {
+ "name": "ସ୍ଲୋଭେନିଆ"
+ },
+ "SE": {
+ "name": "ସ୍ୱେଡେନ୍"
+ },
+ "HK": {
+ "name": "ହଂକଂ ବିଶେଷ ପ୍ରଶାସନିକ କ୍ଷେତ୍ର ଚୀନ୍"
+ },
+ "HU": {
+ "name": "ହଙ୍ଗେରୀ"
+ },
+ "HT": {
+ "name": "ହାଇତି"
+ },
+ "HN": {
+ "name": "ହୋଣ୍ଡାରୁସ୍"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pa.json b/library/intl/resources/country/pa.json
new file mode 100644
index 000000000..cd7671ca5
--- /dev/null
+++ b/library/intl/resources/country/pa.json
@@ -0,0 +1,761 @@
+{
+ "UZ": {
+ "name": "ਉਜ਼ਬੇਕਿਸਤਾਨ"
+ },
+ "KP": {
+ "name": "ਉੱਤਰੀ ਕੋਰੀਆ"
+ },
+ "MP": {
+ "name": "ਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂ"
+ },
+ "UY": {
+ "name": "ਉਰੂਗਵੇ"
+ },
+ "OM": {
+ "name": "ਓਮਾਨ"
+ },
+ "AC": {
+ "name": "ਅਸੈਂਸ਼ਨ ਟਾਪੂ"
+ },
+ "AI": {
+ "name": "ਅੰਗੁਇਲਾ"
+ },
+ "AO": {
+ "name": "ਅੰਗੋਲਾ"
+ },
+ "AZ": {
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨ"
+ },
+ "AQ": {
+ "name": "ਅੰਟਾਰਕਟਿਕਾ"
+ },
+ "AD": {
+ "name": "ਅੰਡੋਰਾ"
+ },
+ "AF": {
+ "name": "ਅਫ਼ਗਾਨਿਸਤਾਨ"
+ },
+ "AS": {
+ "name": "ਅਮੈਰੀਕਨ ਸਮੋਆ"
+ },
+ "AR": {
+ "name": "ਅਰਜਨਟੀਨਾ"
+ },
+ "AM": {
+ "name": "ਅਰਮੀਨੀਆ"
+ },
+ "AW": {
+ "name": "ਅਰੂਬਾ"
+ },
+ "SV": {
+ "name": "ਅਲ ਸਲਵਾਡੋਰ"
+ },
+ "DZ": {
+ "name": "ਅਲਜੀਰੀਆ"
+ },
+ "AL": {
+ "name": "ਅਲਬਾਨੀਆ"
+ },
+ "AX": {
+ "name": "ਅਲੈਂਡ ਟਾਪੂ"
+ },
+ "IE": {
+ "name": "ਆਇਰਲੈਂਡ"
+ },
+ "IM": {
+ "name": "ਆਇਲ ਆਫ ਮੈਨ"
+ },
+ "IS": {
+ "name": "ਆਈਸਲੈਂਡ"
+ },
+ "AT": {
+ "name": "ਆਸਟਰੀਆ"
+ },
+ "AU": {
+ "name": "ਆਸਟ੍ਰੇਲੀਆ"
+ },
+ "AG": {
+ "name": "ਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾ"
+ },
+ "EE": {
+ "name": "ਇਸਟੋਨੀਆ"
+ },
+ "EC": {
+ "name": "ਇਕਵੇਡੋਰ"
+ },
+ "IL": {
+ "name": "ਇਜ਼ਰਾਈਲ"
+ },
+ "IT": {
+ "name": "ਇਟਲੀ"
+ },
+ "ID": {
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆ"
+ },
+ "ET": {
+ "name": "ਇਥੋਪੀਆ"
+ },
+ "IQ": {
+ "name": "ਇਰਾਕ"
+ },
+ "ER": {
+ "name": "ਇਰੀਟ੍ਰਿਆ"
+ },
+ "IR": {
+ "name": "ਈਰਾਨ"
+ },
+ "ES": {
+ "name": "ਸਪੇਨ"
+ },
+ "AE": {
+ "name": "ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ"
+ },
+ "US": {
+ "name": "ਸੰਯੁਕਤ ਰਾਜ"
+ },
+ "RS": {
+ "name": "ਸਰਬੀਆ"
+ },
+ "SK": {
+ "name": "ਸਲੋਵਾਕੀਆ"
+ },
+ "SI": {
+ "name": "ਸਲੋਵੇਨੀਆ"
+ },
+ "SZ": {
+ "name": "ਸਵਾਜ਼ੀਲੈਂਡ"
+ },
+ "SJ": {
+ "name": "ਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ ਮਾਯੇਨ"
+ },
+ "CH": {
+ "name": "ਸਵਿਟਜ਼ਰਲੈਂਡ"
+ },
+ "SE": {
+ "name": "ਸਵੀਡਨ"
+ },
+ "LK": {
+ "name": "ਸ੍ਰੀ ਲੰਕਾ"
+ },
+ "SA": {
+ "name": "ਸਾਊਦੀ ਅਰਬ"
+ },
+ "ST": {
+ "name": "ਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰਿੰਸੀਪੇ"
+ },
+ "CY": {
+ "name": "ਸਾਇਪ੍ਰਸ"
+ },
+ "WS": {
+ "name": "ਸਾਮੋਆ"
+ },
+ "EA": {
+ "name": "ਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾ"
+ },
+ "SL": {
+ "name": "ਸਿਏਰਾ ਲਿਓਨ"
+ },
+ "SG": {
+ "name": "ਸਿੰਗਾਪੁਰ"
+ },
+ "SX": {
+ "name": "ਸਿੰਟ ਮਾਰਟੀਨ"
+ },
+ "SY": {
+ "name": "ਸੀਰੀਆ"
+ },
+ "SD": {
+ "name": "ਸੂਡਾਨ"
+ },
+ "SR": {
+ "name": "ਸੂਰੀਨਾਮ"
+ },
+ "SC": {
+ "name": "ਸੇਸ਼ਲਸ"
+ },
+ "SH": {
+ "name": "ਸੇਂਟ ਹੇਲੇਨਾ"
+ },
+ "BL": {
+ "name": "ਸੇਂਟ ਬਾਰਥੇਲੇਮੀ"
+ },
+ "MF": {
+ "name": "ਸੇਂਟ ਮਾਰਟਿਨ"
+ },
+ "LC": {
+ "name": "ਸੇਂਟ ਲੂਸੀਆ"
+ },
+ "VC": {
+ "name": "ਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸ"
+ },
+ "SN": {
+ "name": "ਸੇਨੇਗਲ"
+ },
+ "KN": {
+ "name": "ਸੈਂਟ ਕਿਟਸ ਐਂਡ ਨੇਵਿਸ"
+ },
+ "PM": {
+ "name": "ਸੈਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨ"
+ },
+ "SM": {
+ "name": "ਸੈਨ ਮਰੀਨੋ"
+ },
+ "SO": {
+ "name": "ਸੋਮਾਲੀਆ"
+ },
+ "SB": {
+ "name": "ਸੋਲੋਮਨ ਟਾਪੂ"
+ },
+ "HU": {
+ "name": "ਹੰਗਰੀ"
+ },
+ "HK": {
+ "name": "ਹਾਂਗ ਕਾਂਗ ਐਸਏਆਰ ਚੀਨ"
+ },
+ "HT": {
+ "name": "ਹੈਤੀ"
+ },
+ "HN": {
+ "name": "ਹੋਂਡੁਰਸ"
+ },
+ "KZ": {
+ "name": "ਕਜ਼ਾਖਸਤਾਨ"
+ },
+ "QA": {
+ "name": "ਕਤਰ"
+ },
+ "KH": {
+ "name": "ਕੰਬੋਡੀਆ"
+ },
+ "HR": {
+ "name": "ਕਰੋਏਸ਼ੀਆ"
+ },
+ "CX": {
+ "name": "ਕ੍ਰਿਸਮਿਸ ਟਾਪੂ"
+ },
+ "CD": {
+ "name": "ਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾ"
+ },
+ "CG": {
+ "name": "ਕਾਂਗੋ - ਬ੍ਰਾਜ਼ਾਵਿਲੇ"
+ },
+ "CU": {
+ "name": "ਕਿਊਬਾ"
+ },
+ "KG": {
+ "name": "ਕਿਰਗਿਜ਼ਸਤਾਨ"
+ },
+ "KI": {
+ "name": "ਕਿਰਬਾਤੀ"
+ },
+ "KE": {
+ "name": "ਕੀਨੀਆ"
+ },
+ "CK": {
+ "name": "ਕੁੱਕ ਟਾਪੂ"
+ },
+ "CW": {
+ "name": "ਕੁਰਾਕਾਓ"
+ },
+ "KW": {
+ "name": "ਕੁਵੈਤ"
+ },
+ "CF": {
+ "name": "ਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜ"
+ },
+ "IC": {
+ "name": "ਕੇਨਾਰੀ ਟਾਪੂ"
+ },
+ "CV": {
+ "name": "ਕੇਪ ਵਰਡੇ"
+ },
+ "KY": {
+ "name": "ਕੇਮੈਨ ਟਾਪੂ"
+ },
+ "CA": {
+ "name": "ਕੈਨੇਡਾ"
+ },
+ "CM": {
+ "name": "ਕੈਮਰੂਨ"
+ },
+ "BQ": {
+ "name": "ਕੈਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡ"
+ },
+ "CR": {
+ "name": "ਕੋਸਟਾ ਰੀਕਾ"
+ },
+ "XK": {
+ "name": "ਕੋਸੋਵੋ"
+ },
+ "CC": {
+ "name": "ਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂ"
+ },
+ "CI": {
+ "name": "ਕੋਟ ਡੀਵੋਆਰ"
+ },
+ "KM": {
+ "name": "ਕੋਮੋਰੋਸ"
+ },
+ "CO": {
+ "name": "ਕੋਲੰਬੀਆ"
+ },
+ "GA": {
+ "name": "ਗਬੋਨ"
+ },
+ "GG": {
+ "name": "ਗਰਨਜੀ"
+ },
+ "GR": {
+ "name": "ਗ੍ਰੀਸ"
+ },
+ "GL": {
+ "name": "ਗ੍ਰੀਨਲੈਂਡ"
+ },
+ "GD": {
+ "name": "ਗ੍ਰੇਨਾਡਾ"
+ },
+ "GN": {
+ "name": "ਗਿਨੀ"
+ },
+ "GW": {
+ "name": "ਗਿਨੀ-ਬਿਸਾਉ"
+ },
+ "GT": {
+ "name": "ਗੁਆਟੇਮਾਲਾ"
+ },
+ "GP": {
+ "name": "ਗੁਆਡੇਲੋਪ"
+ },
+ "GU": {
+ "name": "ਗੁਆਮ"
+ },
+ "GY": {
+ "name": "ਗੁਯਾਨਾ"
+ },
+ "GM": {
+ "name": "ਗੈਂਬੀਆ"
+ },
+ "GH": {
+ "name": "ਘਾਨਾ"
+ },
+ "TD": {
+ "name": "ਚਾਡ"
+ },
+ "CL": {
+ "name": "ਚਿਲੀ"
+ },
+ "CN": {
+ "name": "ਚੀਨ"
+ },
+ "CZ": {
+ "name": "ਚੈਕ ਗਣਰਾਜ"
+ },
+ "JP": {
+ "name": "ਜਪਾਨ"
+ },
+ "JM": {
+ "name": "ਜਮਾਇਕਾ"
+ },
+ "JE": {
+ "name": "ਜਰਸੀ"
+ },
+ "DE": {
+ "name": "ਜਰਮਨੀ"
+ },
+ "ZM": {
+ "name": "ਜ਼ਾਮਬੀਆ"
+ },
+ "GE": {
+ "name": "ਜਾਰਜੀਆ"
+ },
+ "JO": {
+ "name": "ਜਾਰਡਨ"
+ },
+ "GI": {
+ "name": "ਜਿਬਰਾਲਟਰ"
+ },
+ "ZW": {
+ "name": "ਜ਼ਿੰਬਾਬਵੇ"
+ },
+ "DJ": {
+ "name": "ਜ਼ੀਬੂਤੀ"
+ },
+ "TA": {
+ "name": "ਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾ"
+ },
+ "TT": {
+ "name": "ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ"
+ },
+ "TN": {
+ "name": "ਟਿਊਨੀਸ਼ੀਆ"
+ },
+ "TC": {
+ "name": "ਟੁਰਕਸ ਅਤੇ ਕੈਕੋਸ ਟਾਪੂ"
+ },
+ "TV": {
+ "name": "ਟੁਵਾਲੂ"
+ },
+ "TK": {
+ "name": "ਟੋਕੇਲਾਉ"
+ },
+ "TG": {
+ "name": "ਟੋਗੋ"
+ },
+ "TO": {
+ "name": "ਟੌਂਗਾ"
+ },
+ "DG": {
+ "name": "ਡੀਇਗੋ ਗਾਰਸੀਆ"
+ },
+ "DK": {
+ "name": "ਡੈਨਮਾਰਕ"
+ },
+ "DM": {
+ "name": "ਡੋਮੀਨਿਕਾ"
+ },
+ "DO": {
+ "name": "ਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜ"
+ },
+ "TZ": {
+ "name": "ਤਨਜ਼ਾਨੀਆ"
+ },
+ "TW": {
+ "name": "ਤਾਇਵਾਨ"
+ },
+ "TJ": {
+ "name": "ਤਾਜਿਕਿਸਤਾਨ"
+ },
+ "TL": {
+ "name": "ਤਿਮੋਰ-ਲੇਸਤੇ"
+ },
+ "TM": {
+ "name": "ਤੁਰਕਮੇਨਿਸਤਾਨ"
+ },
+ "TR": {
+ "name": "ਤੁਰਕੀ"
+ },
+ "TH": {
+ "name": "ਥਾਈਲੈਂਡ"
+ },
+ "ZA": {
+ "name": "ਦੱਖਣੀ ਅਫਰੀਕਾ"
+ },
+ "SS": {
+ "name": "ਦੱਖਣੀ ਸੂਡਾਨ"
+ },
+ "KR": {
+ "name": "ਦੱਖਣੀ ਕੋਰੀਆ"
+ },
+ "GS": {
+ "name": "ਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂ"
+ },
+ "NR": {
+ "name": "ਨਾਉਰੂ"
+ },
+ "NE": {
+ "name": "ਨਾਈਜਰ"
+ },
+ "NG": {
+ "name": "ਨਾਈਜੀਰੀਆ"
+ },
+ "NA": {
+ "name": "ਨਾਮੀਬੀਆ"
+ },
+ "NO": {
+ "name": "ਨਾਰਵੇ"
+ },
+ "NC": {
+ "name": "ਨਿਊ ਕੈਲੇਡੋਨੀਆ"
+ },
+ "NZ": {
+ "name": "ਨਿਊਜ਼ੀਲੈਂਡ"
+ },
+ "NI": {
+ "name": "ਨਿਕਾਰਾਗੁਆ"
+ },
+ "NU": {
+ "name": "ਨਿਯੂ"
+ },
+ "NL": {
+ "name": "ਨੀਦਰਲੈਂਡ"
+ },
+ "NP": {
+ "name": "ਨੇਪਾਲ"
+ },
+ "NF": {
+ "name": "ਨੋਰਫੌਕ ਟਾਪੂ"
+ },
+ "EH": {
+ "name": "ਪੱਛਮੀ ਸਹਾਰਾ"
+ },
+ "PA": {
+ "name": "ਪਨਾਮਾ"
+ },
+ "PW": {
+ "name": "ਪਲਾਉ"
+ },
+ "PK": {
+ "name": "ਪਾਕਿਸਤਾਨ"
+ },
+ "PG": {
+ "name": "ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ"
+ },
+ "PR": {
+ "name": "ਪਿਊਰਟੋ ਰਿਕੋ"
+ },
+ "PN": {
+ "name": "ਪਿਟਕੇਰਨ ਟਾਪੂ"
+ },
+ "PT": {
+ "name": "ਪੁਰਤਗਾਲ"
+ },
+ "PE": {
+ "name": "ਪੇਰੂ"
+ },
+ "PY": {
+ "name": "ਪੈਰਾਗਵੇ"
+ },
+ "PL": {
+ "name": "ਪੋਲੈਂਡ"
+ },
+ "FR": {
+ "name": "ਫ਼ਰਾਂਸ"
+ },
+ "GF": {
+ "name": "ਫ਼ਰੈਂਚ ਗੁਆਨਾ"
+ },
+ "TF": {
+ "name": "ਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼"
+ },
+ "PF": {
+ "name": "ਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆ"
+ },
+ "FK": {
+ "name": "ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ"
+ },
+ "FJ": {
+ "name": "ਫ਼ਿਜੀ"
+ },
+ "FI": {
+ "name": "ਫਿਨਲੈਂਡ"
+ },
+ "PS": {
+ "name": "ਫਿਲੀਸਤੀਨੀ ਖੇਤਰ"
+ },
+ "PH": {
+ "name": "ਫਿਲੀਪੀਂਸ"
+ },
+ "FO": {
+ "name": "ਫੈਰੋ ਟਾਪੂ"
+ },
+ "BS": {
+ "name": "ਬਹਾਮਾਸ"
+ },
+ "BH": {
+ "name": "ਬਹਿਰੀਨ"
+ },
+ "BD": {
+ "name": "ਬੰਗਲਾਦੇਸ਼"
+ },
+ "IO": {
+ "name": "ਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਪ੍ਰਦੇਸ਼"
+ },
+ "BM": {
+ "name": "ਬਰਮੂਡਾ"
+ },
+ "BN": {
+ "name": "ਬਰੂਨੇਈ"
+ },
+ "BR": {
+ "name": "ਬ੍ਰਾਜ਼ੀਲ"
+ },
+ "VG": {
+ "name": "ਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਟਾਪੂ"
+ },
+ "BB": {
+ "name": "ਬਾਰਬਾਡੋਸ"
+ },
+ "BF": {
+ "name": "ਬੁਰਕੀਨਾ ਫ਼ਾਸੋ"
+ },
+ "BI": {
+ "name": "ਬੁਰੁੰਡੀ"
+ },
+ "BG": {
+ "name": "ਬੁਲਗਾਰੀਆ"
+ },
+ "BJ": {
+ "name": "ਬੇਨਿਨ"
+ },
+ "BY": {
+ "name": "ਬੇਲਾਰੂਸ"
+ },
+ "BZ": {
+ "name": "ਬੇਲੀਜ਼"
+ },
+ "BE": {
+ "name": "ਬੈਲਜੀਅਮ"
+ },
+ "BA": {
+ "name": "ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ"
+ },
+ "BW": {
+ "name": "ਬੋਟਸਵਾਨਾ"
+ },
+ "BO": {
+ "name": "ਬੋਲੀਵੀਆ"
+ },
+ "IN": {
+ "name": "ਭਾਰਤ"
+ },
+ "GQ": {
+ "name": "ਭੂ-ਖੰਡੀ ਗਿਨੀ"
+ },
+ "BT": {
+ "name": "ਭੂਟਾਨ"
+ },
+ "MO": {
+ "name": "ਮਕਾਉ ਐਸਏਆਰ ਚੀਨ"
+ },
+ "MN": {
+ "name": "ਮੰਗੋਲੀਆ"
+ },
+ "MW": {
+ "name": "ਮਲਾਵੀ"
+ },
+ "MY": {
+ "name": "ਮਲੇਸ਼ੀਆ"
+ },
+ "FM": {
+ "name": "ਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆ"
+ },
+ "YT": {
+ "name": "ਮਾਯੋਟੀ"
+ },
+ "MH": {
+ "name": "ਮਾਰਸ਼ਲ ਟਾਪੂ"
+ },
+ "MQ": {
+ "name": "ਮਾਰਟੀਨਿਕ"
+ },
+ "MT": {
+ "name": "ਮਾਲਟਾ"
+ },
+ "MV": {
+ "name": "ਮਾਲਦੀਵ"
+ },
+ "ML": {
+ "name": "ਮਾਲੀ"
+ },
+ "MM": {
+ "name": "ਮਿਆਂਮਾਰ (ਬਰਮਾ)"
+ },
+ "EG": {
+ "name": "ਮਿਸਰ"
+ },
+ "MX": {
+ "name": "ਮੈਕਸੀਕੋ"
+ },
+ "MK": {
+ "name": "ਮੈਕਡੋਨੀਆ"
+ },
+ "MG": {
+ "name": "ਮੈਡਾਗਾਸਕਰ"
+ },
+ "MZ": {
+ "name": "ਮੋਜ਼ਾਮਬੀਕ"
+ },
+ "MS": {
+ "name": "ਮੋਂਟਸੇਰਾਤ"
+ },
+ "ME": {
+ "name": "ਮੋਂਟੇਨੇਗਰੋ"
+ },
+ "MC": {
+ "name": "ਮੋਨਾਕੋ"
+ },
+ "MA": {
+ "name": "ਮੋਰੱਕੋ"
+ },
+ "MR": {
+ "name": "ਮੋਰਿਟਾਨੀਆ"
+ },
+ "MD": {
+ "name": "ਮੋਲਡੋਵਾ"
+ },
+ "MU": {
+ "name": "ਮੌਰਿਸ਼ਸ"
+ },
+ "YE": {
+ "name": "ਯਮਨ"
+ },
+ "VI": {
+ "name": "ਯੂ ਐਸ ਵਰਜਿਨ ਟਾਪੂ"
+ },
+ "UM": {
+ "name": "ਯੂ.ਐਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂ"
+ },
+ "UA": {
+ "name": "ਯੂਕਰੇਨ"
+ },
+ "UG": {
+ "name": "ਯੂਗਾਂਡਾ"
+ },
+ "GB": {
+ "name": "ਯੂਨਾਈਟਡ ਕਿੰਗਡਮ"
+ },
+ "RW": {
+ "name": "ਰਵਾਂਡਾ"
+ },
+ "RE": {
+ "name": "ਰਿਯੂਨੀਅਨ"
+ },
+ "RU": {
+ "name": "ਰੂਸ"
+ },
+ "RO": {
+ "name": "ਰੋਮਾਨੀਆ"
+ },
+ "LU": {
+ "name": "ਲਕਜ਼ਮਬਰਗ"
+ },
+ "LA": {
+ "name": "ਲਾਓਸ"
+ },
+ "LR": {
+ "name": "ਲਾਈਬੀਰੀਆ"
+ },
+ "LV": {
+ "name": "ਲਾਟਵੀਆ"
+ },
+ "LI": {
+ "name": "ਲਿਚੇਂਸਟਾਇਨ"
+ },
+ "LT": {
+ "name": "ਲਿਥੁਆਨੀਆ"
+ },
+ "LY": {
+ "name": "ਲੀਬੀਆ"
+ },
+ "LS": {
+ "name": "ਲੇਸੋਥੋ"
+ },
+ "LB": {
+ "name": "ਲੈਬਨਾਨ"
+ },
+ "VU": {
+ "name": "ਵਾਨੂਆਟੂ"
+ },
+ "WF": {
+ "name": "ਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾ"
+ },
+ "VN": {
+ "name": "ਵੀਅਤਨਾਮ"
+ },
+ "VE": {
+ "name": "ਵੇਨੇਜ਼ੂਏਲਾ"
+ },
+ "VA": {
+ "name": "ਵੈਟੀਕਨ ਸਿਟੀ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pl.json b/library/intl/resources/country/pl.json
new file mode 100644
index 000000000..52e02228e
--- /dev/null
+++ b/library/intl/resources/country/pl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algieria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktyka"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudyjska"
+ },
+ "AR": {
+ "name": "Argentyna"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbejdżan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladesz"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Białoruś"
+ },
+ "BO": {
+ "name": "Boliwia"
+ },
+ "BA": {
+ "name": "Bośnia i Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazylia"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "IO": {
+ "name": "Brytyjskie Terytorium Oceanu Indyjskiego"
+ },
+ "VG": {
+ "name": "Brytyjskie Wyspy Dziewicze"
+ },
+ "BG": {
+ "name": "Bułgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "Chiny"
+ },
+ "HR": {
+ "name": "Chorwacja"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypr"
+ },
+ "TD": {
+ "name": "Czad"
+ },
+ "ME": {
+ "name": "Czarnogóra"
+ },
+ "CZ": {
+ "name": "Czechy"
+ },
+ "UM": {
+ "name": "Dalekie Wyspy Mniejsze Stanów Zjednoczonych"
+ },
+ "DK": {
+ "name": "Dania"
+ },
+ "CD": {
+ "name": "Demokratyczna Republika Konga"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikana"
+ },
+ "DJ": {
+ "name": "Dżibuti"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "ER": {
+ "name": "Erytrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandy"
+ },
+ "FJ": {
+ "name": "Fidżi"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francja"
+ },
+ "TF": {
+ "name": "Francuskie Terytoria Południowe"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GS": {
+ "name": "Georgia Południowa i Sandwich Południowy"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grecja"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandia"
+ },
+ "GE": {
+ "name": "Gruzja"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "GF": {
+ "name": "Gujana Francuska"
+ },
+ "GP": {
+ "name": "Gwadelupa"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GN": {
+ "name": "Gwinea"
+ },
+ "GW": {
+ "name": "Gwinea Bissau"
+ },
+ "GQ": {
+ "name": "Gwinea Równikowa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hiszpania"
+ },
+ "NL": {
+ "name": "Holandia"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonezja"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandia"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KY": {
+ "name": "Kajmany"
+ },
+ "KH": {
+ "name": "Kambodża"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KR": {
+ "name": "Korea Południowa"
+ },
+ "KP": {
+ "name": "Korea Północna"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kostaryka"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwejt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwa"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "LV": {
+ "name": "Łotwa"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotta"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "MY": {
+ "name": "Malezja"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariany Północne"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martynika"
+ },
+ "MR": {
+ "name": "Mauretania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MX": {
+ "name": "Meksyk"
+ },
+ "FM": {
+ "name": "Mikronezja"
+ },
+ "MM": {
+ "name": "Mjanma (Birma)"
+ },
+ "MD": {
+ "name": "Mołdawia"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "BQ": {
+ "name": "Niderlandy Karaibskie"
+ },
+ "DE": {
+ "name": "Niemcy"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norwegia"
+ },
+ "NC": {
+ "name": "Nowa Kaledonia"
+ },
+ "NZ": {
+ "name": "Nowa Zelandia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nowa Gwinea"
+ },
+ "PY": {
+ "name": "Paragwaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinezja Francuska"
+ },
+ "PL": {
+ "name": "Polska"
+ },
+ "PR": {
+ "name": "Portoryko"
+ },
+ "PT": {
+ "name": "Portugalia"
+ },
+ "ZA": {
+ "name": "Republika Południowej Afryki"
+ },
+ "CF": {
+ "name": "Republika Środkowoafrykańska"
+ },
+ "CV": {
+ "name": "Republika Zielonego Przylądka"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RU": {
+ "name": "Rosja"
+ },
+ "RO": {
+ "name": "Rumunia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Zachodnia"
+ },
+ "KN": {
+ "name": "Saint Kitts i Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent i Grenadyny"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre i Miquelon"
+ },
+ "SV": {
+ "name": "Salwador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerykańskie"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seszele"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Słowacja"
+ },
+ "SI": {
+ "name": "Słowenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "HK": {
+ "name": "SRA Hongkong (Chiny)"
+ },
+ "MO": {
+ "name": "SRA Makau (Chiny)"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stany Zjednoczone"
+ },
+ "SZ": {
+ "name": "Suazi"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Południowy"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "CH": {
+ "name": "Szwajcaria"
+ },
+ "SE": {
+ "name": "Szwecja"
+ },
+ "TJ": {
+ "name": "Tadżykistan"
+ },
+ "TH": {
+ "name": "Tajlandia"
+ },
+ "TW": {
+ "name": "Tajwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "PS": {
+ "name": "Terytoria Palestyńskie"
+ },
+ "TL": {
+ "name": "Timor Wschodni"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TT": {
+ "name": "Trynidad i Tobago"
+ },
+ "TN": {
+ "name": "Tunezja"
+ },
+ "TR": {
+ "name": "Turcja"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks i Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugwaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "VA": {
+ "name": "Watykan"
+ },
+ "VE": {
+ "name": "Wenezuela"
+ },
+ "HU": {
+ "name": "Węgry"
+ },
+ "GB": {
+ "name": "Wielka Brytania"
+ },
+ "VN": {
+ "name": "Wietnam"
+ },
+ "IT": {
+ "name": "Włochy"
+ },
+ "CX": {
+ "name": "Wyspa Bożego Narodzenia"
+ },
+ "GG": {
+ "name": "Wyspa Guernsey"
+ },
+ "JE": {
+ "name": "Wyspa Jersey"
+ },
+ "IM": {
+ "name": "Wyspa Man"
+ },
+ "SH": {
+ "name": "Wyspa Świętej Heleny"
+ },
+ "AC": {
+ "name": "Wyspa Wniebowstąpienia"
+ },
+ "AX": {
+ "name": "Wyspy Alandzkie"
+ },
+ "CK": {
+ "name": "Wyspy Cooka"
+ },
+ "VI": {
+ "name": "Wyspy Dziewicze Stanów Zjednoczonych"
+ },
+ "IC": {
+ "name": "Wyspy Kanaryjskie"
+ },
+ "CC": {
+ "name": "Wyspy Kokosowe"
+ },
+ "MH": {
+ "name": "Wyspy Marshalla"
+ },
+ "FO": {
+ "name": "Wyspy Owcze"
+ },
+ "SB": {
+ "name": "Wyspy Salomona"
+ },
+ "ST": {
+ "name": "Wyspy Świętego Tomasza i Książęca"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AE": {
+ "name": "Zjednoczone Emiraty Arabskie"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ps.json b/library/intl/resources/country/ps.json
new file mode 100644
index 000000000..454e4ce05
--- /dev/null
+++ b/library/intl/resources/country/ps.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "IS": {
+ "name": "آیسلینډ"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "AF": {
+ "name": "افغانستان"
+ },
+ "AL": {
+ "name": "البانیه"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "DE": {
+ "name": "المان"
+ },
+ "AQ": {
+ "name": "انتارکتیکا"
+ },
+ "ID": {
+ "name": "اندونیزیا"
+ },
+ "AO": {
+ "name": "انګولا"
+ },
+ "IT": {
+ "name": "ایټالیه"
+ },
+ "GB": {
+ "name": "برتانیه"
+ },
+ "BG": {
+ "name": "بلغاریه"
+ },
+ "BD": {
+ "name": "بنګله‌دیش"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PT": {
+ "name": "پورتګال"
+ },
+ "PL": {
+ "name": "پولنډ"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TZ": {
+ "name": "تنزانیا"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "JM": {
+ "name": "جمیکا"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "ET": {
+ "name": "حبشه"
+ },
+ "DK": {
+ "name": "ډنمارک"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "RW": {
+ "name": "روندا"
+ },
+ "SV": {
+ "name": "سالوېډور"
+ },
+ "SA": {
+ "name": "سعودی عربستان"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SE": {
+ "name": "سویډن"
+ },
+ "CH": {
+ "name": "سویس"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "FR": {
+ "name": "فرانسه"
+ },
+ "PS": {
+ "name": "فلسطین"
+ },
+ "FI": {
+ "name": "فنلینډ"
+ },
+ "CA": {
+ "name": "کاناډا"
+ },
+ "KH": {
+ "name": "کمبودیا"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KW": {
+ "name": "کویټ"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "GH": {
+ "name": "ګانا"
+ },
+ "GT": {
+ "name": "ګواتیمالا"
+ },
+ "GN": {
+ "name": "ګیانا"
+ },
+ "LA": {
+ "name": "لاوس"
+ },
+ "LR": {
+ "name": "لایبریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "MY": {
+ "name": "مالیزیا"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MN": {
+ "name": "مغولستان"
+ },
+ "NO": {
+ "name": "ناروې"
+ },
+ "NG": {
+ "name": "نایجیریا"
+ },
+ "NI": {
+ "name": "نکاراګوا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NZ": {
+ "name": "نیوزیلنډ"
+ },
+ "NL": {
+ "name": "هالېنډ"
+ },
+ "HN": {
+ "name": "هانډوراس"
+ },
+ "ES": {
+ "name": "هسپانیه"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروګوای"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-AO.json b/library/intl/resources/country/pt-AO.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-AO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-CV.json b/library/intl/resources/country/pt-CV.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-CV.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-GW.json b/library/intl/resources/country/pt-GW.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-GW.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-MO.json b/library/intl/resources/country/pt-MO.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-MO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-MZ.json b/library/intl/resources/country/pt-MZ.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-MZ.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-PT.json b/library/intl/resources/country/pt-PT.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-PT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-ST.json b/library/intl/resources/country/pt-ST.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-ST.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-TL.json b/library/intl/resources/country/pt-TL.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-TL.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt.json b/library/intl/resources/country/pt.json
new file mode 100644
index 000000000..12a4d3d65
--- /dev/null
+++ b/library/intl/resources/country/pt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armênia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "SG": {
+ "name": "Cingapura"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egito"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovênia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estônia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GS": {
+ "name": "Geórgia do Sul e Ilhas Sandwich do Sul"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Groenlândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GW": {
+ "name": "Guiné Bissau"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iêmen"
+ },
+ "CX": {
+ "name": "Ilha Christmas"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Åland"
+ },
+ "KY": {
+ "name": "Ilhas Caiman"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FO": {
+ "name": "Ilhas Faroe"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "PN": {
+ "name": "Ilhas Pitcairn"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irã"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letônia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedônia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurício"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mônaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledônia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polônia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quênia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CM": {
+ "name": "República dos Camarões"
+ },
+ "CZ": {
+ "name": "República Tcheca"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Romênia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "PS": {
+ "name": "Territórios palestinos"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turcomenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnã"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbábue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rm.json b/library/intl/resources/country/rm.json
new file mode 100644
index 000000000..e6ffadbe8
--- /dev/null
+++ b/library/intl/resources/country/rm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Africa dal Sid"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AR": {
+ "name": "Argentinia"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ed Erzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasila"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodscha"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cap Verd"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Cipra"
+ },
+ "VA": {
+ "name": "Citad dal Vatican"
+ },
+ "CO": {
+ "name": "Columbia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "KP": {
+ "name": "Corea dal Nord"
+ },
+ "KR": {
+ "name": "Corea dal Sid"
+ },
+ "CI": {
+ "name": "Costa d’Ivur"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croazia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarc"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipta"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirats Arabs Unids"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "PH": {
+ "name": "Filippinas"
+ },
+ "FI": {
+ "name": "Finlanda"
+ },
+ "FR": {
+ "name": "Frantscha"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia dal Sid e las Inslas Sandwich dal Sid"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "JM": {
+ "name": "Giamaica"
+ },
+ "JP": {
+ "name": "Giapun"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grezia"
+ },
+ "GL": {
+ "name": "Grönlanda"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Equatoriala"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Franzosa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "CX": {
+ "name": "Insla da Christmas"
+ },
+ "IM": {
+ "name": "Insla da Man"
+ },
+ "NF": {
+ "name": "Insla Norfolk"
+ },
+ "AX": {
+ "name": "Inslas Aland"
+ },
+ "KY": {
+ "name": "Inslas Cayman"
+ },
+ "CC": {
+ "name": "Inslas Cocos"
+ },
+ "CK": {
+ "name": "Inslas Cook"
+ },
+ "MH": {
+ "name": "Inslas da Marshall"
+ },
+ "FK": {
+ "name": "Inslas dal Falkland"
+ },
+ "FO": {
+ "name": "Inslas Feroe"
+ },
+ "MP": {
+ "name": "Inslas Mariannas dal Nord"
+ },
+ "UM": {
+ "name": "Inslas pitschnas perifericas dals Stadis Unids da l’America"
+ },
+ "TC": {
+ "name": "Inslas Turks e Caicos"
+ },
+ "VI": {
+ "name": "Inslas Verginas Americanas"
+ },
+ "VG": {
+ "name": "Inslas Verginas Britannicas"
+ },
+ "IQ": {
+ "name": "Irac"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirghisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonia"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambic"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Nova Caledonia"
+ },
+ "NZ": {
+ "name": "Nova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Pajais Bass"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Guinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesia Franzosa"
+ },
+ "PL": {
+ "name": "Pologna"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "GB": {
+ "name": "Reginavel Unì"
+ },
+ "HK": {
+ "name": "Regiun d’administraziun speziala da Hongkong, China"
+ },
+ "MO": {
+ "name": "Regiun d’administraziun speziala Macao, China"
+ },
+ "CF": {
+ "name": "Republica Centralafricana"
+ },
+ "CD": {
+ "name": "Republica Democratica dal Congo"
+ },
+ "DO": {
+ "name": "Republica Dominicana"
+ },
+ "CZ": {
+ "name": "Republica Tscheca"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumenia"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "EH": {
+ "name": "Sahara Occidentala"
+ },
+ "KN": {
+ "name": "Saint Kitts e Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent e las Grenadinas"
+ },
+ "SB": {
+ "name": "Salomonas"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé e Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellas"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovachia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "BL": {
+ "name": "Son Barthélemy"
+ },
+ "SH": {
+ "name": "Sontg’Elena"
+ },
+ "ES": {
+ "name": "Spagna"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadis Unids da l’America"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan dal Sid"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezia"
+ },
+ "CH": {
+ "name": "Svizra"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TH": {
+ "name": "Tailanda"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "IO": {
+ "name": "Territori Britannic en l’Ocean Indic"
+ },
+ "PS": {
+ "name": "Territori Palestinais"
+ },
+ "TF": {
+ "name": "Territoris Franzos Meridiunals"
+ },
+ "TL": {
+ "name": "Timor da l’Ost"
+ },
+ "TR": {
+ "name": "Tirchia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "TN": {
+ "name": "Tunesia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungaria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rn.json b/library/intl/resources/country/rn.json
new file mode 100644
index 000000000..cab94b8ef
--- /dev/null
+++ b/library/intl/resources/country/rn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganisitani"
+ },
+ "ZA": {
+ "name": "Afurika y’Epfo"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DZ": {
+ "name": "Alijeriya"
+ },
+ "AL": {
+ "name": "Alubaniya"
+ },
+ "VI": {
+ "name": "Amazinga y’Isugi y’Abanyamerika"
+ },
+ "PH": {
+ "name": "Amazinga ya Filipine"
+ },
+ "MP": {
+ "name": "Amazinga ya Mariyana ryo mu majaruguru"
+ },
+ "RE": {
+ "name": "Amazinga ya Reyiniyo"
+ },
+ "SB": {
+ "name": "Amazinga ya Salumoni"
+ },
+ "SC": {
+ "name": "Amazinga ya Seyisheli"
+ },
+ "TC": {
+ "name": "Amazinga ya Turkisi na Cayikosi"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa na Baribuda"
+ },
+ "SA": {
+ "name": "Arabiya Sawudite"
+ },
+ "AR": {
+ "name": "Arijantine"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AM": {
+ "name": "Arumeniya"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayisilandi"
+ },
+ "AZ": {
+ "name": "Azerubayijani"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Bahareyini"
+ },
+ "BD": {
+ "name": "Bangaladeshi"
+ },
+ "BB": {
+ "name": "Barubadosi"
+ },
+ "BY": {
+ "name": "Belausi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "MM": {
+ "name": "Birimaniya"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosiniya na Herigozevine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BG": {
+ "name": "Buligariya"
+ },
+ "BR": {
+ "name": "Burezili"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Buruneyi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimariki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwateri"
+ },
+ "SV": {
+ "name": "Eli Saluvatori"
+ },
+ "ER": {
+ "name": "Elitereya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Etiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabo"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GD": {
+ "name": "Gerenada"
+ },
+ "GW": {
+ "name": "Gineya Bisawu"
+ },
+ "GQ": {
+ "name": "Gineya Ekwatoriyali"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guneya"
+ },
+ "GL": {
+ "name": "Gurunilandi"
+ },
+ "GY": {
+ "name": "Guyane"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwayana y’Abafaransa"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "ES": {
+ "name": "Hisipaniya"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungariya"
+ },
+ "VG": {
+ "name": "Ibirwa by’isugi by’Abongereza"
+ },
+ "CV": {
+ "name": "Ibirwa bya Kapuveri"
+ },
+ "KY": {
+ "name": "Ibirwa bya Keyimani"
+ },
+ "UA": {
+ "name": "Ikerene"
+ },
+ "ID": {
+ "name": "Indoneziya"
+ },
+ "IO": {
+ "name": "Intara y’Ubwongereza yo mu birwa by’Abahindi"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Irani"
+ },
+ "UY": {
+ "name": "Irigwe"
+ },
+ "IE": {
+ "name": "Irilandi"
+ },
+ "IL": {
+ "name": "Isiraheli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "FK": {
+ "name": "Izinga rya Filikilandi"
+ },
+ "KM": {
+ "name": "Izinga rya Komore"
+ },
+ "CK": {
+ "name": "Izinga rya Kuku"
+ },
+ "MH": {
+ "name": "Izinga rya Marishari"
+ },
+ "MU": {
+ "name": "Izinga rya Morise"
+ },
+ "NF": {
+ "name": "izinga rya Norufoluke"
+ },
+ "CY": {
+ "name": "Izinga rya Shipure"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GE": {
+ "name": "Jeworujiya"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GI": {
+ "name": "Juburalitari"
+ },
+ "KH": {
+ "name": "Kamboje"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiba"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigisitani"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Koreya y’amajaruguru"
+ },
+ "KR": {
+ "name": "Koreya y’amajepfo"
+ },
+ "HR": {
+ "name": "Korowasiya"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotedivuware"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "LV": {
+ "name": "Lativa"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "AE": {
+ "name": "Leta Zunze Ubumwe z’Abarabu"
+ },
+ "US": {
+ "name": "Leta Zunze Ubumwe za Amerika"
+ },
+ "LB": {
+ "name": "Libani"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Lishyitenshitayini"
+ },
+ "LT": {
+ "name": "Lituwaniya"
+ },
+ "LU": {
+ "name": "Lukusamburu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Maleziya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniki"
+ },
+ "MA": {
+ "name": "Maroke"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Migizike"
+ },
+ "FM": {
+ "name": "Mikoroniziya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MV": {
+ "name": "Moludave"
+ },
+ "MD": {
+ "name": "Moludavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteserati"
+ },
+ "MR": {
+ "name": "Moritaniya"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeriya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NC": {
+ "name": "Niyukaledoniya"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NO": {
+ "name": "Noruveji"
+ },
+ "NZ": {
+ "name": "Nuvelizelandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "AU": {
+ "name": "Ositaraliya"
+ },
+ "AT": {
+ "name": "Otirishe"
+ },
+ "PK": {
+ "name": "Pakisitani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitina Wesitibanka na Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa Niyugineya"
+ },
+ "PY": {
+ "name": "Paragwe"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeyirini"
+ },
+ "PF": {
+ "name": "Polineziya y’Abafaransa"
+ },
+ "PL": {
+ "name": "Polonye"
+ },
+ "PT": {
+ "name": "Porutugali"
+ },
+ "PR": {
+ "name": "Puwetoriko"
+ },
+ "CD": {
+ "name": "Repubulika Iharanira Demokarasi ya Kongo"
+ },
+ "CZ": {
+ "name": "Repubulika ya Ceke"
+ },
+ "DO": {
+ "name": "Repubulika ya Dominika"
+ },
+ "CF": {
+ "name": "Repubulika ya Santarafurika"
+ },
+ "RO": {
+ "name": "Rumaniya"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa nyamerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sawotome na Perensipe"
+ },
+ "SH": {
+ "name": "Sehelene"
+ },
+ "KN": {
+ "name": "Sekitsi na Nevisi"
+ },
+ "LC": {
+ "name": "Selusiya"
+ },
+ "PM": {
+ "name": "Sempiyeri na Mikeloni"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "VC": {
+ "name": "Sevensa na Gerenadine"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "SK": {
+ "name": "Silovakiya"
+ },
+ "SI": {
+ "name": "Siloveniya"
+ },
+ "SG": {
+ "name": "Singapuru"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Suwazilandi"
+ },
+ "SE": {
+ "name": "Suwedi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayilandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timoru y’iburasirazuba"
+ },
+ "TT": {
+ "name": "Tirinidadi na Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuniziya"
+ },
+ "TR": {
+ "name": "Turukiya"
+ },
+ "TM": {
+ "name": "Turukumenisitani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "RW": {
+ "name": "u Rwanda"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "BE": {
+ "name": "Ububiligi"
+ },
+ "DE": {
+ "name": "Ubudage"
+ },
+ "FR": {
+ "name": "Ubufaransa"
+ },
+ "UG": {
+ "name": "Ubugande"
+ },
+ "GR": {
+ "name": "Ubugereki"
+ },
+ "IN": {
+ "name": "Ubuhindi"
+ },
+ "NL": {
+ "name": "Ubuholandi"
+ },
+ "BI": {
+ "name": "Uburundi"
+ },
+ "RU": {
+ "name": "Uburusiya"
+ },
+ "CN": {
+ "name": "Ubushinwa"
+ },
+ "CH": {
+ "name": "Ubusuwisi"
+ },
+ "IT": {
+ "name": "Ubutaliyani"
+ },
+ "JP": {
+ "name": "Ubuyapani"
+ },
+ "GB": {
+ "name": "Ubwongereza"
+ },
+ "VA": {
+ "name": "Umurwa wa Vatikani"
+ },
+ "UZ": {
+ "name": "Uzubekisitani"
+ },
+ "VU": {
+ "name": "Vanuwatu"
+ },
+ "VE": {
+ "name": "Venezuwela"
+ },
+ "VN": {
+ "name": "Viyetinamu"
+ },
+ "WF": {
+ "name": "Walisi na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaniya"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ro.json b/library/intl/resources/country/ro.json
new file mode 100644
index 000000000..acf273ae4
--- /dev/null
+++ b/library/intl/resources/country/ro.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Africa de Sud"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua și Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudită"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia și Herțegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilia"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodgia"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Capul Verde"
+ },
+ "EA": {
+ "name": "Ceuta și Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "TD": {
+ "name": "Ciad"
+ },
+ "CY": {
+ "name": "Cipru"
+ },
+ "CO": {
+ "name": "Columbia"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Coreea de Nord"
+ },
+ "KR": {
+ "name": "Coreea de Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croația"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarca"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CH": {
+ "name": "Elveția"
+ },
+ "AE": {
+ "name": "Emiratele Arabe Unite"
+ },
+ "ER": {
+ "name": "Eritreea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlanda"
+ },
+ "FR": {
+ "name": "Franța"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia de Sud și Insulele Sandwich de Sud"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlanda"
+ },
+ "GP": {
+ "name": "Guadelupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guineea"
+ },
+ "GQ": {
+ "name": "Guineea Ecuatorială"
+ },
+ "GW": {
+ "name": "Guineea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Franceză"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "AC": {
+ "name": "Insula Ascension"
+ },
+ "CX": {
+ "name": "Insula Christmas"
+ },
+ "IM": {
+ "name": "Insula Man"
+ },
+ "AX": {
+ "name": "Insulele Åland"
+ },
+ "IC": {
+ "name": "Insulele Canare"
+ },
+ "BQ": {
+ "name": "Insulele Caraibe Olandeze"
+ },
+ "KY": {
+ "name": "Insulele Cayman"
+ },
+ "CC": {
+ "name": "Insulele Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Insulele Cook"
+ },
+ "FK": {
+ "name": "Insulele Falkland"
+ },
+ "FO": {
+ "name": "Insulele Feroe"
+ },
+ "UM": {
+ "name": "Insulele Îndepărtate ale S.U.A."
+ },
+ "MP": {
+ "name": "Insulele Mariane de Nord"
+ },
+ "MH": {
+ "name": "Insulele Marshall"
+ },
+ "NF": {
+ "name": "Insulele Norfolk"
+ },
+ "PN": {
+ "name": "Insulele Pitcairn"
+ },
+ "SB": {
+ "name": "Insulele Solomon"
+ },
+ "TC": {
+ "name": "Insulele Turks și Caicos"
+ },
+ "VG": {
+ "name": "Insulele Virgine Britanice"
+ },
+ "VI": {
+ "name": "Insulele Virgine S.U.A."
+ },
+ "JO": {
+ "name": "Iordania"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KG": {
+ "name": "Kârgâzstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaezia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexic"
+ },
+ "FM": {
+ "name": "Micronezia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambic"
+ },
+ "ME": {
+ "name": "Muntenegru"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Noua Caledonie"
+ },
+ "NZ": {
+ "name": "Noua Zeelandă"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Noua Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinezia Franceză"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugalia"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. Hong Kong a Chinei"
+ },
+ "MO": {
+ "name": "R.A.S. Macao a Chinei"
+ },
+ "GB": {
+ "name": "Regatul Unit"
+ },
+ "CZ": {
+ "name": "Republica Cehă"
+ },
+ "CF": {
+ "name": "Republica Centrafricană"
+ },
+ "DO": {
+ "name": "Republica Dominicană"
+ },
+ "MD": {
+ "name": "Republica Moldova"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "România"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Occidentală"
+ },
+ "KN": {
+ "name": "Saint Kitts și Nevis"
+ },
+ "VC": {
+ "name": "Saint Vincent și Grenadine"
+ },
+ "PM": {
+ "name": "Saint-Pierre și Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americană"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome și Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SH": {
+ "name": "Sfânta Elena"
+ },
+ "LC": {
+ "name": "Sfânta Lucia"
+ },
+ "BL": {
+ "name": "Sfântul Bartolomeu"
+ },
+ "MF": {
+ "name": "Sfântul Martin"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovacia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Statele Unite ale Americii"
+ },
+ "VA": {
+ "name": "Statul Cetății Vaticanului"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudanul de Sud"
+ },
+ "SE": {
+ "name": "Suedia"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard și Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Teritoriile Australe și Antarctice Franceze"
+ },
+ "PS": {
+ "name": "Teritoriile Palestiniene"
+ },
+ "IO": {
+ "name": "Teritoriul Britanic din Oceanul Indian"
+ },
+ "TH": {
+ "name": "Thailanda"
+ },
+ "TL": {
+ "name": "Timorul de Est"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad și Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turcia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "NL": {
+ "name": "Țările de Jos"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungaria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis și Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rof.json b/library/intl/resources/country/rof.json
new file mode 100644
index 000000000..d88a1bcc7
--- /dev/null
+++ b/library/intl/resources/country/rof.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AM": {
+ "name": "Amenia"
+ },
+ "AD": {
+ "name": "Andoro"
+ },
+ "AO": {
+ "name": "Angolo"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Babuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babado"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "AT": {
+ "name": "Ostria"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kaimai"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ru.json b/library/intl/resources/country/ru.json
new file mode 100644
index 000000000..a9dabdc07
--- /dev/null
+++ b/library/intl/resources/country/ru.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралия"
+ },
+ "AT": {
+ "name": "Австрия"
+ },
+ "AZ": {
+ "name": "Азербайджан"
+ },
+ "AX": {
+ "name": "Аландские о-ва"
+ },
+ "AL": {
+ "name": "Албания"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Американское Самоа"
+ },
+ "AI": {
+ "name": "Ангилья"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктида"
+ },
+ "AG": {
+ "name": "Антигуа и Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AM": {
+ "name": "Армения"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AF": {
+ "name": "Афганистан"
+ },
+ "BS": {
+ "name": "Багамские о-ва"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "Беларусь"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "Бельгия"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермудские о-ва"
+ },
+ "BG": {
+ "name": "Болгария"
+ },
+ "BO": {
+ "name": "Боливия"
+ },
+ "BQ": {
+ "name": "Бонэйр, Синт-Эстатиус и Саба"
+ },
+ "BA": {
+ "name": "Босния и Герцеговина"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразилия"
+ },
+ "IO": {
+ "name": "Британская территория в Индийском океане"
+ },
+ "BN": {
+ "name": "Бруней-Даруссалам"
+ },
+ "BF": {
+ "name": "Буркина-Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Великобритания"
+ },
+ "HU": {
+ "name": "Венгрия"
+ },
+ "VE": {
+ "name": "Венесуэла"
+ },
+ "VG": {
+ "name": "Виргинские о-ва (Британские)"
+ },
+ "VI": {
+ "name": "Виргинские о-ва (США)"
+ },
+ "UM": {
+ "name": "Внешние малые о-ва (США)"
+ },
+ "TL": {
+ "name": "Восточный Тимор"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "Гамбия"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинея"
+ },
+ "GW": {
+ "name": "Гвинея-Бисау"
+ },
+ "DE": {
+ "name": "Германия"
+ },
+ "GG": {
+ "name": "Гернси"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "HK": {
+ "name": "Гонконг (особый район)"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландия"
+ },
+ "GR": {
+ "name": "Греция"
+ },
+ "GE": {
+ "name": "Грузия"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "Дания"
+ },
+ "JE": {
+ "name": "Джерси"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего-Гарсия"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминиканская Республика"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "ZM": {
+ "name": "Замбия"
+ },
+ "EH": {
+ "name": "Западная Сахара"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "IN": {
+ "name": "Индия"
+ },
+ "ID": {
+ "name": "Индонезия"
+ },
+ "JO": {
+ "name": "Иордания"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирландия"
+ },
+ "IS": {
+ "name": "Исландия"
+ },
+ "ES": {
+ "name": "Испания"
+ },
+ "IT": {
+ "name": "Италия"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Каймановы о-ва"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарские о-ва"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кения"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KG": {
+ "name": "Киргизия"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "KP": {
+ "name": "КНДР"
+ },
+ "CC": {
+ "name": "Кокосовые о-ва"
+ },
+ "CO": {
+ "name": "Колумбия"
+ },
+ "KM": {
+ "name": "Коморские о-ва"
+ },
+ "CG": {
+ "name": "Конго - Браззавиль"
+ },
+ "CD": {
+ "name": "Конго - Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "Кюрасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвия"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либерия"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "Ливия"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "Мавритания"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао (особый район)"
+ },
+ "MK": {
+ "name": "Македония"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайзия"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдивские о-ва"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалловы о-ва"
+ },
+ "MX": {
+ "name": "Мексика"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголия"
+ },
+ "MS": {
+ "name": "Монтсеррат"
+ },
+ "MM": {
+ "name": "Мьянма (Бирма)"
+ },
+ "NA": {
+ "name": "Намибия"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерия"
+ },
+ "NL": {
+ "name": "Нидерланды"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуэ"
+ },
+ "NZ": {
+ "name": "Новая Зеландия"
+ },
+ "NC": {
+ "name": "Новая Каледония"
+ },
+ "NO": {
+ "name": "Норвегия"
+ },
+ "AC": {
+ "name": "о-в Вознесения"
+ },
+ "IM": {
+ "name": "О-в Мэн"
+ },
+ "NF": {
+ "name": "о-в Норфолк"
+ },
+ "CX": {
+ "name": "о-в Рождества"
+ },
+ "SH": {
+ "name": "О-в Св. Елены"
+ },
+ "CK": {
+ "name": "о-ва Кука"
+ },
+ "TC": {
+ "name": "О-ва Тёркс и Кайкос"
+ },
+ "AE": {
+ "name": "ОАЭ"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестинские территории"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа – Новая Гвинея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкэрн"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "Португалия"
+ },
+ "PR": {
+ "name": "Пуэрто-Рико"
+ },
+ "KR": {
+ "name": "Республика Корея"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RU": {
+ "name": "Россия"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румыния"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе и Принсипи"
+ },
+ "SA": {
+ "name": "Саудовская Аравия"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "MP": {
+ "name": "Северные Марианские о-ва"
+ },
+ "SC": {
+ "name": "Сейшельские о-ва"
+ },
+ "BL": {
+ "name": "Сен-Бартельми"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пьер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-Винсент и Гренадины"
+ },
+ "KN": {
+ "name": "Сент-Китс и Невис"
+ },
+ "LC": {
+ "name": "Сент-Люсия"
+ },
+ "RS": {
+ "name": "Сербия"
+ },
+ "EA": {
+ "name": "Сеута и Мелилья"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Мартен"
+ },
+ "SY": {
+ "name": "Сирия"
+ },
+ "SK": {
+ "name": "Словакия"
+ },
+ "SI": {
+ "name": "Словения"
+ },
+ "US": {
+ "name": "Соединенные Штаты"
+ },
+ "SB": {
+ "name": "Соломоновы о-ва"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TJ": {
+ "name": "Таджикистан"
+ },
+ "TH": {
+ "name": "Таиланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "Танзания"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "Тристан-да-Кунья"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "TR": {
+ "name": "Турция"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "WF": {
+ "name": "Уоллис и Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фарерские о-ва"
+ },
+ "FM": {
+ "name": "Федеративные Штаты Микронезии"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филиппины"
+ },
+ "FI": {
+ "name": "Финляндия"
+ },
+ "FK": {
+ "name": "Фолклендские о-ва"
+ },
+ "FR": {
+ "name": "Франция"
+ },
+ "GF": {
+ "name": "Французская Гвиана"
+ },
+ "PF": {
+ "name": "Французская Полинезия"
+ },
+ "TF": {
+ "name": "Французские Южные Территории"
+ },
+ "HR": {
+ "name": "Хорватия"
+ },
+ "CF": {
+ "name": "ЦАР"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черногория"
+ },
+ "CZ": {
+ "name": "Чехия"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "Швейцария"
+ },
+ "SE": {
+ "name": "Швеция"
+ },
+ "SJ": {
+ "name": "Шпицберген и Ян-Майен"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваториальная Гвинея"
+ },
+ "ER": {
+ "name": "Эритрея"
+ },
+ "EE": {
+ "name": "Эстония"
+ },
+ "ET": {
+ "name": "Эфиопия"
+ },
+ "ZA": {
+ "name": "ЮАР"
+ },
+ "GS": {
+ "name": "Южная Георгия и Южные Сандвичевы о-ва"
+ },
+ "SS": {
+ "name": "Южный Судан"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "Япония"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rwk.json b/library/intl/resources/country/rwk.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/rwk.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/saq.json b/library/intl/resources/country/saq.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/saq.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sbp.json b/library/intl/resources/country/sbp.json
new file mode 100644
index 000000000..3c3a0c815
--- /dev/null
+++ b/library/intl/resources/country/sbp.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afilika Kusini"
+ },
+ "AF": {
+ "name": "Afuganisitani"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "DZ": {
+ "name": "Alijeliya"
+ },
+ "AM": {
+ "name": "Alimeniya"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AL": {
+ "name": "Alubaniya"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Anitiguya ni Balubuda"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AZ": {
+ "name": "Asabajani"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitilaliya"
+ },
+ "AT": {
+ "name": "Awusitiliya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisilendi"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangiladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BM": {
+ "name": "Belimuda"
+ },
+ "BZ": {
+ "name": "Belise"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosiniya ni Hesegovina"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BR": {
+ "name": "Bulasili"
+ },
+ "BG": {
+ "name": "Buligaliya"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BN": {
+ "name": "Buluneyi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elisavado"
+ },
+ "ER": {
+ "name": "Elitileya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FK": {
+ "name": "Figunguli fya Fokolendi"
+ },
+ "CK": {
+ "name": "Figunguli fya Kooki"
+ },
+ "MP": {
+ "name": "Figunguli fya Maliyana ifya luvala lwa Kunyamande"
+ },
+ "SB": {
+ "name": "Figunguli fya Solomoni"
+ },
+ "TC": {
+ "name": "Figunguli fya Tuliki ni Kaiko"
+ },
+ "VI": {
+ "name": "Figunguli fya Viliginiya ifya Malekani"
+ },
+ "KY": {
+ "name": "Figunguli ifya Kayimayi"
+ },
+ "MH": {
+ "name": "Figunguli ifya Malishali"
+ },
+ "VG": {
+ "name": "Figunguli ifya Viliginiya ifya Uwingelesa"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GD": {
+ "name": "Gilenada"
+ },
+ "GL": {
+ "name": "Gilinilandi"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisawu"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Wufalansa"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "ES": {
+ "name": "Hisipaniya"
+ },
+ "HN": {
+ "name": "Hondulasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaliya"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IL": {
+ "name": "Isilaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamuhuli ya Afilika ya Pakhati"
+ },
+ "DO": {
+ "name": "Jamuhuli ya Dominika"
+ },
+ "CD": {
+ "name": "Jamuhuli ya Kidemokilasiya ya Kongo"
+ },
+ "CZ": {
+ "name": "Jamuhuli ya Sheki"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibulalita"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojiya"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasakisitani"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "GH": {
+ "name": "Khana"
+ },
+ "KI": {
+ "name": "Kilibati"
+ },
+ "KG": {
+ "name": "Kiligisisitani"
+ },
+ "CI": {
+ "name": "Kodivaya"
+ },
+ "HR": {
+ "name": "Kolasiya"
+ },
+ "KR": {
+ "name": "Koleya ya Kusini"
+ },
+ "KP": {
+ "name": "Koleya ya luvala lwa Kunyamande"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CR": {
+ "name": "Kositalika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kupilosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativiya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libeliya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Lisheniteni"
+ },
+ "LT": {
+ "name": "Litwaniya"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Malitiniki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikilonesiya"
+ },
+ "EG": {
+ "name": "Misili"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Molidova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MR": {
+ "name": "Molitaniya"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "MS": {
+ "name": "Monitiselati"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "PS": {
+ "name": "Munjema gwa Kusikha nu Luvala lwa Gasa lwa Palesit"
+ },
+ "MZ": {
+ "name": "Musumbiji"
+ },
+ "MM": {
+ "name": "Muyama"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeli"
+ },
+ "NG": {
+ "name": "Nijeliya"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niwue"
+ },
+ "NO": {
+ "name": "Nolwe"
+ },
+ "NC": {
+ "name": "Nyukaledoniya"
+ },
+ "NZ": {
+ "name": "Nyusilendi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakisitani"
+ },
+ "PY": {
+ "name": "Palagwayi"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitikailini"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya ya Wufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "ZM": {
+ "name": "Sambiya"
+ },
+ "WS": {
+ "name": "Samoya"
+ },
+ "AS": {
+ "name": "Samoya ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitisi ni Nevisi"
+ },
+ "LC": {
+ "name": "Santalusiya"
+ },
+ "PM": {
+ "name": "Santapieli ni Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Gilenadini"
+ },
+ "SA": {
+ "name": "Sawudi"
+ },
+ "ST": {
+ "name": "Sayo Tome ni Pilinikipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "TD": {
+ "name": "Shadi"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "NF": {
+ "name": "Shigunguli sha Nolifoki"
+ },
+ "CL": {
+ "name": "Shile"
+ },
+ "CN": {
+ "name": "Shina"
+ },
+ "SL": {
+ "name": "Siela Liyoni"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SY": {
+ "name": "Siliya"
+ },
+ "SK": {
+ "name": "Silovakiya"
+ },
+ "SI": {
+ "name": "Siloveniya"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tansaniya"
+ },
+ "TT": {
+ "name": "Tilinidadi ni Tobago"
+ },
+ "TL": {
+ "name": "Timoli ya kunena"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tulukimenisitani"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "BE": {
+ "name": "Ubeligiji"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "UY": {
+ "name": "Ulugwayi"
+ },
+ "IO": {
+ "name": "Uluvala lwa Uwingelesa ku Bahali ya Hindi"
+ },
+ "UZ": {
+ "name": "Usibekisitani"
+ },
+ "SZ": {
+ "name": "Uswasi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluki"
+ },
+ "IR": {
+ "name": "Uwajemi"
+ },
+ "GB": {
+ "name": "Uwingelesa"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walisi ni Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "FR": {
+ "name": "Wufalansa"
+ },
+ "FI": {
+ "name": "Wufini"
+ },
+ "GR": {
+ "name": "Wugiliki"
+ },
+ "NL": {
+ "name": "Wuholansi"
+ },
+ "DE": {
+ "name": "Wujelumani"
+ },
+ "PT": {
+ "name": "Wuleno"
+ },
+ "RU": {
+ "name": "Wulusi"
+ },
+ "AE": {
+ "name": "Wutwa wa shiyalabu"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yolodani"
+ },
+ "UA": {
+ "name": "Yukileini"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/se-FI.json b/library/intl/resources/country/se-FI.json
new file mode 100644
index 000000000..8a60295a9
--- /dev/null
+++ b/library/intl/resources/country/se-FI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålánda"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerihká ovttastuvvan stáhtat"
+ },
+ "AS": {
+ "name": "Amerihká Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antárktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "VI": {
+ "name": "AOS Virgin-sullot"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaižan"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "Brittania Virgin-sullot"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman-sullot"
+ },
+ "CZ": {
+ "name": "Čeahkka"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Čiile"
+ },
+ "CC": {
+ "name": "Cocos-sullot"
+ },
+ "CK": {
+ "name": "Cook-sullot"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dánmárku"
+ },
+ "KP": {
+ "name": "Davvi-Korea"
+ },
+ "MP": {
+ "name": "Davvi-Mariánat"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikána dásseváldi"
+ },
+ "DE": {
+ "name": "Duiska"
+ },
+ "TR": {
+ "name": "Durka"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypta"
+ },
+ "GQ": {
+ "name": "Ekvatoriála Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenariddu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlánda"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsullot"
+ },
+ "FO": {
+ "name": "Fearsullot"
+ },
+ "FJ": {
+ "name": "Fijisullot"
+ },
+ "PH": {
+ "name": "Filippiinnat"
+ },
+ "FR": {
+ "name": "Frankriika"
+ },
+ "GF": {
+ "name": "Frankriikka Guayana"
+ },
+ "PF": {
+ "name": "Frankriikka Polynesia"
+ },
+ "MF": {
+ "name": "Frankriikka Saint Martin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "CF": {
+ "name": "Gaska-Afrihká dásseváldi"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greika"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlánda"
+ },
+ "IS": {
+ "name": "Islánda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japána"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "CX": {
+ "name": "Juovllat-sullot"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kamboža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanáda"
+ },
+ "IC": {
+ "name": "Kanáriasullot"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CN": {
+ "name": "Kiinná"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroátia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Látvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "GS": {
+ "name": "Lulli Georgia ja Lulli Sandwich-sullot"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makáo"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivvat"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Mann-sullot"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallsullot"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "ZA": {
+ "name": "Mátta-Afrihká"
+ },
+ "KR": {
+ "name": "Mátta-Korea"
+ },
+ "SS": {
+ "name": "Máttasudan"
+ },
+ "MR": {
+ "name": "Mauretánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolksullot"
+ },
+ "NO": {
+ "name": "Norga"
+ },
+ "TL": {
+ "name": "Nuorta-Timor"
+ },
+ "AT": {
+ "name": "Nuortariika"
+ },
+ "EH": {
+ "name": "Oarje-Sahára"
+ },
+ "NC": {
+ "name": "Ođđa-Kaledonia"
+ },
+ "NZ": {
+ "name": "Ođđa-Selánda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AE": {
+ "name": "Ovttastuvvan Arábaemiráhtat"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Ođđa-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugála"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RU": {
+ "name": "Ruošša"
+ },
+ "SE": {
+ "name": "Ruoŧŧa"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadine"
+ },
+ "SB": {
+ "name": "Salomon-sullot"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellsullot"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovákia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "ES": {
+ "name": "Spánia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stuorra-Británnia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "FI": {
+ "name": "Suopma"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbárda ja Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazieana"
+ },
+ "CH": {
+ "name": "Šveica"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TJ": {
+ "name": "Tažikistan"
+ },
+ "TH": {
+ "name": "Thaieana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks ja Caicos-sullot"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungár"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikána"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vilges-Ruošša"
+ },
+ "NL": {
+ "name": "Vuolleeatnamat"
+ },
+ "SX": {
+ "name": "Vuolleeatnamat Saint Martin"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/se.json b/library/intl/resources/country/se.json
new file mode 100644
index 000000000..5de6ab076
--- /dev/null
+++ b/library/intl/resources/country/se.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålánda"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerihká ovttastuvvan stáhtat"
+ },
+ "AS": {
+ "name": "Amerihká Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antárktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "VI": {
+ "name": "AOS Virgin-sullot"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaižan"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "Brittania Virgin-sullot"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman-sullot"
+ },
+ "CZ": {
+ "name": "Čeahkka"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CL": {
+ "name": "Čiile"
+ },
+ "CC": {
+ "name": "Cocos-sullot"
+ },
+ "CK": {
+ "name": "Cook-sullot"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dánmárku"
+ },
+ "KP": {
+ "name": "Davvi-Korea"
+ },
+ "MP": {
+ "name": "Davvi-Mariánat"
+ },
+ "SD": {
+ "name": "Davvisudan"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikána dásseváldi"
+ },
+ "DE": {
+ "name": "Duiska"
+ },
+ "TR": {
+ "name": "Durka"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypta"
+ },
+ "GQ": {
+ "name": "Ekvatoriála Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenariddu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlánda"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsullot"
+ },
+ "FO": {
+ "name": "Fearsullot"
+ },
+ "FJ": {
+ "name": "Fijisullot"
+ },
+ "PH": {
+ "name": "Filippiinnat"
+ },
+ "FR": {
+ "name": "Frankriika"
+ },
+ "GF": {
+ "name": "Frankriikka Guayana"
+ },
+ "PF": {
+ "name": "Frankriikka Polynesia"
+ },
+ "MF": {
+ "name": "Frankriikka Saint Martin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "CF": {
+ "name": "Gaska-Afrihká dásseváldi"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greika"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlánda"
+ },
+ "IS": {
+ "name": "Islánda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japána"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "CX": {
+ "name": "Juovllat-sullot"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanáda"
+ },
+ "IC": {
+ "name": "Kanáriasullot"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CN": {
+ "name": "Kiinná"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroátia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Látvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "GS": {
+ "name": "Lulli Georgia ja Lulli Sandwich-sullot"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makáo"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivvat"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Mann-sullot"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallsullot"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "ZA": {
+ "name": "Mátta-Afrihká"
+ },
+ "KR": {
+ "name": "Mátta-Korea"
+ },
+ "SS": {
+ "name": "Máttasudan"
+ },
+ "MR": {
+ "name": "Mauretánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolksullot"
+ },
+ "NO": {
+ "name": "Norga"
+ },
+ "TL": {
+ "name": "Nuorta-Timor"
+ },
+ "AT": {
+ "name": "Nuortariika"
+ },
+ "EH": {
+ "name": "Oarje-Sahára"
+ },
+ "NC": {
+ "name": "Ođđa-Kaledonia"
+ },
+ "NZ": {
+ "name": "Ođđa-Selánda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AE": {
+ "name": "Ovttastuvvan Arábaemiráhtat"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Ođđa-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugála"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RU": {
+ "name": "Ruošša"
+ },
+ "SE": {
+ "name": "Ruoŧŧa"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadine"
+ },
+ "SB": {
+ "name": "Salomon-sullot"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellsullot"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovákia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "ES": {
+ "name": "Spánia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stuorra-Británnia"
+ },
+ "FI": {
+ "name": "Suopma"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbárda ja Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazieana"
+ },
+ "CH": {
+ "name": "Šveica"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TJ": {
+ "name": "Tažikistan"
+ },
+ "TD": {
+ "name": "Tčad"
+ },
+ "TH": {
+ "name": "Thaieana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks ja Caicos-sullot"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungár"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikána"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vilges-Ruošša"
+ },
+ "NL": {
+ "name": "Vuolleeatnamat"
+ },
+ "SX": {
+ "name": "Vuolleeatnamat Saint Martin"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/seh.json b/library/intl/resources/country/seh.json
new file mode 100644
index 000000000..aa29db556
--- /dev/null
+++ b/library/intl/resources/country/seh.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "África do Sul"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armênia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Áustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KZ": {
+ "name": "Casaquistão"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "SG": {
+ "name": "Cingapura"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coréia do Norte"
+ },
+ "KR": {
+ "name": "Coréia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egito"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Árabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritréia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovênia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estônia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Groênlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GW": {
+ "name": "Guiné Bissau"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iêmen"
+ },
+ "KY": {
+ "name": "Ilhas Caiman"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "NF": {
+ "name": "Ilhas Norfolk"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Índia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irã"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letônia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedônia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurício"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mônaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledônia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polônia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quênia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CM": {
+ "name": "República dos Camarões"
+ },
+ "CZ": {
+ "name": "República Tcheca"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Romênia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "KN": {
+ "name": "São Cristovão e Nevis"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tadjiquistão"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Índico"
+ },
+ "PS": {
+ "name": "Território da Palestina"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turcomenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticano"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnã"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbábue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ses.json b/library/intl/resources/country/ses.json
new file mode 100644
index 000000000..bdbd80aee
--- /dev/null
+++ b/library/intl/resources/country/ses.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayceland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "Kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Šiili"
+ },
+ "CN": {
+ "name": "Šiin"
+ },
+ "CY": {
+ "name": "Šiipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sg.json b/library/intl/resources/country/sg.json
new file mode 100644
index 000000000..799433b59
--- /dev/null
+++ b/library/intl/resources/country/sg.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albanïi"
+ },
+ "US": {
+ "name": "ÂLeaa-Ôko tî Amerika"
+ },
+ "DZ": {
+ "name": "Alzerïi"
+ },
+ "AD": {
+ "name": "Andôro"
+ },
+ "AO": {
+ "name": "Angoläa"
+ },
+ "AI": {
+ "name": "Angûîla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antîgua na Barbûda"
+ },
+ "AE": {
+ "name": "Arâbo Emirâti Ôko"
+ },
+ "AM": {
+ "name": "Armenïi"
+ },
+ "AW": {
+ "name": "Arûba"
+ },
+ "AR": {
+ "name": "Arzantîna"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VG": {
+ "name": "Âzôâ Viîrîggo tî Anglëe"
+ },
+ "CK": {
+ "name": "âzûâ Kûku"
+ },
+ "MP": {
+ "name": "Âzûâ Märïâni tî Banga"
+ },
+ "MH": {
+ "name": "Âzûâ Märshâl"
+ },
+ "KY": {
+ "name": "Âzûâ Ngundë, Kaimäni"
+ },
+ "CV": {
+ "name": "Azûâ tî Kâpo-Vêre"
+ },
+ "FK": {
+ "name": "Âzûâ tî Mälüîni"
+ },
+ "TC": {
+ "name": "Âzûâ Turku na Kaîki"
+ },
+ "VI": {
+ "name": "Âzûâ Virîgo tî Amerîka"
+ },
+ "BS": {
+ "name": "Bahâmasa"
+ },
+ "BH": {
+ "name": "Bahrâina"
+ },
+ "BB": {
+ "name": "Barabâda"
+ },
+ "BY": {
+ "name": "Belarüsi"
+ },
+ "BE": {
+ "name": "Bêleze, Belezîki"
+ },
+ "BZ": {
+ "name": "Belîzi"
+ },
+ "BJ": {
+ "name": "Benëen"
+ },
+ "BD": {
+ "name": "Bengladêshi"
+ },
+ "BM": {
+ "name": "Beremûda"
+ },
+ "BO": {
+ "name": "Bolivïi"
+ },
+ "BA": {
+ "name": "Bosnïi na Herzegovînni"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brezîli"
+ },
+ "BN": {
+ "name": "Brunêi"
+ },
+ "BG": {
+ "name": "Bulugarïi"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundïi"
+ },
+ "BT": {
+ "name": "Butäan"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemêrke"
+ },
+ "DJ": {
+ "name": "Dibutùii"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dömïnîka"
+ },
+ "EC": {
+ "name": "Ekuatëre"
+ },
+ "IN": {
+ "name": "Ênnde"
+ },
+ "ID": {
+ "name": "Ênndonezïi"
+ },
+ "ER": {
+ "name": "Eritrëe"
+ },
+ "ES": {
+ "name": "Espânye"
+ },
+ "EE": {
+ "name": "Estonïi"
+ },
+ "ET": {
+ "name": "Etiopïi"
+ },
+ "AF": {
+ "name": "Faganïta, Afganïstäan"
+ },
+ "FR": {
+ "name": "Farânzi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Fëlânde"
+ },
+ "FJ": {
+ "name": "Fidyïi"
+ },
+ "PH": {
+ "name": "Filipîni"
+ },
+ "NC": {
+ "name": "Finî Kaledonïi"
+ },
+ "NZ": {
+ "name": "Finî Zelânde"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaböon"
+ },
+ "GM": {
+ "name": "Gambïi"
+ },
+ "GH": {
+ "name": "Ganäa"
+ },
+ "GY": {
+ "name": "Gayâna"
+ },
+ "GR": {
+ "name": "Gerêsi"
+ },
+ "GN": {
+ "name": "Ginëe"
+ },
+ "GQ": {
+ "name": "Ginëe tî Ekuatëre"
+ },
+ "GW": {
+ "name": "Gninëe-Bisau"
+ },
+ "GL": {
+ "name": "Gorolânde"
+ },
+ "GD": {
+ "name": "Grenâda"
+ },
+ "GP": {
+ "name": "Guadelûpu"
+ },
+ "GU": {
+ "name": "Guâm"
+ },
+ "GT": {
+ "name": "Guatêmälä"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Güyâni tî farânzi"
+ },
+ "HT": {
+ "name": "Haitïi"
+ },
+ "NL": {
+ "name": "Holände"
+ },
+ "HN": {
+ "name": "Honduräsi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongirùii"
+ },
+ "IR": {
+ "name": "Iräan"
+ },
+ "IQ": {
+ "name": "Irâki"
+ },
+ "IE": {
+ "name": "Irlânde"
+ },
+ "IS": {
+ "name": "Islânde"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israëli"
+ },
+ "IT": {
+ "name": "Italùii"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kämbôzi"
+ },
+ "CM": {
+ "name": "Kamerûne"
+ },
+ "EG": {
+ "name": "Kâmitâ"
+ },
+ "CA": {
+ "name": "Kanadäa"
+ },
+ "QA": {
+ "name": "Katära"
+ },
+ "KZ": {
+ "name": "Kazakisitäan"
+ },
+ "KE": {
+ "name": "Kenyäa"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizitùaan"
+ },
+ "CI": {
+ "name": "Kôdivüära"
+ },
+ "GB": {
+ "name": "Ködörögbïä--Ôko"
+ },
+ "CF": {
+ "name": "Ködörösêse tî Bêafrîka"
+ },
+ "DO": {
+ "name": "Ködörösêse tî Dominîka"
+ },
+ "CD": {
+ "name": "Ködörösêse tî Ngunuhalëzo tî kongö"
+ },
+ "CZ": {
+ "name": "Ködörösêse tî Tyêki"
+ },
+ "CO": {
+ "name": "Kolombïi"
+ },
+ "KM": {
+ "name": "Kömôro"
+ },
+ "CG": {
+ "name": "Kongö"
+ },
+ "KP": {
+ "name": "Korëe tî Banga"
+ },
+ "KR": {
+ "name": "Korëe tî Mbongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kôsta Rîka"
+ },
+ "KW": {
+ "name": "Köwêti"
+ },
+ "HR": {
+ "name": "Kroasïi"
+ },
+ "CU": {
+ "name": "Kubäa"
+ },
+ "LS": {
+ "name": "Lesôtho"
+ },
+ "VA": {
+ "name": "Letëe tî Vatikäan"
+ },
+ "LV": {
+ "name": "Letonùii"
+ },
+ "LR": {
+ "name": "Liberïa"
+ },
+ "LY": {
+ "name": "Libïi"
+ },
+ "LB": {
+ "name": "Libùaan"
+ },
+ "LI": {
+ "name": "Liechtenstein,"
+ },
+ "LT": {
+ "name": "Lituanïi"
+ },
+ "LA": {
+ "name": "Lùaôsi"
+ },
+ "LU": {
+ "name": "Lugzambûru"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskära"
+ },
+ "MW": {
+ "name": "Malawïi"
+ },
+ "MV": {
+ "name": "Maldîva"
+ },
+ "MY": {
+ "name": "Malezïi"
+ },
+ "ML": {
+ "name": "Malïi"
+ },
+ "MT": {
+ "name": "Mâlta"
+ },
+ "MA": {
+ "name": "Marôko"
+ },
+ "MQ": {
+ "name": "Märtïnîki"
+ },
+ "MK": {
+ "name": "Maseduäni"
+ },
+ "YT": {
+ "name": "Mäyôte"
+ },
+ "ZA": {
+ "name": "Mbongo-Afrîka"
+ },
+ "MX": {
+ "name": "Mekisîki"
+ },
+ "FM": {
+ "name": "Mikronezïi"
+ },
+ "MD": {
+ "name": "Moldavùii"
+ },
+ "MC": {
+ "name": "Monaköo"
+ },
+ "MN": {
+ "name": "Mongolïi"
+ },
+ "MS": {
+ "name": "Monserâte"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Mörîsi"
+ },
+ "MR": {
+ "name": "Moritanïi"
+ },
+ "MZ": {
+ "name": "Mözämbîka"
+ },
+ "MM": {
+ "name": "Myämâra"
+ },
+ "NA": {
+ "name": "Namibùii"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nëpâli"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nizëre"
+ },
+ "NG": {
+ "name": "Nizerïa"
+ },
+ "NO": {
+ "name": "Nörvêzi"
+ },
+ "OM": {
+ "name": "Omâni"
+ },
+ "AU": {
+ "name": "Ostralïi, Sotralïi"
+ },
+ "AT": {
+ "name": "Otrîsi"
+ },
+ "PK": {
+ "name": "Pakistäan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papû Finî Ginëe, Papuazïi"
+ },
+ "PY": {
+ "name": "Paraguëe"
+ },
+ "PE": {
+ "name": "Perüu"
+ },
+ "PN": {
+ "name": "Pitikêrni"
+ },
+ "PF": {
+ "name": "Polinezïi tî farânzi"
+ },
+ "PL": {
+ "name": "Pölôni"
+ },
+ "PR": {
+ "name": "Porto Rîko"
+ },
+ "PT": {
+ "name": "Pörtugäle, Ködörö Pûra"
+ },
+ "RE": {
+ "name": "Reinïon"
+ },
+ "RW": {
+ "name": "Ruandäa"
+ },
+ "RO": {
+ "name": "Rumanïi"
+ },
+ "RU": {
+ "name": "Rusïi"
+ },
+ "SV": {
+ "name": "Salvadöro"
+ },
+ "AS": {
+ "name": "Samöa tî Amerîka"
+ },
+ "WS": {
+ "name": "Samoäa"
+ },
+ "ST": {
+ "name": "Sâô Tömê na Prinsîpe"
+ },
+ "SA": {
+ "name": "Saûdi Arabïi"
+ },
+ "KN": {
+ "name": "Sên-Krïstôfo-na-Nevîsi"
+ },
+ "SM": {
+ "name": "Sên-Marëen"
+ },
+ "PM": {
+ "name": "Sên-Pyêre na Mikelöon"
+ },
+ "VC": {
+ "name": "Sên-Vensäan na âGrenadîni"
+ },
+ "SN": {
+ "name": "Senegäle"
+ },
+ "SH": {
+ "name": "Sênt-Helêna"
+ },
+ "LC": {
+ "name": "Sênt-Lisïi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "IO": {
+ "name": "Sêse tî Anglëe na Ngûyämä tî Ênnde"
+ },
+ "PS": {
+ "name": "Sêse tî Palestîni"
+ },
+ "SC": {
+ "name": "Sëyshêle"
+ },
+ "CL": {
+ "name": "Shilïi"
+ },
+ "CN": {
+ "name": "Shîna"
+ },
+ "SL": {
+ "name": "Sierä-Leône"
+ },
+ "SG": {
+ "name": "Sïngäpûru"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sîpri"
+ },
+ "LK": {
+ "name": "Sirî-Lanka"
+ },
+ "SY": {
+ "name": "Sirïi"
+ },
+ "SK": {
+ "name": "Solovakïi"
+ },
+ "SI": {
+ "name": "Solovenïi"
+ },
+ "SO": {
+ "name": "Somalïi"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudäan"
+ },
+ "SS": {
+ "name": "Sudäan-Mbongo"
+ },
+ "SE": {
+ "name": "Suêde"
+ },
+ "CH": {
+ "name": "Sûîsi"
+ },
+ "SR": {
+ "name": "Surinäm"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swäzïlânde"
+ },
+ "TJ": {
+ "name": "Taazikiistäan"
+ },
+ "TH": {
+ "name": "Tailânde"
+ },
+ "TW": {
+ "name": "Tâiwâni"
+ },
+ "TZ": {
+ "name": "Tanzanïi"
+ },
+ "TL": {
+ "name": "Timôro tî Tö"
+ },
+ "TG": {
+ "name": "Togö"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinitùee na Tobagö"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizïi"
+ },
+ "TM": {
+ "name": "Turkumenistäan"
+ },
+ "TR": {
+ "name": "Turukïi"
+ },
+ "TV": {
+ "name": "Tüvalü"
+ },
+ "TD": {
+ "name": "Tyâde"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ugandäa"
+ },
+ "UA": {
+ "name": "Ukrêni"
+ },
+ "UY": {
+ "name": "Uruguëe"
+ },
+ "UZ": {
+ "name": "Uzbekistäan"
+ },
+ "VU": {
+ "name": "Vanuatü"
+ },
+ "VE": {
+ "name": "Venezueläa"
+ },
+ "VN": {
+ "name": "Vietnäm"
+ },
+ "WF": {
+ "name": "Walîsi na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yëmêni"
+ },
+ "JM": {
+ "name": "Zamaîka"
+ },
+ "DE": {
+ "name": "Zâmani"
+ },
+ "ZM": {
+ "name": "Zambïi"
+ },
+ "JP": {
+ "name": "Zapöon"
+ },
+ "AZ": {
+ "name": "Zerebaidyäan, Azerbaidyäan,"
+ },
+ "GI": {
+ "name": "Zibraltära, Zibaratära"
+ },
+ "ZW": {
+ "name": "Zimbäbwe"
+ },
+ "JO": {
+ "name": "Zordanïi"
+ },
+ "GE": {
+ "name": "Zorzïi"
+ },
+ "NF": {
+ "name": "Zûâ Nôrfôlko"
+ },
+ "SB": {
+ "name": "Zûâ Salomöon"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/shi-Latn.json b/library/intl/resources/country/shi-Latn.json
new file mode 100644
index 000000000..278dedd11
--- /dev/null
+++ b/library/intl/resources/country/shi-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "adrabijan"
+ },
+ "GI": {
+ "name": "adrar n ṭaṛiq"
+ },
+ "AF": {
+ "name": "afɣanistan"
+ },
+ "ZA": {
+ "name": "afriqya n iffus"
+ },
+ "PS": {
+ "name": "agmmaḍ n tagut d ɣzza"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "albanya"
+ },
+ "DE": {
+ "name": "almanya"
+ },
+ "ID": {
+ "name": "andunisya"
+ },
+ "AD": {
+ "name": "andura"
+ },
+ "AI": {
+ "name": "angila"
+ },
+ "AO": {
+ "name": "angula"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiga d brbuda"
+ },
+ "AR": {
+ "name": "arjantin"
+ },
+ "AM": {
+ "name": "arminya"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "awank n fatikan"
+ },
+ "PG": {
+ "name": "babwa ɣinya tamaynut"
+ },
+ "BS": {
+ "name": "bahamas"
+ },
+ "PK": {
+ "name": "bakistan"
+ },
+ "PW": {
+ "name": "balaw"
+ },
+ "PA": {
+ "name": "banama"
+ },
+ "BD": {
+ "name": "bangladic"
+ },
+ "PY": {
+ "name": "baragway"
+ },
+ "BB": {
+ "name": "barbad"
+ },
+ "BH": {
+ "name": "bḥrayn"
+ },
+ "BT": {
+ "name": "bhutan"
+ },
+ "BY": {
+ "name": "bilarusya"
+ },
+ "BZ": {
+ "name": "biliz"
+ },
+ "BJ": {
+ "name": "binin"
+ },
+ "PE": {
+ "name": "biru"
+ },
+ "PN": {
+ "name": "bitkayrn"
+ },
+ "BG": {
+ "name": "blɣara"
+ },
+ "BE": {
+ "name": "bljika"
+ },
+ "BR": {
+ "name": "brazil"
+ },
+ "BM": {
+ "name": "brmuda"
+ },
+ "PT": {
+ "name": "bṛṭqiz"
+ },
+ "BN": {
+ "name": "bruni"
+ },
+ "BO": {
+ "name": "bulibya"
+ },
+ "PF": {
+ "name": "bulinizya tafransist"
+ },
+ "PL": {
+ "name": "bulunya"
+ },
+ "BF": {
+ "name": "burkina fasu"
+ },
+ "PR": {
+ "name": "burtu riku"
+ },
+ "BI": {
+ "name": "burundi"
+ },
+ "BA": {
+ "name": "busna d hirsik"
+ },
+ "BW": {
+ "name": "butswana"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "ccili"
+ },
+ "CN": {
+ "name": "ccinwa"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "culumbya"
+ },
+ "KM": {
+ "name": "cumur"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "djibuti"
+ },
+ "DM": {
+ "name": "duminik"
+ },
+ "DZ": {
+ "name": "dzayr"
+ },
+ "OM": {
+ "name": "ɛuman"
+ },
+ "VU": {
+ "name": "fanwaṭu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "fidji"
+ },
+ "PH": {
+ "name": "filibbin"
+ },
+ "FI": {
+ "name": "fillanda"
+ },
+ "VE": {
+ "name": "finzwila"
+ },
+ "VN": {
+ "name": "fitnam"
+ },
+ "FR": {
+ "name": "fransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "gabun"
+ },
+ "GM": {
+ "name": "gambya"
+ },
+ "GL": {
+ "name": "griland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "gwadalub"
+ },
+ "GU": {
+ "name": "gwam"
+ },
+ "GT": {
+ "name": "gwatimala"
+ },
+ "GF": {
+ "name": "gwiyan tafransist"
+ },
+ "GY": {
+ "name": "gwiyana"
+ },
+ "GH": {
+ "name": "ɣana"
+ },
+ "GN": {
+ "name": "ɣinya"
+ },
+ "GW": {
+ "name": "ɣinya bisaw"
+ },
+ "GQ": {
+ "name": "ɣinya n ikwadur"
+ },
+ "GD": {
+ "name": "ɣrnaṭa"
+ },
+ "HT": {
+ "name": "hayti"
+ },
+ "HU": {
+ "name": "hnɣarya"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "hulanda"
+ },
+ "HN": {
+ "name": "hunduras"
+ },
+ "EC": {
+ "name": "ikwadur"
+ },
+ "IR": {
+ "name": "iran"
+ },
+ "ER": {
+ "name": "iritirya"
+ },
+ "IE": {
+ "name": "irlanda"
+ },
+ "IS": {
+ "name": "island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "israyil"
+ },
+ "EE": {
+ "name": "istunya"
+ },
+ "IT": {
+ "name": "iṭalya"
+ },
+ "ET": {
+ "name": "ityubya"
+ },
+ "US": {
+ "name": "iwunak munnin n mirikan"
+ },
+ "JM": {
+ "name": "jamayka"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GE": {
+ "name": "jurjya"
+ },
+ "NC": {
+ "name": "kalidunya tamaynut"
+ },
+ "KH": {
+ "name": "kambudya"
+ },
+ "CM": {
+ "name": "kamirun"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "KZ": {
+ "name": "kazaxstan"
+ },
+ "KE": {
+ "name": "kinya"
+ },
+ "KG": {
+ "name": "kirɣizistan"
+ },
+ "KI": {
+ "name": "kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "krwatya"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "CG": {
+ "name": "kungu"
+ },
+ "KR": {
+ "name": "kurya n iffus"
+ },
+ "KP": {
+ "name": "kurya n iẓẓlmḍ"
+ },
+ "CR": {
+ "name": "kusta rika"
+ },
+ "CI": {
+ "name": "kut difwar"
+ },
+ "LV": {
+ "name": "latfya"
+ },
+ "LA": {
+ "name": "laws"
+ },
+ "IQ": {
+ "name": "lɛiraq"
+ },
+ "IN": {
+ "name": "lhind"
+ },
+ "LR": {
+ "name": "libirya"
+ },
+ "LY": {
+ "name": "libya"
+ },
+ "LI": {
+ "name": "likinctayn"
+ },
+ "AE": {
+ "name": "limarat"
+ },
+ "LS": {
+ "name": "liṣuṭu"
+ },
+ "LT": {
+ "name": "litwanya"
+ },
+ "KW": {
+ "name": "lkwit"
+ },
+ "MA": {
+ "name": "lmɣrib"
+ },
+ "LB": {
+ "name": "lubnan"
+ },
+ "LU": {
+ "name": "luksanburg"
+ },
+ "JO": {
+ "name": "lurdun"
+ },
+ "JP": {
+ "name": "lyaban"
+ },
+ "GR": {
+ "name": "lyunan"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "madaɣacqar"
+ },
+ "MW": {
+ "name": "malawi"
+ },
+ "MV": {
+ "name": "maldif"
+ },
+ "ML": {
+ "name": "mali"
+ },
+ "MY": {
+ "name": "malizya"
+ },
+ "MT": {
+ "name": "malṭa"
+ },
+ "MQ": {
+ "name": "martinik"
+ },
+ "MK": {
+ "name": "masidunya"
+ },
+ "YT": {
+ "name": "mayuṭ"
+ },
+ "FM": {
+ "name": "mikrunizya"
+ },
+ "MX": {
+ "name": "miksik"
+ },
+ "EG": {
+ "name": "miṣṛ"
+ },
+ "MN": {
+ "name": "mnɣulya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "muldufya"
+ },
+ "MC": {
+ "name": "munaku"
+ },
+ "MS": {
+ "name": "munsirat"
+ },
+ "MU": {
+ "name": "muris"
+ },
+ "MR": {
+ "name": "muṛiṭanya"
+ },
+ "MZ": {
+ "name": "muznbiq"
+ },
+ "MM": {
+ "name": "myanmar"
+ },
+ "NA": {
+ "name": "namibya"
+ },
+ "NR": {
+ "name": "nawru"
+ },
+ "NP": {
+ "name": "nibal"
+ },
+ "NG": {
+ "name": "nijirya"
+ },
+ "NI": {
+ "name": "nikaragwa"
+ },
+ "NU": {
+ "name": "niwi"
+ },
+ "NE": {
+ "name": "nnijir"
+ },
+ "AT": {
+ "name": "nnmsa"
+ },
+ "NO": {
+ "name": "nnrwij"
+ },
+ "NZ": {
+ "name": "nyuzilanda"
+ },
+ "QA": {
+ "name": "qatar"
+ },
+ "CY": {
+ "name": "qubrus"
+ },
+ "RE": {
+ "name": "riyunyun"
+ },
+ "RO": {
+ "name": "rumanya"
+ },
+ "RU": {
+ "name": "rusya"
+ },
+ "RW": {
+ "name": "rwanda"
+ },
+ "SV": {
+ "name": "salfadur"
+ },
+ "WS": {
+ "name": "samwa"
+ },
+ "AS": {
+ "name": "samwa tamirikanit"
+ },
+ "PM": {
+ "name": "sanbyir d miklun"
+ },
+ "VC": {
+ "name": "sanfansan d grinadin"
+ },
+ "KN": {
+ "name": "sankris d nifis"
+ },
+ "SM": {
+ "name": "sanmarinu"
+ },
+ "SH": {
+ "name": "santilin"
+ },
+ "LC": {
+ "name": "santlusi"
+ },
+ "ST": {
+ "name": "sawṭumi d bransib"
+ },
+ "ES": {
+ "name": "sbanya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "slufakya"
+ },
+ "SI": {
+ "name": "slufinya"
+ },
+ "SG": {
+ "name": "snɣafura"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "srilanka"
+ },
+ "SA": {
+ "name": "ssaɛudiya"
+ },
+ "SC": {
+ "name": "ssicil"
+ },
+ "SN": {
+ "name": "ssinigal"
+ },
+ "SL": {
+ "name": "ssiralyun"
+ },
+ "SD": {
+ "name": "ssudan"
+ },
+ "SO": {
+ "name": "ṣṣumal"
+ },
+ "SE": {
+ "name": "sswid"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "surinam"
+ },
+ "SY": {
+ "name": "surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "swazilanda"
+ },
+ "CH": {
+ "name": "swisra"
+ },
+ "TJ": {
+ "name": "tadjakistan"
+ },
+ "CD": {
+ "name": "tagdudant tadimukratit n Kongo"
+ },
+ "DO": {
+ "name": "tagdudant taduminikt"
+ },
+ "CF": {
+ "name": "tagdudant tanammast n ifriqya"
+ },
+ "CZ": {
+ "name": "tagdudant tatcikit"
+ },
+ "GB": {
+ "name": "tagldit imunn"
+ },
+ "IO": {
+ "name": "tamnaḍt tanglizit n ugaru ahindi"
+ },
+ "TZ": {
+ "name": "ṭanẓanya"
+ },
+ "TH": {
+ "name": "ṭayland"
+ },
+ "TW": {
+ "name": "ṭaywan"
+ },
+ "TD": {
+ "name": "tcad"
+ },
+ "CV": {
+ "name": "tigzirin n kabbirdi"
+ },
+ "KY": {
+ "name": "tigzirin n kayman"
+ },
+ "CK": {
+ "name": "tigzirin n kuk"
+ },
+ "FK": {
+ "name": "tigzirin n malawi"
+ },
+ "MH": {
+ "name": "tigzirin n marcal"
+ },
+ "MP": {
+ "name": "tigzirin n maryan n iẓẓlmḍ"
+ },
+ "NF": {
+ "name": "tigzirin n nurfulk"
+ },
+ "SB": {
+ "name": "tigzirin n saluman"
+ },
+ "TC": {
+ "name": "tigzirin n turkya d kayk"
+ },
+ "VI": {
+ "name": "tigzirin timgad n iwunak munnin"
+ },
+ "VG": {
+ "name": "tigzirin timgad n nngliz"
+ },
+ "TL": {
+ "name": "timur n lqblt"
+ },
+ "TT": {
+ "name": "trinidad d ṭubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "tufalu"
+ },
+ "TG": {
+ "name": "ṭugu"
+ },
+ "TK": {
+ "name": "ṭuklaw"
+ },
+ "TO": {
+ "name": "ṭunga"
+ },
+ "TN": {
+ "name": "tuns"
+ },
+ "TM": {
+ "name": "turkmanstan"
+ },
+ "TR": {
+ "name": "turkya"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "uɣanda"
+ },
+ "UA": {
+ "name": "ukranya"
+ },
+ "UY": {
+ "name": "urugway"
+ },
+ "AU": {
+ "name": "ustralya"
+ },
+ "UZ": {
+ "name": "uzbakistan"
+ },
+ "WF": {
+ "name": "walis d futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "yaman"
+ },
+ "ZM": {
+ "name": "zambya"
+ },
+ "ZW": {
+ "name": "zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/shi.json b/library/intl/resources/country/shi.json
new file mode 100644
index 000000000..bfdd20b39
--- /dev/null
+++ b/library/intl/resources/country/shi.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "PS": {
+ "name": "ⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ"
+ },
+ "AZ": {
+ "name": "ⴰⴷⵔⴰⴱⵉⵊⴰⵏ"
+ },
+ "GI": {
+ "name": "ⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇ"
+ },
+ "ZA": {
+ "name": "ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ"
+ },
+ "AF": {
+ "name": "ⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏ"
+ },
+ "AL": {
+ "name": "ⴰⵍⴱⴰⵏⵢⴰ"
+ },
+ "DE": {
+ "name": "ⴰⵍⵎⴰⵏⵢⴰ"
+ },
+ "AI": {
+ "name": "ⴰⵏⴳⵉⵍⴰ"
+ },
+ "AO": {
+ "name": "ⴰⵏⴳⵓⵍⴰ"
+ },
+ "ID": {
+ "name": "ⴰⵏⴷⵓⵏⵉⵙⵢⴰ"
+ },
+ "AD": {
+ "name": "ⴰⵏⴷⵓⵔⴰ"
+ },
+ "AG": {
+ "name": "ⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰ"
+ },
+ "AR": {
+ "name": "ⴰⵔⵊⴰⵏⵜⵉⵏ"
+ },
+ "AM": {
+ "name": "ⴰⵔⵎⵉⵏⵢⴰ"
+ },
+ "AW": {
+ "name": "ⴰⵔⵓⴱⴰ"
+ },
+ "VA": {
+ "name": "ⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏ"
+ },
+ "PG": {
+ "name": "ⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ"
+ },
+ "PK": {
+ "name": "ⴱⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "BS": {
+ "name": "ⴱⴰⵀⴰⵎⴰⵙ"
+ },
+ "PW": {
+ "name": "ⴱⴰⵍⴰⵡ"
+ },
+ "PA": {
+ "name": "ⴱⴰⵏⴰⵎⴰ"
+ },
+ "BD": {
+ "name": "ⴱⴰⵏⴳⵍⴰⴷⵉⵛ"
+ },
+ "PY": {
+ "name": "ⴱⴰⵔⴰⴳⵡⴰⵢ"
+ },
+ "BB": {
+ "name": "ⴱⴰⵔⴱⴰⴷ"
+ },
+ "BT": {
+ "name": "ⴱⵀⵓⵜⴰⵏ"
+ },
+ "BH": {
+ "name": "ⴱⵃⵔⴰⵢⵏ"
+ },
+ "BY": {
+ "name": "ⴱⵉⵍⴰⵔⵓⵙⵢⴰ"
+ },
+ "BZ": {
+ "name": "ⴱⵉⵍⵉⵣ"
+ },
+ "BJ": {
+ "name": "ⴱⵉⵏⵉⵏ"
+ },
+ "PE": {
+ "name": "ⴱⵉⵔⵓ"
+ },
+ "PN": {
+ "name": "ⴱⵉⵜⴽⴰⵢⵔⵏ"
+ },
+ "BE": {
+ "name": "ⴱⵍⵊⵉⴽⴰ"
+ },
+ "BG": {
+ "name": "ⴱⵍⵖⴰⵔⵢⴰ"
+ },
+ "BO": {
+ "name": "ⴱⵓⵍⵉⴼⵢⴰ"
+ },
+ "PF": {
+ "name": "ⴱⵓⵍⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "PL": {
+ "name": "ⴱⵓⵍⵓⵏⵢⴰ"
+ },
+ "BF": {
+ "name": "ⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓ"
+ },
+ "BI": {
+ "name": "ⴱⵓⵔⵓⵏⴷⵉ"
+ },
+ "PR": {
+ "name": "ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ"
+ },
+ "BA": {
+ "name": "ⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽ"
+ },
+ "BW": {
+ "name": "ⴱⵓⵜⵙⵡⴰⵏⴰ"
+ },
+ "BR": {
+ "name": "ⴱⵔⴰⵣⵉⵍ"
+ },
+ "BM": {
+ "name": "ⴱⵔⵎⵓⴷⴰ"
+ },
+ "BN": {
+ "name": "ⴱⵔⵓⵏⵉ"
+ },
+ "PT": {
+ "name": "ⴱⵕⵟⵇⵉⵣ"
+ },
+ "GA": {
+ "name": "ⴳⴰⴱⵓⵏ"
+ },
+ "GM": {
+ "name": "ⴳⴰⵎⴱⵢⴰ"
+ },
+ "GL": {
+ "name": "ⴳⵔⵉⵍⴰⵏⴷ"
+ },
+ "GP": {
+ "name": "ⴳⵡⴰⴷⴰⵍⵓⴱ"
+ },
+ "GU": {
+ "name": "ⴳⵡⴰⵎ"
+ },
+ "GT": {
+ "name": "ⴳⵡⴰⵜⵉⵎⴰⵍⴰ"
+ },
+ "GF": {
+ "name": "ⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "GY": {
+ "name": "ⴳⵡⵉⵢⴰⵏⴰ"
+ },
+ "DK": {
+ "name": "ⴷⴰⵏⵎⴰⵔⴽ"
+ },
+ "DJ": {
+ "name": "ⴷⵊⵉⴱⵓⵜⵉ"
+ },
+ "DM": {
+ "name": "ⴷⵓⵎⵉⵏⵉⴽ"
+ },
+ "DZ": {
+ "name": "ⴷⵣⴰⵢⵔ"
+ },
+ "VU": {
+ "name": "ⴼⴰⵏⵡⴰⵟⵓ"
+ },
+ "FJ": {
+ "name": "ⴼⵉⴷⵊⵉ"
+ },
+ "PH": {
+ "name": "ⴼⵉⵍⵉⴱⴱⵉⵏ"
+ },
+ "FI": {
+ "name": "ⴼⵉⵍⵍⴰⵏⴷⴰ"
+ },
+ "VE": {
+ "name": "ⴼⵉⵏⵣⵡⵉⵍⴰ"
+ },
+ "VN": {
+ "name": "ⴼⵉⵜⵏⴰⵎ"
+ },
+ "FR": {
+ "name": "ⴼⵔⴰⵏⵙⴰ"
+ },
+ "NC": {
+ "name": "ⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ"
+ },
+ "KH": {
+ "name": "ⴽⴰⵎⴱⵓⴷⵢⴰ"
+ },
+ "CM": {
+ "name": "ⴽⴰⵎⵉⵔⵓⵏ"
+ },
+ "CA": {
+ "name": "ⴽⴰⵏⴰⴷⴰ"
+ },
+ "KZ": {
+ "name": "ⴽⴰⵣⴰⵅⵙⵜⴰⵏ"
+ },
+ "KE": {
+ "name": "ⴽⵉⵏⵢⴰ"
+ },
+ "KI": {
+ "name": "ⴽⵉⵔⵉⴱⴰⵜⵉ"
+ },
+ "KG": {
+ "name": "ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏ"
+ },
+ "CU": {
+ "name": "ⴽⵓⴱⴰ"
+ },
+ "CO": {
+ "name": "ⴽⵓⵍⵓⵎⴱⵢⴰ"
+ },
+ "CG": {
+ "name": "ⴽⵓⵏⴳⵓ"
+ },
+ "KR": {
+ "name": "ⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ"
+ },
+ "KP": {
+ "name": "ⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹ"
+ },
+ "CR": {
+ "name": "ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ"
+ },
+ "CI": {
+ "name": "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ"
+ },
+ "HR": {
+ "name": "ⴽⵔⵡⴰⵜⵢⴰ"
+ },
+ "HT": {
+ "name": "ⵀⴰⵢⵜⵉ"
+ },
+ "HU": {
+ "name": "ⵀⵏⵖⴰⵔⵢⴰ"
+ },
+ "NL": {
+ "name": "ⵀⵓⵍⴰⵏⴷⴰ"
+ },
+ "HN": {
+ "name": "ⵀⵓⵏⴷⵓⵔⴰⵙ"
+ },
+ "OM": {
+ "name": "ⵄⵓⵎⴰⵏ"
+ },
+ "QA": {
+ "name": "ⵇⴰⵜⴰⵔ"
+ },
+ "CY": {
+ "name": "ⵇⵓⴱⵔⵓⵙ"
+ },
+ "KM": {
+ "name": "ⵇⵓⵎⵓⵔ"
+ },
+ "EC": {
+ "name": "ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "IR": {
+ "name": "ⵉⵔⴰⵏ"
+ },
+ "ER": {
+ "name": "ⵉⵔⵉⵜⵉⵔⵢⴰ"
+ },
+ "IE": {
+ "name": "ⵉⵔⵍⴰⵏⴷⴰ"
+ },
+ "IS": {
+ "name": "ⵉⵙⵍⴰⵏⴷ"
+ },
+ "IL": {
+ "name": "ⵉⵙⵔⴰⵢⵉⵍ"
+ },
+ "EE": {
+ "name": "ⵉⵙⵜⵓⵏⵢⴰ"
+ },
+ "ET": {
+ "name": "ⵉⵜⵢⵓⴱⵢⴰ"
+ },
+ "IT": {
+ "name": "ⵉⵟⴰⵍⵢⴰ"
+ },
+ "US": {
+ "name": "ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏ"
+ },
+ "JM": {
+ "name": "ⵊⴰⵎⴰⵢⴽⴰ"
+ },
+ "GE": {
+ "name": "ⵊⵓⵔⵊⵢⴰ"
+ },
+ "LV": {
+ "name": "ⵍⴰⵜⴼⵢⴰ"
+ },
+ "LA": {
+ "name": "ⵍⴰⵡⵙ"
+ },
+ "KW": {
+ "name": "ⵍⴽⵡⵉⵜ"
+ },
+ "IN": {
+ "name": "ⵍⵀⵉⵏⴷ"
+ },
+ "IQ": {
+ "name": "ⵍⵄⵉⵔⴰⵇ"
+ },
+ "LR": {
+ "name": "ⵍⵉⴱⵉⵔⵢⴰ"
+ },
+ "LY": {
+ "name": "ⵍⵉⴱⵢⴰ"
+ },
+ "LI": {
+ "name": "ⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏ"
+ },
+ "AE": {
+ "name": "ⵍⵉⵎⴰⵔⴰⵜ"
+ },
+ "LS": {
+ "name": "ⵍⵉⵚⵓⵟⵓ"
+ },
+ "LT": {
+ "name": "ⵍⵉⵜⵡⴰⵏⵢⴰ"
+ },
+ "MA": {
+ "name": "ⵍⵎⵖⵔⵉⴱ"
+ },
+ "LB": {
+ "name": "ⵍⵓⴱⵏⴰⵏ"
+ },
+ "LU": {
+ "name": "ⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳ"
+ },
+ "JO": {
+ "name": "ⵍⵓⵔⴷⵓⵏ"
+ },
+ "JP": {
+ "name": "ⵍⵢⴰⴱⴰⵏ"
+ },
+ "GR": {
+ "name": "ⵍⵢⵓⵏⴰⵏ"
+ },
+ "MG": {
+ "name": "ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"
+ },
+ "MW": {
+ "name": "ⵎⴰⵍⴰⵡⵉ"
+ },
+ "MV": {
+ "name": "ⵎⴰⵍⴷⵉⴼ"
+ },
+ "ML": {
+ "name": "ⵎⴰⵍⵉ"
+ },
+ "MY": {
+ "name": "ⵎⴰⵍⵉⵣⵢⴰ"
+ },
+ "MT": {
+ "name": "ⵎⴰⵍⵟⴰ"
+ },
+ "MQ": {
+ "name": "ⵎⴰⵔⵜⵉⵏⵉⴽ"
+ },
+ "MK": {
+ "name": "ⵎⴰⵙⵉⴷⵓⵏⵢⴰ"
+ },
+ "YT": {
+ "name": "ⵎⴰⵢⵓⵟ"
+ },
+ "FM": {
+ "name": "ⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰ"
+ },
+ "MX": {
+ "name": "ⵎⵉⴽⵙⵉⴽ"
+ },
+ "EG": {
+ "name": "ⵎⵉⵚⵕ"
+ },
+ "MN": {
+ "name": "ⵎⵏⵖⵓⵍⵢⴰ"
+ },
+ "MD": {
+ "name": "ⵎⵓⵍⴷⵓⴼⵢⴰ"
+ },
+ "MC": {
+ "name": "ⵎⵓⵏⴰⴽⵓ"
+ },
+ "MS": {
+ "name": "ⵎⵓⵏⵙⵉⵔⴰⵜ"
+ },
+ "MU": {
+ "name": "ⵎⵓⵔⵉⵙ"
+ },
+ "MR": {
+ "name": "ⵎⵓⵕⵉⵟⴰⵏⵢⴰ"
+ },
+ "MZ": {
+ "name": "ⵎⵓⵣⵏⴱⵉⵇ"
+ },
+ "MM": {
+ "name": "ⵎⵢⴰⵏⵎⴰⵔ"
+ },
+ "NA": {
+ "name": "ⵏⴰⵎⵉⴱⵢⴰ"
+ },
+ "NR": {
+ "name": "ⵏⴰⵡⵔⵓ"
+ },
+ "NP": {
+ "name": "ⵏⵉⴱⴰⵍ"
+ },
+ "NI": {
+ "name": "ⵏⵉⴽⴰⵔⴰⴳⵡⴰ"
+ },
+ "NG": {
+ "name": "ⵏⵉⵊⵉⵔⵢⴰ"
+ },
+ "NU": {
+ "name": "ⵏⵉⵡⵉ"
+ },
+ "NE": {
+ "name": "ⵏⵏⵉⵊⵉⵔ"
+ },
+ "AT": {
+ "name": "ⵏⵏⵎⵙⴰ"
+ },
+ "NO": {
+ "name": "ⵏⵏⵔⵡⵉⵊ"
+ },
+ "NZ": {
+ "name": "ⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰ"
+ },
+ "UA": {
+ "name": "ⵓⴽⵔⴰⵏⵢⴰ"
+ },
+ "UY": {
+ "name": "ⵓⵔⵓⴳⵡⴰⵢ"
+ },
+ "UG": {
+ "name": "ⵓⵖⴰⵏⴷⴰ"
+ },
+ "AU": {
+ "name": "ⵓⵙⵜⵔⴰⵍⵢⴰ"
+ },
+ "UZ": {
+ "name": "ⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "RE": {
+ "name": "ⵔⵉⵢⵓⵏⵢⵓⵏ"
+ },
+ "RO": {
+ "name": "ⵔⵓⵎⴰⵏⵢⴰ"
+ },
+ "RU": {
+ "name": "ⵔⵓⵙⵢⴰ"
+ },
+ "RW": {
+ "name": "ⵔⵡⴰⵏⴷⴰ"
+ },
+ "GH": {
+ "name": "ⵖⴰⵏⴰ"
+ },
+ "GN": {
+ "name": "ⵖⵉⵏⵢⴰ"
+ },
+ "GW": {
+ "name": "ⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡ"
+ },
+ "GQ": {
+ "name": "ⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "GD": {
+ "name": "ⵖⵔⵏⴰⵟⴰ"
+ },
+ "SV": {
+ "name": "ⵙⴰⵍⴼⴰⴷⵓⵔ"
+ },
+ "WS": {
+ "name": "ⵙⴰⵎⵡⴰ"
+ },
+ "AS": {
+ "name": "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜ"
+ },
+ "PM": {
+ "name": "ⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎⵉⴽⵍⵓⵏ"
+ },
+ "VC": {
+ "name": "ⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏ"
+ },
+ "KN": {
+ "name": "ⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙ"
+ },
+ "SM": {
+ "name": "ⵙⴰⵏⵎⴰⵔⵉⵏⵓ"
+ },
+ "SH": {
+ "name": "ⵙⴰⵏⵜⵉⵍⵉⵏ"
+ },
+ "LC": {
+ "name": "ⵙⴰⵏⵜⵍⵓⵙⵉ"
+ },
+ "ST": {
+ "name": "ⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱ"
+ },
+ "ES": {
+ "name": "ⵙⴱⴰⵏⵢⴰ"
+ },
+ "SK": {
+ "name": "ⵙⵍⵓⴼⴰⴽⵢⴰ"
+ },
+ "SI": {
+ "name": "ⵙⵍⵓⴼⵉⵏⵢⴰ"
+ },
+ "SG": {
+ "name": "ⵙⵏⵖⴰⴼⵓⵔⴰ"
+ },
+ "SR": {
+ "name": "ⵙⵓⵔⵉⵏⴰⵎ"
+ },
+ "SY": {
+ "name": "ⵙⵓⵔⵢⴰ"
+ },
+ "LK": {
+ "name": "ⵙⵔⵉⵍⴰⵏⴽⴰ"
+ },
+ "SA": {
+ "name": "ⵙⵙⴰⵄⵓⴷⵉⵢⴰ"
+ },
+ "SN": {
+ "name": "ⵙⵙⵉⵏⵉⴳⴰⵍ"
+ },
+ "SL": {
+ "name": "ⵙⵙⵉⵔⴰⵍⵢⵓⵏ"
+ },
+ "SC": {
+ "name": "ⵙⵙⵉⵛⵉⵍ"
+ },
+ "SD": {
+ "name": "ⵙⵙⵓⴷⴰⵏ"
+ },
+ "SE": {
+ "name": "ⵙⵙⵡⵉⴷ"
+ },
+ "SZ": {
+ "name": "ⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰ"
+ },
+ "CH": {
+ "name": "ⵙⵡⵉⵙⵔⴰ"
+ },
+ "SO": {
+ "name": "ⵚⵚⵓⵎⴰⵍ"
+ },
+ "CL": {
+ "name": "ⵛⵛⵉⵍⵉ"
+ },
+ "CN": {
+ "name": "ⵛⵛⵉⵏⵡⴰ"
+ },
+ "CD": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓ"
+ },
+ "DO": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜ"
+ },
+ "CF": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰ"
+ },
+ "CZ": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "GB": {
+ "name": "ⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏ"
+ },
+ "TJ": {
+ "name": "ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "IO": {
+ "name": "ⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉ"
+ },
+ "CV": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ"
+ },
+ "KY": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏ"
+ },
+ "CK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽ"
+ },
+ "FK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉ"
+ },
+ "MH": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ"
+ },
+ "MP": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹ"
+ },
+ "NF": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽ"
+ },
+ "SB": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏ"
+ },
+ "TC": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ"
+ },
+ "VI": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ"
+ },
+ "VG": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣ"
+ },
+ "TL": {
+ "name": "ⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜ"
+ },
+ "TV": {
+ "name": "ⵜⵓⴼⴰⵍⵓ"
+ },
+ "TN": {
+ "name": "ⵜⵓⵏⵙ"
+ },
+ "TM": {
+ "name": "ⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏ"
+ },
+ "TR": {
+ "name": "ⵜⵓⵔⴽⵢⴰ"
+ },
+ "TT": {
+ "name": "ⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓ"
+ },
+ "TD": {
+ "name": "ⵜⵛⴰⴷ"
+ },
+ "TZ": {
+ "name": "ⵟⴰⵏⵥⴰⵏⵢⴰ"
+ },
+ "TH": {
+ "name": "ⵟⴰⵢⵍⴰⵏⴷ"
+ },
+ "TW": {
+ "name": "ⵟⴰⵢⵡⴰⵏ"
+ },
+ "TG": {
+ "name": "ⵟⵓⴳⵓ"
+ },
+ "TK": {
+ "name": "ⵟⵓⴽⵍⴰⵡ"
+ },
+ "TO": {
+ "name": "ⵟⵓⵏⴳⴰ"
+ },
+ "WF": {
+ "name": "ⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰ"
+ },
+ "YE": {
+ "name": "ⵢⴰⵎⴰⵏ"
+ },
+ "ZM": {
+ "name": "ⵣⴰⵎⴱⵢⴰ"
+ },
+ "ZW": {
+ "name": "ⵣⵉⵎⴱⴰⴱⵡⵉ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/si.json b/library/intl/resources/country/si.json
new file mode 100644
index 000000000..d6fad340f
--- /dev/null
+++ b/library/intl/resources/country/si.json
@@ -0,0 +1,761 @@
+{
+ "IE": {
+ "name": "අයර්ලන්තය"
+ },
+ "IM": {
+ "name": "අයිල් ඔෆ් මෑන්"
+ },
+ "IS": {
+ "name": "අයිස්ලන්තය"
+ },
+ "AW": {
+ "name": "අරුබාව"
+ },
+ "AZ": {
+ "name": "අසර්බයිජානය"
+ },
+ "AR": {
+ "name": "ආර්ජෙන්ටිනාව"
+ },
+ "AM": {
+ "name": "ආර්මේනියාව"
+ },
+ "AI": {
+ "name": "ඇන්ගුයිලාව"
+ },
+ "AO": {
+ "name": "ඇන්ගෝලාව"
+ },
+ "AQ": {
+ "name": "ඇන්ටාක්ටිකාව"
+ },
+ "AG": {
+ "name": "ඇන්ටිගුවා සහ බාබියුඩාව"
+ },
+ "AD": {
+ "name": "ඇන්ඩෝරාව"
+ },
+ "VI": {
+ "name": "ඇමරිකානු වර්ජින් දූපත්"
+ },
+ "AS": {
+ "name": "ඇමරිකානු සැමෝවාව"
+ },
+ "DZ": {
+ "name": "ඇල්ජීරියාව"
+ },
+ "AL": {
+ "name": "ඇල්බේනියාව"
+ },
+ "AC": {
+ "name": "ඇසෙන්ෂන් දිවයින"
+ },
+ "AF": {
+ "name": "ඇෆ්ගනිස්ථානය"
+ },
+ "EC": {
+ "name": "ඉක්වදෝරය"
+ },
+ "IT": {
+ "name": "ඉතාලිය"
+ },
+ "ET": {
+ "name": "ඉතියෝපියාව"
+ },
+ "IN": {
+ "name": "ඉන්දියාව"
+ },
+ "ID": {
+ "name": "ඉන්දුනීසියාව"
+ },
+ "IQ": {
+ "name": "ඉරාකය"
+ },
+ "IR": {
+ "name": "ඉරානය"
+ },
+ "EG": {
+ "name": "ඊජිප්තුව"
+ },
+ "IL": {
+ "name": "ඊශ්‍රායලය"
+ },
+ "UG": {
+ "name": "උගන්ඩාව"
+ },
+ "KP": {
+ "name": "උතුරු කොරියාව"
+ },
+ "MP": {
+ "name": "උතුරු මරියානා දූපත්"
+ },
+ "UY": {
+ "name": "උරුගුවේ"
+ },
+ "UZ": {
+ "name": "උස්බෙකිස්ථානය"
+ },
+ "AE": {
+ "name": "එක්සත් අරාබි එමිර් රාජ්‍යය"
+ },
+ "UM": {
+ "name": "එක්සත් ජනපද ඈත දූපත්"
+ },
+ "US": {
+ "name": "එක්සත් ජනපදය"
+ },
+ "GB": {
+ "name": "එක්සත් රාජධානිය"
+ },
+ "ER": {
+ "name": "එරිත්‍රියාව"
+ },
+ "SV": {
+ "name": "එල් සැල්වදෝරය"
+ },
+ "EE": {
+ "name": "එස්තෝනියාව"
+ },
+ "AT": {
+ "name": "ඔස්ට්‍රියාව"
+ },
+ "OM": {
+ "name": "ඕමානය"
+ },
+ "AX": {
+ "name": "ඕලන්ඩ් දූපත්"
+ },
+ "AU": {
+ "name": "ඕස්ට්‍රේලියාව"
+ },
+ "QA": {
+ "name": "කටාර්"
+ },
+ "KZ": {
+ "name": "කසකස්තානය"
+ },
+ "KH": {
+ "name": "කාම්බෝජය"
+ },
+ "CA": {
+ "name": "කැනඩාව"
+ },
+ "IC": {
+ "name": "කැනරි සූපත්"
+ },
+ "CM": {
+ "name": "කැමරූන්"
+ },
+ "BQ": {
+ "name": "කැරිබියානු නෙදර්ලන්තය"
+ },
+ "CU": {
+ "name": "කියුබාව"
+ },
+ "KI": {
+ "name": "කිරිබති"
+ },
+ "KG": {
+ "name": "කිර්ගිස්තානය"
+ },
+ "CK": {
+ "name": "කුක් දූපත්"
+ },
+ "CW": {
+ "name": "කුරකාවෝ"
+ },
+ "KW": {
+ "name": "කුවේටය"
+ },
+ "KE": {
+ "name": "කෙන්යාව"
+ },
+ "CV": {
+ "name": "කේප් වර්ඩ්"
+ },
+ "KY": {
+ "name": "කේමන් දූපත්"
+ },
+ "CD": {
+ "name": "කොංගො - කින්ශාසා"
+ },
+ "CG": {
+ "name": "කොංගො - බ්‍රසාවිල්"
+ },
+ "CC": {
+ "name": "කොකෝස් දූපත්"
+ },
+ "KM": {
+ "name": "කොමොරෝස්"
+ },
+ "XK": {
+ "name": "කොසෝවෝ"
+ },
+ "CR": {
+ "name": "කොස්ටරිකාව"
+ },
+ "CO": {
+ "name": "කොළොම්බියාව"
+ },
+ "CI": {
+ "name": "කෝට් දි අයිවරි"
+ },
+ "CX": {
+ "name": "ක්‍රිස්මස් දූපත"
+ },
+ "HR": {
+ "name": "ක්‍රොඒෂියාව"
+ },
+ "GY": {
+ "name": "ගයනාව"
+ },
+ "GG": {
+ "name": "ගර්න්සිය"
+ },
+ "GA": {
+ "name": "ගැබොන්"
+ },
+ "GM": {
+ "name": "ගැම්බියාව"
+ },
+ "GN": {
+ "name": "ගිණියාව"
+ },
+ "GW": {
+ "name": "ගිනි බිසව්"
+ },
+ "GU": {
+ "name": "ගුවාම්"
+ },
+ "GT": {
+ "name": "ගෝතමාලාව"
+ },
+ "GD": {
+ "name": "ග්‍රැනඩාව"
+ },
+ "GL": {
+ "name": "ග්‍රීන්ලන්තය"
+ },
+ "GR": {
+ "name": "ග්‍රීසිය"
+ },
+ "GP": {
+ "name": "ග්වෝඩලෝප්"
+ },
+ "GH": {
+ "name": "ඝානාව"
+ },
+ "TD": {
+ "name": "චැච්"
+ },
+ "CL": {
+ "name": "චිලී"
+ },
+ "CN": {
+ "name": "චීනය"
+ },
+ "CZ": {
+ "name": "චෙක් ජනරජය"
+ },
+ "JP": {
+ "name": "ජපානය"
+ },
+ "DE": {
+ "name": "ජර්මනිය"
+ },
+ "JE": {
+ "name": "ජර්සි"
+ },
+ "JM": {
+ "name": "ජැමෙයිකාව"
+ },
+ "DJ": {
+ "name": "ජිබුටි"
+ },
+ "GI": {
+ "name": "ජිබ්‍රෝල්ටාව"
+ },
+ "GE": {
+ "name": "ජෝර්ජියාව"
+ },
+ "JO": {
+ "name": "ජෝර්දානය"
+ },
+ "TJ": {
+ "name": "ටජිකිස්තානය"
+ },
+ "TM": {
+ "name": "ටර්ක්මෙනිස්ථානය"
+ },
+ "TC": {
+ "name": "ටර්ක්ස් සහ කයිකොස් දූපත්"
+ },
+ "TZ": {
+ "name": "ටැන්සානියාව"
+ },
+ "TL": {
+ "name": "ටිමෝර් - ලෙස්ත්"
+ },
+ "TN": {
+ "name": "ටියුනීසියාව"
+ },
+ "TV": {
+ "name": "ටුවාලූ"
+ },
+ "TO": {
+ "name": "ටොංගා"
+ },
+ "TK": {
+ "name": "ටොකලාවු"
+ },
+ "TG": {
+ "name": "ටොගෝ"
+ },
+ "TT": {
+ "name": "ට්‍රිනිඩෑඩ් සහ ටොබැගෝ"
+ },
+ "TA": {
+ "name": "ට්‍රිස්ටන් ද කුන්හා"
+ },
+ "DK": {
+ "name": "ඩෙන්මාර්කය"
+ },
+ "DO": {
+ "name": "ඩොමිනිකා ජනරජය"
+ },
+ "DM": {
+ "name": "ඩොමිනිකාව"
+ },
+ "TH": {
+ "name": "තායිලන්තය"
+ },
+ "TW": {
+ "name": "තායිවානය"
+ },
+ "TR": {
+ "name": "තුර්කිය"
+ },
+ "ZA": {
+ "name": "දකුණු අප්‍රිකාව"
+ },
+ "KR": {
+ "name": "දකුණු කොරියාව"
+ },
+ "GS": {
+ "name": "දකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්විච් දූපත්"
+ },
+ "TF": {
+ "name": "දකුණු ප්‍රංශ දූපත් සමූහය"
+ },
+ "SS": {
+ "name": "දකුණු සුඩානය"
+ },
+ "DG": {
+ "name": "දියාගෝ ගාර්සියා"
+ },
+ "NE": {
+ "name": "නයිජර්"
+ },
+ "NG": {
+ "name": "නයිජීරියාව"
+ },
+ "NC": {
+ "name": "නව කැලිඩෝනියාව"
+ },
+ "NZ": {
+ "name": "නවසීලන්තය"
+ },
+ "NR": {
+ "name": "නාවුරු"
+ },
+ "NA": {
+ "name": "නැමීබියාව"
+ },
+ "NI": {
+ "name": "නිකරගුවාව"
+ },
+ "NU": {
+ "name": "නියූ"
+ },
+ "NL": {
+ "name": "නෙදර්ලන්තය"
+ },
+ "NP": {
+ "name": "නේපාලය"
+ },
+ "NO": {
+ "name": "නෝර්වේ"
+ },
+ "NF": {
+ "name": "නෝෆෝක් දූපත"
+ },
+ "PS": {
+ "name": "පලස්තීන රාජ්‍යය"
+ },
+ "PW": {
+ "name": "පලාවු"
+ },
+ "PK": {
+ "name": "පාකිස්තානය"
+ },
+ "PA": {
+ "name": "පැනමාව"
+ },
+ "PG": {
+ "name": "පැපුවා නිව් ගිනියාව"
+ },
+ "PY": {
+ "name": "පැරගුවේ"
+ },
+ "PN": {
+ "name": "පිට්කෙය්න් දූපත්"
+ },
+ "PH": {
+ "name": "පිලිපීනය"
+ },
+ "PR": {
+ "name": "පුවර්ටෝ රිකෝ"
+ },
+ "PT": {
+ "name": "පෘතුගාලය"
+ },
+ "PE": {
+ "name": "පේරු"
+ },
+ "PL": {
+ "name": "පෝලන්තය"
+ },
+ "GF": {
+ "name": "ප්‍රංශ ගයනාව"
+ },
+ "PF": {
+ "name": "ප්‍රංශ පොලිනීසියාව"
+ },
+ "FR": {
+ "name": "ප්‍රංශය"
+ },
+ "BD": {
+ "name": "බංග්ලාදේශය"
+ },
+ "EH": {
+ "name": "බටහිර සහරාව"
+ },
+ "BF": {
+ "name": "බර්කිනා ෆාසෝ"
+ },
+ "BM": {
+ "name": "බර්මියුඩා"
+ },
+ "BG": {
+ "name": "බල්ගේරියාව"
+ },
+ "BS": {
+ "name": "බහමාස්"
+ },
+ "BH": {
+ "name": "බහරේන්"
+ },
+ "BB": {
+ "name": "බාර්බඩෝස්"
+ },
+ "BI": {
+ "name": "බුරුන්දි"
+ },
+ "BN": {
+ "name": "බෲනායි"
+ },
+ "BJ": {
+ "name": "බෙනින්"
+ },
+ "BY": {
+ "name": "බෙලරුස්"
+ },
+ "BZ": {
+ "name": "බෙලීස්"
+ },
+ "BE": {
+ "name": "බෙල්ජියම"
+ },
+ "BW": {
+ "name": "බොට්ස්වානා"
+ },
+ "BO": {
+ "name": "බොලීවියාව"
+ },
+ "BA": {
+ "name": "බොස්නියාව සහ හර්සගොවීනාව"
+ },
+ "BR": {
+ "name": "බ්‍රසීලය"
+ },
+ "IO": {
+ "name": "බ්‍රිතාන්‍ය ඉන්දීය සාගර බල ප්‍රදේශය"
+ },
+ "VG": {
+ "name": "බ්‍රිතාන්‍ය වර්ජින් දූපත්"
+ },
+ "BT": {
+ "name": "භූතානය"
+ },
+ "MO": {
+ "name": "මකාවු චීන විශේෂ පරිපාලන කලාපය"
+ },
+ "CF": {
+ "name": "මධ්‍යම අප්‍රිකානු ජනරජය"
+ },
+ "FM": {
+ "name": "මයික්‍රොනීසියාව"
+ },
+ "YT": {
+ "name": "මයෝට්"
+ },
+ "MQ": {
+ "name": "මර්ටිනික්"
+ },
+ "MW": {
+ "name": "මලාවි"
+ },
+ "MV": {
+ "name": "මාල දිවයින"
+ },
+ "ML": {
+ "name": "මාලි"
+ },
+ "MH": {
+ "name": "මාෂල් දූපත්"
+ },
+ "MG": {
+ "name": "මැඩගස්කරය"
+ },
+ "MY": {
+ "name": "මැලේසියාව"
+ },
+ "MK": {
+ "name": "මැසිඩෝනියාව"
+ },
+ "MM": {
+ "name": "මියන්මාරය (බුරුමය)"
+ },
+ "MU": {
+ "name": "මුරුසිය"
+ },
+ "MX": {
+ "name": "මෙක්සිකෝව"
+ },
+ "MC": {
+ "name": "මොනැකෝව"
+ },
+ "MN": {
+ "name": "මොන්ගෝලියාව"
+ },
+ "ME": {
+ "name": "මොන්ටෙනීග්‍රෝ"
+ },
+ "MS": {
+ "name": "මොන්සෙරාට්"
+ },
+ "MR": {
+ "name": "මොරිටේනියාව"
+ },
+ "MA": {
+ "name": "මොරොක්කෝව"
+ },
+ "MD": {
+ "name": "මොල්ඩෝවාව"
+ },
+ "MZ": {
+ "name": "මොසැම්බික්"
+ },
+ "MT": {
+ "name": "මෝල්ටාව"
+ },
+ "UA": {
+ "name": "යුක්රේනය"
+ },
+ "YE": {
+ "name": "යේමනය"
+ },
+ "RE": {
+ "name": "රීයුනියන්"
+ },
+ "RO": {
+ "name": "රුමේනියාව"
+ },
+ "RW": {
+ "name": "රුවන්ඩාව"
+ },
+ "RU": {
+ "name": "රුසියාව"
+ },
+ "LU": {
+ "name": "ලක්ශම්බර්ග්"
+ },
+ "LR": {
+ "name": "ලයිබීරියාව"
+ },
+ "LA": {
+ "name": "ලාඕසය"
+ },
+ "LV": {
+ "name": "ලැට්වියාව"
+ },
+ "LI": {
+ "name": "ලික්ටන්ස්ටයින්"
+ },
+ "LT": {
+ "name": "ලිතුවේනියාව"
+ },
+ "LY": {
+ "name": "ලිබියාව"
+ },
+ "LB": {
+ "name": "ලෙබනනය"
+ },
+ "LS": {
+ "name": "ලෙසතෝ"
+ },
+ "VA": {
+ "name": "වතිකානු නගරය"
+ },
+ "VU": {
+ "name": "වනුවාටු"
+ },
+ "WF": {
+ "name": "වැලිස් සහ ෆුටුනා"
+ },
+ "VN": {
+ "name": "වියට්නාමය"
+ },
+ "VE": {
+ "name": "වෙනිසියුලාව"
+ },
+ "KN": {
+ "name": "ශාන්ත කිට්ස් සහ නේවිස්"
+ },
+ "PM": {
+ "name": "ශාන්ත පියරේ සහ මැකෝලන්"
+ },
+ "BL": {
+ "name": "ශාන්ත බර්තලෙමි"
+ },
+ "MF": {
+ "name": "ශාන්ත මාර්ටින්"
+ },
+ "SX": {
+ "name": "ශාන්ත මාර්ටෙන්"
+ },
+ "LC": {
+ "name": "ශාන්ත ලුසියා"
+ },
+ "VC": {
+ "name": "ශාන්ත වින්සන්ට් සහ ග්‍රෙනඩින්ස්"
+ },
+ "SH": {
+ "name": "ශාන්ත හෙලේනා"
+ },
+ "LK": {
+ "name": "ශ්‍රී ලංකාව"
+ },
+ "GQ": {
+ "name": "සමක ගිනියාව"
+ },
+ "CY": {
+ "name": "සයිප්‍රසය"
+ },
+ "RS": {
+ "name": "සර්බියාව"
+ },
+ "ST": {
+ "name": "සාඕ තෝම් සහ ප්‍රින්සිප්"
+ },
+ "SM": {
+ "name": "සැන් මැරිනෝ"
+ },
+ "WS": {
+ "name": "සැමෝවා"
+ },
+ "ZM": {
+ "name": "සැම්බියාව"
+ },
+ "SG": {
+ "name": "සිංගප්පූරුව"
+ },
+ "ZW": {
+ "name": "සිම්බාබ්වේ"
+ },
+ "SL": {
+ "name": "සියරාලියෝන්"
+ },
+ "SY": {
+ "name": "සිරියාව"
+ },
+ "SC": {
+ "name": "සීශෙල්ස්"
+ },
+ "SR": {
+ "name": "සුරිනාමය"
+ },
+ "SD": {
+ "name": "සූඩානය"
+ },
+ "SN": {
+ "name": "සෙනගාලය"
+ },
+ "EA": {
+ "name": "සෙයුටා සහ මෙලිල්ලා"
+ },
+ "SB": {
+ "name": "සොලමන් දූපත්"
+ },
+ "SO": {
+ "name": "සෝමාලියාව"
+ },
+ "SA": {
+ "name": "සෞදි අරාබිය"
+ },
+ "ES": {
+ "name": "ස්පාඤ්ඤය"
+ },
+ "SK": {
+ "name": "ස්ලෝවැකියාව"
+ },
+ "SI": {
+ "name": "ස්ලෝවේනියාව"
+ },
+ "SZ": {
+ "name": "ස්වාසිලන්තය"
+ },
+ "CH": {
+ "name": "ස්විස්ටර්ලන්තය"
+ },
+ "SE": {
+ "name": "ස්වීඩනය"
+ },
+ "SJ": {
+ "name": "ස්වෙල්බර්ඩ් සහ ජේන් මයේන්"
+ },
+ "HU": {
+ "name": "හන්ගේරියාව"
+ },
+ "HT": {
+ "name": "හයිටි"
+ },
+ "HK": {
+ "name": "හොංකොං චීන විශේෂ පරිපාලන කලාපය"
+ },
+ "HN": {
+ "name": "හොන්ඩුරාස්"
+ },
+ "FO": {
+ "name": "ෆැරෝ දූපත්"
+ },
+ "FI": {
+ "name": "ෆින්ලන්තය"
+ },
+ "FJ": {
+ "name": "ෆීජී"
+ },
+ "FK": {
+ "name": "ෆෝක්ලන්ත දූපත්"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sk.json b/library/intl/resources/country/sk.json
new file mode 100644
index 000000000..39d670693
--- /dev/null
+++ b/library/intl/resources/country/sk.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ålandy"
+ },
+ "AL": {
+ "name": "Albánsko"
+ },
+ "DZ": {
+ "name": "Alžírsko"
+ },
+ "AS": {
+ "name": "Americká Samoa"
+ },
+ "VI": {
+ "name": "Americké Panenské ostrovy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktída"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Arménsko"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensión"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladéš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgicko"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhután"
+ },
+ "BY": {
+ "name": "Bielorusko"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosna a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazília"
+ },
+ "IO": {
+ "name": "Britské indickooceánske územie"
+ },
+ "VG": {
+ "name": "Britské Panenské ostrovy"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulharsko"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CK": {
+ "name": "Cookove ostrovy"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CZ": {
+ "name": "Česká republika"
+ },
+ "ME": {
+ "name": "Čierna Hora"
+ },
+ "CL": {
+ "name": "Čile"
+ },
+ "CN": {
+ "name": "Čína"
+ },
+ "DK": {
+ "name": "Dánsko"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikánska republika"
+ },
+ "DJ": {
+ "name": "Džibutsko"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "EC": {
+ "name": "Ekvádor"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estónsko"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FO": {
+ "name": "Faerské ostrovy"
+ },
+ "FK": {
+ "name": "Falklandy"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipíny"
+ },
+ "FI": {
+ "name": "Fínsko"
+ },
+ "GF": {
+ "name": "Francúzska Guayana"
+ },
+ "PF": {
+ "name": "Francúzska Polynézia"
+ },
+ "TF": {
+ "name": "Francúzske južné a antarktické územia"
+ },
+ "FR": {
+ "name": "Francúzsko"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltár"
+ },
+ "GR": {
+ "name": "Grécko"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grónsko"
+ },
+ "GE": {
+ "name": "Gruzínsko"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GY": {
+ "name": "Guayana"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandsko"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – OAO Číny"
+ },
+ "HR": {
+ "name": "Chorvátsko"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonézia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Írsko"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonsko"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánsko"
+ },
+ "ZA": {
+ "name": "Južná Afrika"
+ },
+ "GS": {
+ "name": "Južná Georgia a Južné Sandwichove ostrovy"
+ },
+ "KR": {
+ "name": "Južná Kórea"
+ },
+ "SS": {
+ "name": "Južný Sudán"
+ },
+ "KY": {
+ "name": "Kajmanie ostrovy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanárske ostrovy"
+ },
+ "CV": {
+ "name": "Kapverdy"
+ },
+ "BQ": {
+ "name": "Karibské Holandsko"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Keňa"
+ },
+ "KG": {
+ "name": "Kirgizsko"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosové ostrovy"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbya"
+ },
+ "LI": {
+ "name": "Lichtenštajnsko"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LV": {
+ "name": "Lotyšsko"
+ },
+ "LU": {
+ "name": "Luxembursko"
+ },
+ "MO": {
+ "name": "Macao – OAO Číny"
+ },
+ "MK": {
+ "name": "Macedónsko"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Maďarsko"
+ },
+ "MY": {
+ "name": "Malajzia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallove ostrovy"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Maurícius"
+ },
+ "MR": {
+ "name": "Mauritánia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "UM": {
+ "name": "Menšie odľahlé ostrovy USA"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronézia"
+ },
+ "MM": {
+ "name": "Mjanmarsko"
+ },
+ "MD": {
+ "name": "Moldavsko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolsko"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Nemecko"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Nórsko"
+ },
+ "NC": {
+ "name": "Nová Kaledónia"
+ },
+ "NZ": {
+ "name": "Nový Zéland"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "IM": {
+ "name": "Ostrov Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestínske územia"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nová Guinea"
+ },
+ "PY": {
+ "name": "Paraguaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnove ostrovy"
+ },
+ "CI": {
+ "name": "Pobrežie Slonoviny"
+ },
+ "PL": {
+ "name": "Poľsko"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalsko"
+ },
+ "AT": {
+ "name": "Rakúsko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "GQ": {
+ "name": "Rovníková Guinea"
+ },
+ "RO": {
+ "name": "Rumunsko"
+ },
+ "RU": {
+ "name": "Rusko"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "PM": {
+ "name": "Saint Pierre a Miquelon"
+ },
+ "SV": {
+ "name": "Salvádor"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Maríno"
+ },
+ "SA": {
+ "name": "Saudská Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severná Kórea"
+ },
+ "MP": {
+ "name": "Severné Mariány"
+ },
+ "SC": {
+ "name": "Seychely"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovensko"
+ },
+ "SI": {
+ "name": "Slovinsko"
+ },
+ "SO": {
+ "name": "Somálsko"
+ },
+ "AE": {
+ "name": "Spojené arabské emiráty"
+ },
+ "GB": {
+ "name": "Spojené kráľovstvo"
+ },
+ "US": {
+ "name": "Spojené štáty"
+ },
+ "RS": {
+ "name": "Srbsko"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "CF": {
+ "name": "Stredoafrická republika"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazijsko"
+ },
+ "SH": {
+ "name": "Svätá Helena"
+ },
+ "LC": {
+ "name": "Svätá Lucia"
+ },
+ "BL": {
+ "name": "Svätý Bartolomej"
+ },
+ "KN": {
+ "name": "Svätý Krištof a Nevis"
+ },
+ "MF": {
+ "name": "Svätý Martin"
+ },
+ "ST": {
+ "name": "Svätý Tomáš a Princov ostrov"
+ },
+ "VC": {
+ "name": "Svätý Vincent a Grenadíny"
+ },
+ "SY": {
+ "name": "Sýria"
+ },
+ "SB": {
+ "name": "Šalamúnove ostrovy"
+ },
+ "ES": {
+ "name": "Španielsko"
+ },
+ "CH": {
+ "name": "Švajčiarsko"
+ },
+ "SE": {
+ "name": "Švédsko"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "IT": {
+ "name": "Taliansko"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TH": {
+ "name": "Thajsko"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisko"
+ },
+ "TR": {
+ "name": "Turecko"
+ },
+ "TM": {
+ "name": "Turkménsko"
+ },
+ "TC": {
+ "name": "Turks a Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Uruguaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "CX": {
+ "name": "Vianočný ostrov"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Východný Timor"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "EH": {
+ "name": "Západná Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sl.json b/library/intl/resources/country/sl.json
new file mode 100644
index 000000000..3033a159c
--- /dev/null
+++ b/library/intl/resources/country/sl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ålandski otoki"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžirija"
+ },
+ "AS": {
+ "name": "Ameriška Samoa"
+ },
+ "VI": {
+ "name": "Ameriški Deviški otoki"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva in Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Avstralija"
+ },
+ "AT": {
+ "name": "Avstrija"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Belorusija"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudi"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BG": {
+ "name": "Bolgarija"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna in Hercegovina"
+ },
+ "CX": {
+ "name": "Božični otok"
+ },
+ "BR": {
+ "name": "Brazilija"
+ },
+ "VG": {
+ "name": "Britanski Deviški otoki"
+ },
+ "IO": {
+ "name": "Britansko ozemlje v Indijskem oceanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "Centralnoafriška republika"
+ },
+ "EA": {
+ "name": "Ceuta in Melilla"
+ },
+ "CY": {
+ "name": "Ciper"
+ },
+ "CK": {
+ "name": "Cookovi otoki"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "Čile"
+ },
+ "ME": {
+ "name": "Črna gora"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "CD": {
+ "name": "Demokratična republika Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska republika"
+ },
+ "UM": {
+ "name": "Druga ameriška ozemlja v Tihem oceanu"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorialna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FK": {
+ "name": "Falklandski otoki"
+ },
+ "FO": {
+ "name": "Ferski otoki"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francija"
+ },
+ "GF": {
+ "name": "Francoska Gvajana"
+ },
+ "PF": {
+ "name": "Francoska Polinezija"
+ },
+ "TF": {
+ "name": "Francosko južno ozemlje"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grčija"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gvadalupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HR": {
+ "name": "Hrvaška"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandija"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanija"
+ },
+ "GS": {
+ "name": "Južna Georgia in Južni Sandwichevi otoki"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "Južnoafriška republika"
+ },
+ "KY": {
+ "name": "Kajmanski otoki"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarski otoki"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CN": {
+ "name": "Kitajska"
+ },
+ "CC": {
+ "name": "Kokosovi otoki"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komori"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Madžarska"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallovi otoki"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mavretanija"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mehika"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MM": {
+ "name": "Mjanmar (Burma)"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Nemčija"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemska"
+ },
+ "BQ": {
+ "name": "Nizozemski Karibi"
+ },
+ "NF": {
+ "name": "Norfolški otok"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Nova Zelandija"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TC": {
+ "name": "Otočji Turks in Caicos"
+ },
+ "AC": {
+ "name": "Otok Ascension"
+ },
+ "IM": {
+ "name": "Otok Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsko ozemlje"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "HK": {
+ "name": "Posebno administrativno območje LR Kitajske Hong Kong"
+ },
+ "MO": {
+ "name": "Posebno administrativno območje LR Kitajske Macao"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romunija"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts in Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre in Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent in Grenadine"
+ },
+ "SB": {
+ "name": "Salomonovi otoki"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome in Principe"
+ },
+ "SA": {
+ "name": "Saudova Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severna Koreja"
+ },
+ "MP": {
+ "name": "Severni Marianski otoki"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "CI": {
+ "name": "Slonokoščena obala"
+ },
+ "SK": {
+ "name": "Slovaška"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard in Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazi"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "ES": {
+ "name": "Španija"
+ },
+ "LK": {
+ "name": "Šrilanka"
+ },
+ "SE": {
+ "name": "Švedska"
+ },
+ "CH": {
+ "name": "Švica"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajska"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad in Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizija"
+ },
+ "TR": {
+ "name": "Turčija"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Vzhodni Timor"
+ },
+ "WF": {
+ "name": "Wallis in Futuna"
+ },
+ "EH": {
+ "name": "Zahodna Sahara"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "US": {
+ "name": "Združene države Amerike"
+ },
+ "AE": {
+ "name": "Združeni arabski emirati"
+ },
+ "CV": {
+ "name": "Zelenortski otoki"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sn.json b/library/intl/resources/country/sn.json
new file mode 100644
index 000000000..9d85c4fb4
--- /dev/null
+++ b/library/intl/resources/country/sn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua ne Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Beljium"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutani"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boznia ne Herzegovina"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "NF": {
+ "name": "Chitsuwa cheNorfolk"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "CI": {
+ "name": "Ivory Coast"
+ },
+ "IL": {
+ "name": "Izuraeri"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea, North"
+ },
+ "KR": {
+ "name": "Korea, South"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ye Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "SB": {
+ "name": "Zvitsuwa zvaSolomon"
+ },
+ "VI": {
+ "name": "Zvitsuwa zveAmerika"
+ },
+ "CV": {
+ "name": "Zvitsuwa zveCape Verde"
+ },
+ "KY": {
+ "name": "Zvitsuwa zveCayman"
+ },
+ "CK": {
+ "name": "Zvitsuwa zveCook"
+ },
+ "FK": {
+ "name": "Zvitsuwa zveFalklands"
+ },
+ "VG": {
+ "name": "Zvitsuwa zveHingirandi"
+ },
+ "MP": {
+ "name": "Zvitsuwa zvekumaodzanyemba eMariana"
+ },
+ "MH": {
+ "name": "Zvitsuwa zveMarshall"
+ },
+ "TC": {
+ "name": "Zvitsuwa zveTurk neCaico"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/so.json b/library/intl/resources/country/so.json
new file mode 100644
index 000000000..bfc1348d4
--- /dev/null
+++ b/library/intl/resources/country/so.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistaan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaaniya"
+ },
+ "DZ": {
+ "name": "Aljeeriya"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua iyo Barbuda"
+ },
+ "AR": {
+ "name": "Arjantiin"
+ },
+ "AM": {
+ "name": "Armeeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awstaraaliya"
+ },
+ "AT": {
+ "name": "Awsteriya"
+ },
+ "IE": {
+ "name": "Ayrlaand"
+ },
+ "AZ": {
+ "name": "Azerbajaan"
+ },
+ "BB": {
+ "name": "Baarbadoos"
+ },
+ "BS": {
+ "name": "Bahaamas"
+ },
+ "PK": {
+ "name": "Bakistaan"
+ },
+ "BD": {
+ "name": "Bangaaladheesh"
+ },
+ "BH": {
+ "name": "Baxreyn"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BE": {
+ "name": "Biljam"
+ },
+ "BJ": {
+ "name": "Biniin"
+ },
+ "BO": {
+ "name": "Boliifiya"
+ },
+ "PL": {
+ "name": "Booland"
+ },
+ "PT": {
+ "name": "Bortuqaal"
+ },
+ "BA": {
+ "name": "Bosniya Hersigoviina"
+ },
+ "BW": {
+ "name": "Botuswaana"
+ },
+ "BR": {
+ "name": "Braasiil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BG": {
+ "name": "Bulgaariya"
+ },
+ "BF": {
+ "name": "Burkiina Faaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Buruneeya"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "IQ": {
+ "name": "Ciraaq"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "OM": {
+ "name": "Cumaan"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domeenika"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eretereeya"
+ },
+ "EE": {
+ "name": "Estooniya"
+ },
+ "VA": {
+ "name": "Faatikaan"
+ },
+ "PS": {
+ "name": "Falastiin Daanka galbeed iyo Qasa"
+ },
+ "FR": {
+ "name": "Faransiis"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "VE": {
+ "name": "Fenisuweela"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filibiin"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "VN": {
+ "name": "Fiyetnaam"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaaboon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisaaw"
+ },
+ "GR": {
+ "name": "Giriig"
+ },
+ "GD": {
+ "name": "Giriinaada"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GT": {
+ "name": "Guwaatamaala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HU": {
+ "name": "Hangeri"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "IN": {
+ "name": "Hindiya"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IR": {
+ "name": "Iiraan"
+ },
+ "IS": {
+ "name": "Iislaand"
+ },
+ "EC": {
+ "name": "Ikuwadoor"
+ },
+ "AE": {
+ "name": "Imaaraadka Carabta ee Midoobay"
+ },
+ "ID": {
+ "name": "Indoneesiya"
+ },
+ "ES": {
+ "name": "Isbeyn"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israaʼiil"
+ },
+ "SZ": {
+ "name": "Iswaasilaand"
+ },
+ "SE": {
+ "name": "Iswidhan"
+ },
+ "ET": {
+ "name": "Itoobiya"
+ },
+ "CI": {
+ "name": "Ivory coast"
+ },
+ "TD": {
+ "name": "Jaad"
+ },
+ "JP": {
+ "name": "Jabaan"
+ },
+ "DJ": {
+ "name": "Jabuuti"
+ },
+ "JM": {
+ "name": "Jameyka"
+ },
+ "CF": {
+ "name": "Jamhuuriyadda Afrikada Dhexe"
+ },
+ "CD": {
+ "name": "Jamhuuriyadda Dimuquraadiga Kongo"
+ },
+ "DO": {
+ "name": "Jamhuuriyadda Domeenika"
+ },
+ "CZ": {
+ "name": "Jamhuuriyadda Jek"
+ },
+ "DE": {
+ "name": "Jarmal"
+ },
+ "FK": {
+ "name": "Jaziiradaha Fooklaan"
+ },
+ "CK": {
+ "name": "Jaziiradda Cook"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CL": {
+ "name": "Jili"
+ },
+ "GE": {
+ "name": "Joorjiya"
+ },
+ "CM": {
+ "name": "Kaameruun"
+ },
+ "KH": {
+ "name": "Kamboodiya"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasaakhistaan"
+ },
+ "KE": {
+ "name": "Kiiniya"
+ },
+ "KG": {
+ "name": "Kirgistaan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komooros"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "ZA": {
+ "name": "Koonfur Afrika"
+ },
+ "SS": {
+ "name": "Koonfur Suudaan"
+ },
+ "HR": {
+ "name": "Korweeshiya"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Riika"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KR": {
+ "name": "Kuuriyada Koonfureed"
+ },
+ "KP": {
+ "name": "Kuuriyada Waqooyi"
+ },
+ "KW": {
+ "name": "Kuwayt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latfiya"
+ },
+ "LR": {
+ "name": "Laybeeriya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibiya"
+ },
+ "LT": {
+ "name": "Lituweeniya"
+ },
+ "LS": {
+ "name": "Losooto"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luksemboorg"
+ },
+ "MT": {
+ "name": "Maalda"
+ },
+ "MV": {
+ "name": "Maaldiqeen"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makadooniya"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "US": {
+ "name": "Maraykanka"
+ },
+ "MA": {
+ "name": "Marooko"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "EG": {
+ "name": "Masar"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldofa"
+ },
+ "MN": {
+ "name": "Mongooliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MC": {
+ "name": "Moonako"
+ },
+ "MU": {
+ "name": "Murishiyoos"
+ },
+ "MR": {
+ "name": "Muritaaniya"
+ },
+ "MZ": {
+ "name": "Musambiig"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namiibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NG": {
+ "name": "Nayjeeriya"
+ },
+ "NE": {
+ "name": "Nayjer"
+ },
+ "NP": {
+ "name": "Nebaal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "Neyuusilaand"
+ },
+ "NI": {
+ "name": "Nikaraaguwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noorweey"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qadar"
+ },
+ "CY": {
+ "name": "Qubrus"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumaaniya"
+ },
+ "RU": {
+ "name": "Ruush"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "ZM": {
+ "name": "Saambiya"
+ },
+ "SA": {
+ "name": "Sacuudi Carabiya"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samowa Ameerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CN": {
+ "name": "Shiinaha"
+ },
+ "ZW": {
+ "name": "Simbaabwe"
+ },
+ "SG": {
+ "name": "Singaboor"
+ },
+ "SN": {
+ "name": "Sinigaal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Siraaliyoon"
+ },
+ "LK": {
+ "name": "Sirilaanka"
+ },
+ "SC": {
+ "name": "Sishelis"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Soomaaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SD": {
+ "name": "Suudaan"
+ },
+ "SY": {
+ "name": "Suuriya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "CH": {
+ "name": "Swiiserlaand"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "IT": {
+ "name": "Talyaani"
+ },
+ "TZ": {
+ "name": "Tansaaniya"
+ },
+ "TH": {
+ "name": "Taylaand"
+ },
+ "TW": {
+ "name": "Taywaan"
+ },
+ "TL": {
+ "name": "Timorka bari"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Toogo"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuniisiya"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Ugaanda"
+ },
+ "UA": {
+ "name": "Ukrayn"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwaay"
+ },
+ "UZ": {
+ "name": "Uusbakistaan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sq.json b/library/intl/resources/country/sq.json
new file mode 100644
index 000000000..fe5f3fe83
--- /dev/null
+++ b/library/intl/resources/country/sq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika e Jugut"
+ },
+ "DZ": {
+ "name": "Algjeri"
+ },
+ "AD": {
+ "name": "Andorrë"
+ },
+ "AO": {
+ "name": "Angolë"
+ },
+ "AI": {
+ "name": "Anguilë"
+ },
+ "AQ": {
+ "name": "Antarktikë"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudite"
+ },
+ "AR": {
+ "name": "Argjentinë"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AW": {
+ "name": "Arubë"
+ },
+ "AU": {
+ "name": "Australi"
+ },
+ "AT": {
+ "name": "Austri"
+ },
+ "AZ": {
+ "name": "Azerbajxhan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgjikë"
+ },
+ "BZ": {
+ "name": "Belizë"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudë"
+ },
+ "BY": {
+ "name": "Bjellorusi"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosnjë-Hercegovinë"
+ },
+ "BW": {
+ "name": "Botsvanë"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "CI": {
+ "name": "Bregu i Fildishtë"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bullgari"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burund"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "DK": {
+ "name": "Danimarkë"
+ },
+ "DG": {
+ "name": "Diego Garsia"
+ },
+ "DM": {
+ "name": "Dominikë"
+ },
+ "EG": {
+ "name": "Egjipt"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratet e Bashkuara Arabe"
+ },
+ "ER": {
+ "name": "Eritre"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "ET": {
+ "name": "Etiopi"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandë"
+ },
+ "FJ": {
+ "name": "Fixhi"
+ },
+ "FR": {
+ "name": "Francë"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Ganë"
+ },
+ "GD": {
+ "name": "Grenadë"
+ },
+ "GL": {
+ "name": "Grenlandë"
+ },
+ "GR": {
+ "name": "Greqi"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GF": {
+ "name": "Guajana Franceze"
+ },
+ "GY": {
+ "name": "Guajanë"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemalë"
+ },
+ "GG": {
+ "name": "Guernsej"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine-Bisau"
+ },
+ "GQ": {
+ "name": "Guineja Ekuatoriale"
+ },
+ "GE": {
+ "name": "Gjeorgji"
+ },
+ "DE": {
+ "name": "Gjermani"
+ },
+ "GI": {
+ "name": "Gjibraltar"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandë"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "IN": {
+ "name": "Indi"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandë"
+ },
+ "IS": {
+ "name": "Islandë"
+ },
+ "AX": {
+ "name": "Ishujt Alandë"
+ },
+ "MP": {
+ "name": "Ishujt e Marianës Veriore"
+ },
+ "VI": {
+ "name": "Ishujt e Virgjër Amerikanë"
+ },
+ "VG": {
+ "name": "Ishujt e Virgjër Britanikë"
+ },
+ "FO": {
+ "name": "Ishujt Faroe"
+ },
+ "FK": {
+ "name": "Ishujt Folklandë"
+ },
+ "KY": {
+ "name": "Ishujt Kajmanë"
+ },
+ "IC": {
+ "name": "Ishujt Kanarie"
+ },
+ "CC": {
+ "name": "Ishujt Kokos"
+ },
+ "CK": {
+ "name": "Ishujt Kukë"
+ },
+ "MH": {
+ "name": "Ishujt Marshallë"
+ },
+ "NF": {
+ "name": "Ishujt Norfolkë"
+ },
+ "UM": {
+ "name": "Ishujt periferikë të SHBA-së"
+ },
+ "PN": {
+ "name": "Ishujt Pitkernë"
+ },
+ "SB": {
+ "name": "Ishujt Solomonë"
+ },
+ "TC": {
+ "name": "Ishujt Turke dhe Kaike"
+ },
+ "AC": {
+ "name": "Ishulli Asenshion"
+ },
+ "CX": {
+ "name": "Ishulli i Krishtlindjes"
+ },
+ "IM": {
+ "name": "Ishulli i Manit"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JP": {
+ "name": "Japoni"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "NC": {
+ "name": "Kaledonia e Re"
+ },
+ "KH": {
+ "name": "Kamboxhia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "BQ": {
+ "name": "Karaibet holandeze"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CV": {
+ "name": "Kepi i Gjelbër"
+ },
+ "CL": {
+ "name": "Kili"
+ },
+ "CN": {
+ "name": "Kinë"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "CO": {
+ "name": "Kolumbi"
+ },
+ "KM": {
+ "name": "Komore"
+ },
+ "CG": {
+ "name": "Kongo-Brazavilë"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "KR": {
+ "name": "Koreja e Jugut"
+ },
+ "KP": {
+ "name": "Koreja e Veriut"
+ },
+ "XK": {
+ "name": "Kosovë"
+ },
+ "CR": {
+ "name": "Kosta Rikë"
+ },
+ "HR": {
+ "name": "Kroaci"
+ },
+ "CU": {
+ "name": "Kubë"
+ },
+ "CW": {
+ "name": "Kuraçao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberi"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LI": {
+ "name": "Lihtënshtajn"
+ },
+ "LT": {
+ "name": "Lituani"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotë"
+ },
+ "MY": {
+ "name": "Malajzi"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "ME": {
+ "name": "Mali i Zi"
+ },
+ "MT": {
+ "name": "Maltë"
+ },
+ "MK": {
+ "name": "Maqedoni"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mauritani"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "GB": {
+ "name": "Mbretëria e Bashkuar"
+ },
+ "MX": {
+ "name": "Meksikë"
+ },
+ "MM": {
+ "name": "Mianmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Moldavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "MS": {
+ "name": "Montserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeri"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegji"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guineja e Re"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinezia Franceze"
+ },
+ "PL": {
+ "name": "Poloni"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "CY": {
+ "name": "Qipro"
+ },
+ "KI": {
+ "name": "Qiribati"
+ },
+ "CF": {
+ "name": "Republika Afrikano-Qendrore"
+ },
+ "CZ": {
+ "name": "Republika Çeke"
+ },
+ "DO": {
+ "name": "Republika Dominikane"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruandë"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RU": {
+ "name": "Rusi"
+ },
+ "HK": {
+ "name": "RVAK i Hong Kongut"
+ },
+ "MO": {
+ "name": "RVAK i Makaos"
+ },
+ "EH": {
+ "name": "Saharaja Perëndimore"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikane"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome e Prinsipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbi"
+ },
+ "SL": {
+ "name": "Siera Leone"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "SC": {
+ "name": "Sishel"
+ },
+ "SK": {
+ "name": "Sllovaki"
+ },
+ "SI": {
+ "name": "Slloveni"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "ES": {
+ "name": "Spanjë"
+ },
+ "LK": {
+ "name": "Sri Lankë"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudani i Jugut"
+ },
+ "SE": {
+ "name": "Suedi"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SJ": {
+ "name": "Svalbard e Zhan Majen"
+ },
+ "SZ": {
+ "name": "Svazilandë"
+ },
+ "BL": {
+ "name": "Shën Bartolemeo"
+ },
+ "SH": {
+ "name": "Shën Helena"
+ },
+ "KN": {
+ "name": "Shën Kits e Nevis"
+ },
+ "LC": {
+ "name": "Shën Luçia"
+ },
+ "MF": {
+ "name": "Shën Martin"
+ },
+ "SX": {
+ "name": "Shën Martin (Sint Maarten-pjesa e Mbretërisë së Holandës)"
+ },
+ "PM": {
+ "name": "Shën Peir dhe Mikuelon"
+ },
+ "VC": {
+ "name": "Shën Vinsent dhe Grenadinet"
+ },
+ "AL": {
+ "name": "Shqipëri"
+ },
+ "US": {
+ "name": "Shtetet e Bashkuara të Amerikës"
+ },
+ "TH": {
+ "name": "Tajlandë"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TJ": {
+ "name": "Taxhikistan"
+ },
+ "TF": {
+ "name": "Territoret Australiane Franceze"
+ },
+ "PS": {
+ "name": "Territoret Palestineze"
+ },
+ "IO": {
+ "name": "Territori Britanik i Oqeanit Indian"
+ },
+ "TL": {
+ "name": "Timori Lindor"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kuna"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turqi"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "EA": {
+ "name": "Theuta e Melila"
+ },
+ "UG": {
+ "name": "Ugandë"
+ },
+ "UA": {
+ "name": "Ukrainë"
+ },
+ "WF": {
+ "name": "Uollis e Futina"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuelë"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "JM": {
+ "name": "Xhamajkë"
+ },
+ "JE": {
+ "name": "Xhersej"
+ },
+ "DJ": {
+ "name": "Xhibut"
+ },
+ "GS": {
+ "name": "Xhorxha Jugore dhe Ishujt Senduiç të Jugut"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zelanda e Re"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ },
+ "CH": {
+ "name": "Zvicër"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sr-Latn.json b/library/intl/resources/country/sr-Latn.json
new file mode 100644
index 000000000..ce8338687
--- /dev/null
+++ b/library/intl/resources/country/sr-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "VI": {
+ "name": "Američka Devičanska Ostrva"
+ },
+ "AS": {
+ "name": "Američka Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktik"
+ },
+ "AG": {
+ "name": "Antigva i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AF": {
+ "name": "Avganistan"
+ },
+ "AZ": {
+ "name": "Azerbejdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Belorusija"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićno ostrvo"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanska Devičanska Ostrva"
+ },
+ "IO": {
+ "name": "Britanska teritorija u Indijskom okeanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "Centralnoafrička Republika"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "TD": {
+ "name": "Čad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "Čile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Dijego Garsija"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "JE": {
+ "name": "Džersi"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorijalna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farska Ostrva"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FK": {
+ "name": "Foklandska ostrva"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne Teritorije"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grčka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Gurnsi"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisao"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandija"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong S. A. R. Kina"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "TL": {
+ "name": "Istočni Timor"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "AM": {
+ "name": "Jermenija"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Džordžija i Južna Sendvič Ostrva"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "Južnoafrička Republika"
+ },
+ "KY": {
+ "name": "Kajmanska Ostrva"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarska ostrva"
+ },
+ "BQ": {
+ "name": "Karipska Holandija"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "CY": {
+ "name": "Kipar"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Keling) Ostrva"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorska Ostrva"
+ },
+ "CG": {
+ "name": "Kongo - Brazavil"
+ },
+ "CD": {
+ "name": "Kongo - Kinšasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kukova Ostrva"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonija"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litvanija"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "YT": {
+ "name": "Majot"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalska Ostrva"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Nemačka"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Ostrvo"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "CI": {
+ "name": "Obala Slonovače"
+ },
+ "AX": {
+ "name": "Olandska ostrva"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TC": {
+ "name": "Ostrva Turks i Kaikos"
+ },
+ "AC": {
+ "name": "Ostrvo Asension"
+ },
+ "IM": {
+ "name": "Ostrvo Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinske teritorije"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Reinion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome i Principe"
+ },
+ "MO": {
+ "name": "SAR Makao (Kina)"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "PM": {
+ "name": "Sen Pjer i Mikelon"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent Kits i Nevis"
+ },
+ "MF": {
+ "name": "Sent Martin"
+ },
+ "VC": {
+ "name": "Sent Vinsent i Grenadini"
+ },
+ "EA": {
+ "name": "Seuta i Melilja"
+ },
+ "KP": {
+ "name": "Severna Koreja"
+ },
+ "MP": {
+ "name": "Severna Marijanska Ostrva"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene Američke Države"
+ },
+ "SK": {
+ "name": "Slovačka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SB": {
+ "name": "Solomonska Ostrva"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Majen"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SH": {
+ "name": "Sveta Jelena"
+ },
+ "LC": {
+ "name": "Sveta Lucija"
+ },
+ "BL": {
+ "name": "Sveti Bartolomej"
+ },
+ "SX": {
+ "name": "Sveti Martin"
+ },
+ "ES": {
+ "name": "Španija"
+ },
+ "LK": {
+ "name": "Šri Lanka"
+ },
+ "CH": {
+ "name": "Švajcarska"
+ },
+ "SE": {
+ "name": "Švedska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kunja"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "Udaljena ostrva SAD"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "WF": {
+ "name": "Valis i Futuna"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venecuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "CV": {
+ "name": "Zelenortska Ostrva"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sr.json b/library/intl/resources/country/sr.json
new file mode 100644
index 000000000..caf012760
--- /dev/null
+++ b/library/intl/resources/country/sr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Авганистан"
+ },
+ "AZ": {
+ "name": "Азербејџан"
+ },
+ "AL": {
+ "name": "Албанија"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "VI": {
+ "name": "Америчка Девичанска Острва"
+ },
+ "AS": {
+ "name": "Америчка Самоа"
+ },
+ "AI": {
+ "name": "Ангвила"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андора"
+ },
+ "AQ": {
+ "name": "Антарктик"
+ },
+ "AG": {
+ "name": "Антигва и Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AU": {
+ "name": "Аустралија"
+ },
+ "AT": {
+ "name": "Аустрија"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "Белорусија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "CX": {
+ "name": "Божићно острво"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "Босна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "Британска Девичанска Острва"
+ },
+ "IO": {
+ "name": "Британска територија у Индијском океану"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "Бугарска"
+ },
+ "BF": {
+ "name": "Буркина Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "WF": {
+ "name": "Валис и Футуна"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика Британија"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Вијетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-Бисао"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грчка"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "Гурнси"
+ },
+ "DK": {
+ "name": "Данска"
+ },
+ "DG": {
+ "name": "Дијего Гарсија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминиканска Република"
+ },
+ "EG": {
+ "name": "Египат"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторијална Гвинеја"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "EE": {
+ "name": "Естонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "CV": {
+ "name": "Зеленортска Острва"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирска"
+ },
+ "IS": {
+ "name": "Исланд"
+ },
+ "TL": {
+ "name": "Источни Тимор"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапан"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "AM": {
+ "name": "Јерменија"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Џорџија и Јужна Сендвич Острва"
+ },
+ "SS": {
+ "name": "Јужни Судан"
+ },
+ "ZA": {
+ "name": "Јужноафричка Република"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кајманска Острва"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарска острва"
+ },
+ "BQ": {
+ "name": "Карипска Холандија"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "Киргистан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос (Келинг) Острва"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "Коморска Острва"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Костарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукова Острва"
+ },
+ "CW": {
+ "name": "Курасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LV": {
+ "name": "Летонија"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "Луксембург"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "HU": {
+ "name": "Мађарска"
+ },
+ "YT": {
+ "name": "Мајот"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "Маршалска Острва"
+ },
+ "MR": {
+ "name": "Мауританија"
+ },
+ "MU": {
+ "name": "Маурицијус"
+ },
+ "MX": {
+ "name": "Мексико"
+ },
+ "MM": {
+ "name": "Мијанмар (Бурма)"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "Монсерат"
+ },
+ "NA": {
+ "name": "Намибија"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "DE": {
+ "name": "Немачка"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерија"
+ },
+ "NI": {
+ "name": "Никарагва"
+ },
+ "NU": {
+ "name": "Ниуе"
+ },
+ "NC": {
+ "name": "Нова Каледонија"
+ },
+ "NZ": {
+ "name": "Нови Зеланд"
+ },
+ "NO": {
+ "name": "Норвешка"
+ },
+ "NF": {
+ "name": "Норфолк Острво"
+ },
+ "CI": {
+ "name": "Обала Слоноваче"
+ },
+ "AX": {
+ "name": "Оландска острва"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "TC": {
+ "name": "Острва Туркс и Каикос"
+ },
+ "AC": {
+ "name": "Острво Асенсион"
+ },
+ "IM": {
+ "name": "Острво Ман"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестинске територије"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Нова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкерн"
+ },
+ "PL": {
+ "name": "Пољска"
+ },
+ "PR": {
+ "name": "Порторико"
+ },
+ "PT": {
+ "name": "Португал"
+ },
+ "RE": {
+ "name": "Реинион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румунија"
+ },
+ "RU": {
+ "name": "Русија"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принципе"
+ },
+ "MO": {
+ "name": "САР Макао (Кина)"
+ },
+ "SA": {
+ "name": "Саудијска Арабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Јан Мајен"
+ },
+ "SH": {
+ "name": "Света Јелена"
+ },
+ "LC": {
+ "name": "Света Луција"
+ },
+ "BL": {
+ "name": "Свети Бартоломеј"
+ },
+ "SX": {
+ "name": "Свети Мартин"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северна Маријанска Острва"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "PM": {
+ "name": "Сен Пјер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент Винсент и Гренадини"
+ },
+ "KN": {
+ "name": "Сент Китс и Невис"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сијера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "US": {
+ "name": "Сједињене Америчке Државе"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "SB": {
+ "name": "Соломонска Острва"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "Таџикистан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "Тристан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TM": {
+ "name": "Туркменистан"
+ },
+ "TR": {
+ "name": "Турска"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UM": {
+ "name": "Удаљена острва САД"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "AE": {
+ "name": "Уједињени Арапски Емирати"
+ },
+ "UA": {
+ "name": "Украјина"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "Фарска Острва"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "Финска"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "Фокландска острва"
+ },
+ "FR": {
+ "name": "Француска"
+ },
+ "GF": {
+ "name": "Француска Гвајана"
+ },
+ "PF": {
+ "name": "Француска Полинезија"
+ },
+ "TF": {
+ "name": "Француске Јужне Територије"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С. А. Р. Кина"
+ },
+ "HN": {
+ "name": "Хондурас"
+ },
+ "HR": {
+ "name": "Хрватска"
+ },
+ "CF": {
+ "name": "Централноафричка Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "Чешка"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "Џерси"
+ },
+ "DJ": {
+ "name": "Џибути"
+ },
+ "CH": {
+ "name": "Швајцарска"
+ },
+ "SE": {
+ "name": "Шведска"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sv-FI.json b/library/intl/resources/country/sv-FI.json
new file mode 100644
index 000000000..16e1eeded
--- /dev/null
+++ b/library/intl/resources/country/sv-FI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "VI": {
+ "name": "Amerikanska Jungfruöarna"
+ },
+ "AS": {
+ "name": "Amerikanska Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua och Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "AZ": {
+ "name": "Azerbajdzjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BQ": {
+ "name": "Bonaire, S:t Eustatius och Saba"
+ },
+ "BA": {
+ "name": "Bosnien och Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Brittiska Jungfruöarna"
+ },
+ "IO": {
+ "name": "Brittiska territoriet i Indiska oceanen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymanöarna"
+ },
+ "CF": {
+ "name": "Centralafrikanska republiken"
+ },
+ "EA": {
+ "name": "Ceuta och Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooköarna"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "CD": {
+ "name": "Demokratiska republiken Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanska republiken"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "GQ": {
+ "name": "Ekvatorialguinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskusten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsöarna"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerna"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Franska Guyana"
+ },
+ "PF": {
+ "name": "Franska Polynesien"
+ },
+ "TF": {
+ "name": "Franska sydterritorierna"
+ },
+ "FO": {
+ "name": "Färöarna"
+ },
+ "AE": {
+ "name": "Förenade Arabemiraten"
+ },
+ "GB": {
+ "name": "Förenade kungariket"
+ },
+ "US": {
+ "name": "Förenta staterna"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grekland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong (S.A.R. Kina)"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "CX": {
+ "name": "Julön"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarieöarna"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosöarna"
+ },
+ "KM": {
+ "name": "Komorerna"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao (S.A.R. Kina)"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverna"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshallöarna"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldavien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederländerna"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerna"
+ },
+ "SD": {
+ "name": "Nordsudan"
+ },
+ "NF": {
+ "name": "Norfolkön"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Nya Kaledonien"
+ },
+ "NZ": {
+ "name": "Nya Zeeland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska området"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nya Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RU": {
+ "name": "Ryssland"
+ },
+ "MF": {
+ "name": "S:t Martin (franska delen)"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts och Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre och Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent och Grenadinerna"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salomonöarna"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé och Príncipe"
+ },
+ "SA": {
+ "name": "Saudiarabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerna"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Martin"
+ },
+ "SK": {
+ "name": "Slovakien"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard och Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "GS": {
+ "name": "Sydgeorgien och Sydsandwichöarna"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeckien"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelauöarna"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad och Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisien"
+ },
+ "TR": {
+ "name": "Turkiet"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- och Caicosöarna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungern"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UM": {
+ "name": "USA:s yttre öar"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanen"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vitryssland"
+ },
+ "EH": {
+ "name": "Västsahara"
+ },
+ "WF": {
+ "name": "Wallis- och Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AT": {
+ "name": "Österrike"
+ },
+ "TL": {
+ "name": "Östtimor"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sv.json b/library/intl/resources/country/sv.json
new file mode 100644
index 000000000..dac3698c6
--- /dev/null
+++ b/library/intl/resources/country/sv.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "VI": {
+ "name": "Amerikanska Jungfruöarna"
+ },
+ "AS": {
+ "name": "Amerikanska Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua och Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "AZ": {
+ "name": "Azerbajdzjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnien och Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Brittiska Jungfruöarna"
+ },
+ "IO": {
+ "name": "Brittiska territoriet i Indiska oceanen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymanöarna"
+ },
+ "CF": {
+ "name": "Centralafrikanska republiken"
+ },
+ "EA": {
+ "name": "Ceuta och Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooköarna"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanska republiken"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "GQ": {
+ "name": "Ekvatorialguinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskusten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsöarna"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerna"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Franska Guyana"
+ },
+ "PF": {
+ "name": "Franska Polynesien"
+ },
+ "TF": {
+ "name": "Franska sydterritorierna"
+ },
+ "FO": {
+ "name": "Färöarna"
+ },
+ "AE": {
+ "name": "Förenade Arabemiraten"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grekland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong (S.A.R. Kina)"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "CX": {
+ "name": "Julön"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarieöarna"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nederländerna"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosöarna"
+ },
+ "KM": {
+ "name": "Komorerna"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao (S.A.R. Kina)"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverna"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshallöarna"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldavien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederländerna"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerna"
+ },
+ "NF": {
+ "name": "Norfolkön"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Nya Kaledonien"
+ },
+ "NZ": {
+ "name": "Nya Zeeland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska territorierna"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nya Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnöarna"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RU": {
+ "name": "Ryssland"
+ },
+ "BL": {
+ "name": "S:t Barthélemy"
+ },
+ "SH": {
+ "name": "S:t Helena"
+ },
+ "KN": {
+ "name": "S:t Kitts och Nevis"
+ },
+ "LC": {
+ "name": "S:t Lucia"
+ },
+ "MF": {
+ "name": "S:t Martin"
+ },
+ "PM": {
+ "name": "S:t Pierre och Miquelon"
+ },
+ "VC": {
+ "name": "S:t Vincent och Grenadinerna"
+ },
+ "SB": {
+ "name": "Salomonöarna"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé och Príncipe"
+ },
+ "SA": {
+ "name": "Saudiarabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerna"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakien"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Storbritannien"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard och Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "GS": {
+ "name": "Sydgeorgien och Sydsandwichöarna"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeckien"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad och Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisien"
+ },
+ "TR": {
+ "name": "Turkiet"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- och Caicosöarna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungern"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USA:s yttre öar"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vitryssland"
+ },
+ "EH": {
+ "name": "Västsahara"
+ },
+ "WF": {
+ "name": "Wallis- och Futunaöarna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Åland"
+ },
+ "AT": {
+ "name": "Österrike"
+ },
+ "TL": {
+ "name": "Östtimor"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sw.json b/library/intl/resources/country/sw.json
new file mode 100644
index 000000000..850cefc29
--- /dev/null
+++ b/library/intl/resources/country/sw.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antaktika"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "EA": {
+ "name": "Ceuta na Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "GS": {
+ "name": "Jojia Kusini na Visiwa vya Sandwich Kusini"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "AC": {
+ "name": "Kisiwa cha Ascension"
+ },
+ "CX": {
+ "name": "Kisiwa cha Krismasi"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfolk"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CW": {
+ "name": "Kurakao"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "TF": {
+ "name": "Maeneo ya Kusini ya Ufaransa"
+ },
+ "PS": {
+ "name": "Maeneo ya Palestina"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Magharibi"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "CY": {
+ "name": "Saiprasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "BL": {
+ "name": "Santabathelemi"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "SX": {
+ "name": "Santamatini"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "São Tomé na Príncipe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SS": {
+ "name": "Sudani Kusini"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard na Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timor ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "BQ": {
+ "name": "Uholanzi ya Karibiani"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "UM": {
+ "name": "Visiwa Vidogo vya Nje vya Marekani"
+ },
+ "AX": {
+ "name": "Visiwa vya Alandi"
+ },
+ "CC": {
+ "name": "Visiwa vya Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "FO": {
+ "name": "Visiwa vya Faroe"
+ },
+ "IC": {
+ "name": "Visiwa vya Kanari"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/swc.json b/library/intl/resources/country/swc.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/swc.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ta.json b/library/intl/resources/country/ta.json
new file mode 100644
index 000000000..611ae6d63
--- /dev/null
+++ b/library/intl/resources/country/ta.json
@@ -0,0 +1,761 @@
+{
+ "AI": {
+ "name": "அங்குய்லா"
+ },
+ "AO": {
+ "name": "அங்கோலா"
+ },
+ "AZ": {
+ "name": "அசர்பைஜான்"
+ },
+ "AQ": {
+ "name": "அண்டார்டிகா"
+ },
+ "AS": {
+ "name": "அமெரிக்க சமோவா"
+ },
+ "US": {
+ "name": "அமெரிக்கா"
+ },
+ "IE": {
+ "name": "அயர்லாந்து"
+ },
+ "AR": {
+ "name": "அர்ஜென்டினா"
+ },
+ "AW": {
+ "name": "அரூபா"
+ },
+ "AL": {
+ "name": "அல்பேனியா"
+ },
+ "DZ": {
+ "name": "அல்ஜீரியா"
+ },
+ "AD": {
+ "name": "அன்டோரா"
+ },
+ "AC": {
+ "name": "அஷன்ஷியன் தீவு"
+ },
+ "AG": {
+ "name": "ஆண்டிகுவா மற்றும் பார்புடா"
+ },
+ "AF": {
+ "name": "ஆப்கானிஸ்தான்"
+ },
+ "AM": {
+ "name": "ஆர்மேனியா"
+ },
+ "AX": {
+ "name": "ஆலந்து தீவுகள்"
+ },
+ "AT": {
+ "name": "ஆஸ்திரியா"
+ },
+ "AU": {
+ "name": "ஆஸ்திரேலியா"
+ },
+ "IT": {
+ "name": "இத்தாலி"
+ },
+ "IN": {
+ "name": "இந்தியா"
+ },
+ "ID": {
+ "name": "இந்தோனேஷியா"
+ },
+ "LK": {
+ "name": "இலங்கை"
+ },
+ "IL": {
+ "name": "இஸ்ரேல்"
+ },
+ "GQ": {
+ "name": "ஈக்குவாடோரியல் கினியா"
+ },
+ "EC": {
+ "name": "ஈக்வடார்"
+ },
+ "IQ": {
+ "name": "ஈராக்"
+ },
+ "IR": {
+ "name": "ஈரான்"
+ },
+ "UA": {
+ "name": "உக்ரைன்"
+ },
+ "UG": {
+ "name": "உகாண்டா"
+ },
+ "UY": {
+ "name": "உருகுவே"
+ },
+ "UZ": {
+ "name": "உஸ்பெகிஸ்தான்"
+ },
+ "EG": {
+ "name": "எகிப்து"
+ },
+ "ET": {
+ "name": "எதியோப்பியா"
+ },
+ "ER": {
+ "name": "எரிட்ரியா"
+ },
+ "SV": {
+ "name": "எல் சால்வடார்"
+ },
+ "EE": {
+ "name": "எஸ்டோனியா"
+ },
+ "YE": {
+ "name": "ஏமன்"
+ },
+ "AE": {
+ "name": "ஐக்கிய அரபு எமிரேட்ஸ்"
+ },
+ "GB": {
+ "name": "ஐக்கிய பேரரசு"
+ },
+ "IM": {
+ "name": "ஐல் ஆஃப் மேன்"
+ },
+ "IS": {
+ "name": "ஐஸ்லாந்து"
+ },
+ "OM": {
+ "name": "ஓமன்"
+ },
+ "FK": {
+ "name": "ஃபாக்லாந்து தீவுகள்"
+ },
+ "FO": {
+ "name": "ஃபாரோ தீவுகள்"
+ },
+ "FJ": {
+ "name": "ஃபிஜி"
+ },
+ "GP": {
+ "name": "க்வாதேலோப்"
+ },
+ "QA": {
+ "name": "கத்தார்"
+ },
+ "KH": {
+ "name": "கம்போடியா"
+ },
+ "GY": {
+ "name": "கயானா"
+ },
+ "BQ": {
+ "name": "கரீபியன் நெதர்லாந்து"
+ },
+ "GT": {
+ "name": "கவுதமாலா"
+ },
+ "CA": {
+ "name": "கனடா"
+ },
+ "KZ": {
+ "name": "கஸகஸ்தான்"
+ },
+ "CD": {
+ "name": "காங்கோ - கின்ஷாசா"
+ },
+ "CG": {
+ "name": "காங்கோ - ப்ராஸாவில்லே"
+ },
+ "GM": {
+ "name": "காம்பியா"
+ },
+ "GH": {
+ "name": "கானா"
+ },
+ "CU": {
+ "name": "கியூபா"
+ },
+ "KG": {
+ "name": "கிர்கிஸ்தான்"
+ },
+ "GD": {
+ "name": "கிரனெடா"
+ },
+ "KI": {
+ "name": "கிரிபடி"
+ },
+ "GL": {
+ "name": "கிரீன்லாந்து"
+ },
+ "GR": {
+ "name": "கிரீஸ்"
+ },
+ "CX": {
+ "name": "கிறிஸ்துமஸ் தீவு"
+ },
+ "GW": {
+ "name": "கினி-பிஸ்ஸாவ்"
+ },
+ "GN": {
+ "name": "கினியா"
+ },
+ "CK": {
+ "name": "குக் தீவுகள்"
+ },
+ "CW": {
+ "name": "குராகவ்"
+ },
+ "HR": {
+ "name": "குரோசியா"
+ },
+ "GU": {
+ "name": "குவாம்"
+ },
+ "KW": {
+ "name": "குவைத்"
+ },
+ "GG": {
+ "name": "கெர்ன்சி"
+ },
+ "KE": {
+ "name": "கென்யா"
+ },
+ "CV": {
+ "name": "கேப் வெர்டே"
+ },
+ "GA": {
+ "name": "கேபான்"
+ },
+ "CM": {
+ "name": "கேமரூன்"
+ },
+ "KY": {
+ "name": "கேமென் தீவுகள்"
+ },
+ "IC": {
+ "name": "கேனரி தீவுகள்"
+ },
+ "XK": {
+ "name": "கொசோவோ"
+ },
+ "CO": {
+ "name": "கொலம்பியா"
+ },
+ "CC": {
+ "name": "கோகோஸ் (கீலிங்) தீவுகள்"
+ },
+ "CI": {
+ "name": "கோட் தி’வாயர்"
+ },
+ "KM": {
+ "name": "கோமரோஸ்"
+ },
+ "CR": {
+ "name": "கோஸ்டாரிகா"
+ },
+ "WS": {
+ "name": "சமோவா"
+ },
+ "SA": {
+ "name": "சவூதி அரேபியா"
+ },
+ "TD": {
+ "name": "சாட்"
+ },
+ "SB": {
+ "name": "சாலமன் தீவுகள்"
+ },
+ "ST": {
+ "name": "சாவ் தோம் மற்றும் ப்ரின்சிபி"
+ },
+ "SM": {
+ "name": "சான் மெரினோ"
+ },
+ "SG": {
+ "name": "சிங்கப்பூர்"
+ },
+ "SL": {
+ "name": "சியர்ரா லியோன்"
+ },
+ "EA": {
+ "name": "சியூடா மற்றும் மெலில்லா"
+ },
+ "SY": {
+ "name": "சிரியா"
+ },
+ "CL": {
+ "name": "சிலி"
+ },
+ "SX": {
+ "name": "சின்ட் மார்டென்"
+ },
+ "CN": {
+ "name": "சீனா"
+ },
+ "SR": {
+ "name": "சுரினாம்"
+ },
+ "SD": {
+ "name": "சூடான்"
+ },
+ "CZ": {
+ "name": "செக் குடியரசு"
+ },
+ "KN": {
+ "name": "செயின்ட் கிட்ஸ் மற்றும் நெவிஸ்"
+ },
+ "BL": {
+ "name": "செயின்ட் பார்தேலெமி"
+ },
+ "PM": {
+ "name": "செயின்ட் பியர் மற்றும் மிக்வேலான்"
+ },
+ "MF": {
+ "name": "செயின்ட் மார்ட்டீன்"
+ },
+ "LC": {
+ "name": "செயின்ட் லூசியா"
+ },
+ "VC": {
+ "name": "செயின்ட் வின்சென்ட் மற்றும் கிரெனடைன்ஸ்"
+ },
+ "SH": {
+ "name": "செயின்ட் ஹெலெனா"
+ },
+ "RS": {
+ "name": "செர்பியா"
+ },
+ "SN": {
+ "name": "செனெகல்"
+ },
+ "CY": {
+ "name": "சைப்ரஸ்"
+ },
+ "SO": {
+ "name": "சோமாலியா"
+ },
+ "TT": {
+ "name": "ட்ரினிடாட் மற்றும் டுபாகோ"
+ },
+ "TC": {
+ "name": "டர்க்ஸ் மற்றும் கைகோஸ் தீவுகள்"
+ },
+ "DG": {
+ "name": "டியகோ கார்ஷியா"
+ },
+ "TA": {
+ "name": "டிரிஸ்டன் டா குன்ஹா"
+ },
+ "TN": {
+ "name": "டுனிசியா"
+ },
+ "DK": {
+ "name": "டென்மார்க்"
+ },
+ "DO": {
+ "name": "டொமினிகன் குடியரசு"
+ },
+ "DM": {
+ "name": "டொமினிகா"
+ },
+ "TK": {
+ "name": "டோகேலோ"
+ },
+ "TG": {
+ "name": "டோகோ"
+ },
+ "TO": {
+ "name": "டோங்கா"
+ },
+ "TH": {
+ "name": "தாய்லாந்து"
+ },
+ "TZ": {
+ "name": "தான்சானியா"
+ },
+ "TJ": {
+ "name": "தாஜிகிஸ்தான்"
+ },
+ "TM": {
+ "name": "துர்க்மெனிஸ்தான்"
+ },
+ "TR": {
+ "name": "துருக்கி"
+ },
+ "TV": {
+ "name": "துவாலூ"
+ },
+ "SS": {
+ "name": "தெற்கு சூடான்"
+ },
+ "ZA": {
+ "name": "தென் ஆப்பிரிக்கா"
+ },
+ "KR": {
+ "name": "தென் கொரியா"
+ },
+ "GS": {
+ "name": "தென் ஜியார்ஜியா மற்றும் தென் சான்ட்விச் தீவுகள்"
+ },
+ "TL": {
+ "name": "தைமூர்-லெஸ்தே"
+ },
+ "TW": {
+ "name": "தைவான்"
+ },
+ "NA": {
+ "name": "நமீபியா"
+ },
+ "NF": {
+ "name": "நார்ஃபாக் தீவுகள்"
+ },
+ "NO": {
+ "name": "நார்வே"
+ },
+ "NI": {
+ "name": "நிகரகுவா"
+ },
+ "NU": {
+ "name": "நியூ"
+ },
+ "NC": {
+ "name": "நியூ கேலிடோனியா"
+ },
+ "NZ": {
+ "name": "நியூசிலாந்து"
+ },
+ "NL": {
+ "name": "நெதர்லாந்து"
+ },
+ "NP": {
+ "name": "நேபாளம்"
+ },
+ "NE": {
+ "name": "நைஜர்"
+ },
+ "NG": {
+ "name": "நைஜீரியா"
+ },
+ "NR": {
+ "name": "நௌரு"
+ },
+ "BD": {
+ "name": "பங்களாதேஷ்"
+ },
+ "PY": {
+ "name": "பராகுவே"
+ },
+ "BG": {
+ "name": "பல்கேரியா"
+ },
+ "PA": {
+ "name": "பனாமா"
+ },
+ "BH": {
+ "name": "பஹ்ரைன்"
+ },
+ "BS": {
+ "name": "பஹாமாஸ்"
+ },
+ "PK": {
+ "name": "பாகிஸ்தான்"
+ },
+ "PG": {
+ "name": "பாப்புவா நியூ கினி"
+ },
+ "BB": {
+ "name": "பார்படோஸ்"
+ },
+ "PS": {
+ "name": "பாலஸ்தீனிய பிரதேசங்கள்"
+ },
+ "PW": {
+ "name": "பாலோ"
+ },
+ "PN": {
+ "name": "பிட்கெய்ர்ன் தீவுகள்"
+ },
+ "PR": {
+ "name": "பியூர்டோ ரிகோ"
+ },
+ "FR": {
+ "name": "பிரான்ஸ்"
+ },
+ "IO": {
+ "name": "பிரிட்டிஷ் இந்தியப் பெருங்கடல் பிரதேசம்"
+ },
+ "VG": {
+ "name": "பிரிட்டீஷ் கன்னித் தீவுகள்"
+ },
+ "GF": {
+ "name": "பிரெஞ்சு கயானா"
+ },
+ "TF": {
+ "name": "பிரெஞ்சு தெற்கு பிரதேசங்கள்"
+ },
+ "PF": {
+ "name": "பிரெஞ்சு பாலினேஷியா"
+ },
+ "BR": {
+ "name": "பிரேசில்"
+ },
+ "PH": {
+ "name": "பிலிப்பைன்ஸ்"
+ },
+ "FI": {
+ "name": "பின்லாந்து"
+ },
+ "BF": {
+ "name": "புர்கினா ஃபாஸோ"
+ },
+ "BI": {
+ "name": "புருண்டி"
+ },
+ "BN": {
+ "name": "புரூனேய்"
+ },
+ "BT": {
+ "name": "பூடான்"
+ },
+ "BM": {
+ "name": "பெர்முடா"
+ },
+ "PE": {
+ "name": "பெரு"
+ },
+ "BE": {
+ "name": "பெல்ஜியம்"
+ },
+ "BY": {
+ "name": "பெலாரூஸ்"
+ },
+ "BZ": {
+ "name": "பெலிஸ்"
+ },
+ "BJ": {
+ "name": "பெனின்"
+ },
+ "BO": {
+ "name": "பொலிவியா"
+ },
+ "BW": {
+ "name": "போட்ஸ்வானா"
+ },
+ "PT": {
+ "name": "போர்ச்சுக்கல்"
+ },
+ "PL": {
+ "name": "போலந்து"
+ },
+ "BA": {
+ "name": "போஸ்னியா மற்றும் ஹெர்ஸிகோவினா"
+ },
+ "MO": {
+ "name": "மகாவோ எஸ்ஏஆர் சீனா"
+ },
+ "MN": {
+ "name": "மங்கோலியா"
+ },
+ "MG": {
+ "name": "மடகாஸ்கர்"
+ },
+ "CF": {
+ "name": "மத்திய ஆப்ரிக்கக் குடியரசு"
+ },
+ "YT": {
+ "name": "மயோத்"
+ },
+ "MY": {
+ "name": "மலேஷியா"
+ },
+ "MK": {
+ "name": "மாசிடோனியா"
+ },
+ "MQ": {
+ "name": "மார்டினிக்"
+ },
+ "MH": {
+ "name": "மார்ஷல் தீவுகள்"
+ },
+ "MT": {
+ "name": "மால்டா"
+ },
+ "MD": {
+ "name": "மால்டோவா"
+ },
+ "MV": {
+ "name": "மாலத்தீவு"
+ },
+ "MW": {
+ "name": "மாலவி"
+ },
+ "ML": {
+ "name": "மாலி"
+ },
+ "ME": {
+ "name": "மான்டேனெக்ரோ"
+ },
+ "MM": {
+ "name": "மியான்மார் (பர்மா)"
+ },
+ "MX": {
+ "name": "மெக்சிகோ"
+ },
+ "EH": {
+ "name": "மேற்கு சஹாரா"
+ },
+ "FM": {
+ "name": "மைக்ரோனேஷியா"
+ },
+ "MZ": {
+ "name": "மொசாம்பிக்"
+ },
+ "MA": {
+ "name": "மொராக்கோ"
+ },
+ "MU": {
+ "name": "மொரிசியஸ்"
+ },
+ "MC": {
+ "name": "மொனாக்கோ"
+ },
+ "MR": {
+ "name": "மௌரிடானியா"
+ },
+ "MS": {
+ "name": "மௌன்ட்செராட்"
+ },
+ "VI": {
+ "name": "யூ.எஸ். கன்னித் தீவுகள்"
+ },
+ "UM": {
+ "name": "யூஎஸ் அவுட்லேயிங் தீவுகள்"
+ },
+ "RU": {
+ "name": "ரஷ்யா"
+ },
+ "RE": {
+ "name": "ரீயூனியன்"
+ },
+ "RO": {
+ "name": "ருமேனியா"
+ },
+ "RW": {
+ "name": "ருவான்டா"
+ },
+ "LU": {
+ "name": "லக்ஸ்சம்பர்க்"
+ },
+ "LV": {
+ "name": "லாட்வியா"
+ },
+ "LA": {
+ "name": "லாவோஸ்"
+ },
+ "LI": {
+ "name": "லிச்செண்ஸ்டெய்ன்"
+ },
+ "LT": {
+ "name": "லிதுவேனியா"
+ },
+ "LY": {
+ "name": "லிபியா"
+ },
+ "LS": {
+ "name": "லெசோதோ"
+ },
+ "LB": {
+ "name": "லெபனான்"
+ },
+ "LR": {
+ "name": "லைபீரியா"
+ },
+ "KP": {
+ "name": "வட கொரியா"
+ },
+ "MP": {
+ "name": "வடக்கு மரியானா தீவுகள்"
+ },
+ "VU": {
+ "name": "வனுவாட்டு"
+ },
+ "VA": {
+ "name": "வாடிகன் நகரம்"
+ },
+ "WF": {
+ "name": "வாலிஸ் மற்றும் ஃபுடுனா"
+ },
+ "VN": {
+ "name": "வியட்நாம்"
+ },
+ "VE": {
+ "name": "வெனிசுலா"
+ },
+ "JP": {
+ "name": "ஜப்பான்"
+ },
+ "JM": {
+ "name": "ஜமைகா"
+ },
+ "ZM": {
+ "name": "ஜாம்பியா"
+ },
+ "GE": {
+ "name": "ஜார்ஜியா"
+ },
+ "GI": {
+ "name": "ஜிப்ரால்டர்"
+ },
+ "DJ": {
+ "name": "ஜிபௌட்டி"
+ },
+ "ZW": {
+ "name": "ஜிம்பாப்வே"
+ },
+ "JE": {
+ "name": "ஜெர்சி"
+ },
+ "DE": {
+ "name": "ஜெர்மனி"
+ },
+ "JO": {
+ "name": "ஜோர்டான்"
+ },
+ "ES": {
+ "name": "ஸ்பெயின்"
+ },
+ "SK": {
+ "name": "ஸ்லோவாகியா"
+ },
+ "SI": {
+ "name": "ஸ்லோவேனியா"
+ },
+ "SJ": {
+ "name": "ஸ்வல்பார்டு மற்றும் ஜான் மேயன்"
+ },
+ "SZ": {
+ "name": "ஸ்வாஸிலாந்து"
+ },
+ "CH": {
+ "name": "ஸ்விட்சர்லாந்து"
+ },
+ "SE": {
+ "name": "ஸ்வீடன்"
+ },
+ "SC": {
+ "name": "ஸேசேல்ஸ்"
+ },
+ "HU": {
+ "name": "ஹங்கேரி"
+ },
+ "HK": {
+ "name": "ஹாங்காங் எஸ்ஏஆர் சீனா"
+ },
+ "HT": {
+ "name": "ஹெய்தி"
+ },
+ "HN": {
+ "name": "ஹோண்டூராஸ்"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/te.json b/library/intl/resources/country/te.json
new file mode 100644
index 000000000..199750306
--- /dev/null
+++ b/library/intl/resources/country/te.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "అంగోలా"
+ },
+ "AQ": {
+ "name": "అంటార్కటికా"
+ },
+ "AD": {
+ "name": "అండొర్రా"
+ },
+ "AZ": {
+ "name": "అజర్బైజాన్"
+ },
+ "AS": {
+ "name": "అమెరికన్ సమోవా"
+ },
+ "US": {
+ "name": "అమెరికా సంయుక్త రాష్ట్రాలు"
+ },
+ "AW": {
+ "name": "అరుబా"
+ },
+ "AR": {
+ "name": "అర్జెంటీనా"
+ },
+ "DZ": {
+ "name": "అల్జీరియా"
+ },
+ "AL": {
+ "name": "అల్బేనియా"
+ },
+ "AI": {
+ "name": "ఆంగవిల్లా"
+ },
+ "AG": {
+ "name": "ఆంటిగ్వా మరియు బార్బుడా"
+ },
+ "AF": {
+ "name": "ఆఫ్ఘనిస్తాన్"
+ },
+ "AM": {
+ "name": "ఆర్మేనియా"
+ },
+ "AX": {
+ "name": "ఆలేండ్ దీవులు"
+ },
+ "AT": {
+ "name": "ఆస్ట్రియా"
+ },
+ "AU": {
+ "name": "ఆస్ట్రేలియా"
+ },
+ "ID": {
+ "name": "ఇండోనేషియా"
+ },
+ "IL": {
+ "name": "ఇజ్రాయిల్"
+ },
+ "IT": {
+ "name": "ఇటలీ"
+ },
+ "ET": {
+ "name": "ఇథియోపియా"
+ },
+ "IQ": {
+ "name": "ఇరాక్"
+ },
+ "IR": {
+ "name": "ఇరాన్"
+ },
+ "GQ": {
+ "name": "ఈక్వటోరియల్ గినియా"
+ },
+ "EC": {
+ "name": "ఈక్వడార్"
+ },
+ "EG": {
+ "name": "ఈజిప్ట్"
+ },
+ "UA": {
+ "name": "ఉక్రెయిన్"
+ },
+ "UG": {
+ "name": "ఉగాండా"
+ },
+ "UZ": {
+ "name": "ఉజ్బెకిస్తాన్"
+ },
+ "KP": {
+ "name": "ఉత్తర కొరియా"
+ },
+ "MP": {
+ "name": "ఉత్తర మరియానా దీవులు"
+ },
+ "UY": {
+ "name": "ఉరుగువే"
+ },
+ "ER": {
+ "name": "ఎరిట్రియా"
+ },
+ "SV": {
+ "name": "ఎల్ సాల్వడోర్"
+ },
+ "AC": {
+ "name": "ఎసెషన్ దీవి"
+ },
+ "EE": {
+ "name": "ఎస్టోనియా"
+ },
+ "IE": {
+ "name": "ఐర్లాండ్"
+ },
+ "IM": {
+ "name": "ఐల్ ఆఫ్ మాన్"
+ },
+ "CI": {
+ "name": "ఐవరీ కోస్ట్"
+ },
+ "IS": {
+ "name": "ఐస్లాండ్"
+ },
+ "OM": {
+ "name": "ఒమన్"
+ },
+ "KH": {
+ "name": "కంబోడియా"
+ },
+ "KZ": {
+ "name": "కజకస్తాన్"
+ },
+ "QA": {
+ "name": "కతర్"
+ },
+ "BQ": {
+ "name": "కరీబియన్ నెదర్లాండ్స్"
+ },
+ "CD": {
+ "name": "కాంగో- కిన్షాసా"
+ },
+ "CG": {
+ "name": "కాంగో- బ్రాజావిల్లి"
+ },
+ "CM": {
+ "name": "కామెరూన్"
+ },
+ "KI": {
+ "name": "కిరిబాటి"
+ },
+ "KG": {
+ "name": "కిర్గిజిస్తాన్"
+ },
+ "CK": {
+ "name": "కుక్ దీవులు"
+ },
+ "CW": {
+ "name": "కురాకవో"
+ },
+ "KW": {
+ "name": "కువైట్"
+ },
+ "CA": {
+ "name": "కెనడా"
+ },
+ "KE": {
+ "name": "కెన్యా"
+ },
+ "IC": {
+ "name": "కేనరీ దీవులు"
+ },
+ "CV": {
+ "name": "కేప్ వెర్డే"
+ },
+ "KY": {
+ "name": "కేమాన్ దీవులు"
+ },
+ "KM": {
+ "name": "కొమొరోస్"
+ },
+ "CO": {
+ "name": "కొలంబియా"
+ },
+ "XK": {
+ "name": "కొసోవో"
+ },
+ "CC": {
+ "name": "కోకోస్ (కీలింగ్) దీవులు"
+ },
+ "CR": {
+ "name": "కోస్టా రికా"
+ },
+ "CU": {
+ "name": "క్యూబా"
+ },
+ "CX": {
+ "name": "క్రిస్మస్ దీవి"
+ },
+ "NC": {
+ "name": "క్రొత్త కాలెడోనియా"
+ },
+ "HR": {
+ "name": "క్రోయేషియా"
+ },
+ "GY": {
+ "name": "గయానా"
+ },
+ "GM": {
+ "name": "గాంబియా"
+ },
+ "GA": {
+ "name": "గాబన్"
+ },
+ "GN": {
+ "name": "గినియా"
+ },
+ "GW": {
+ "name": "గినియా-బిస్సావ్"
+ },
+ "GL": {
+ "name": "గ్రీన్‌లాండ్"
+ },
+ "GR": {
+ "name": "గ్రీస్"
+ },
+ "GD": {
+ "name": "గ్రెనెడా"
+ },
+ "GT": {
+ "name": "గ్వాటిమాల"
+ },
+ "GP": {
+ "name": "గ్వాడేలోప్"
+ },
+ "GU": {
+ "name": "గ్వామ్"
+ },
+ "GG": {
+ "name": "గ్వేర్నసే"
+ },
+ "GH": {
+ "name": "ఘనా"
+ },
+ "TD": {
+ "name": "చాద్"
+ },
+ "CL": {
+ "name": "చిలీ"
+ },
+ "CZ": {
+ "name": "చెక్ రిపబ్లిక్"
+ },
+ "CN": {
+ "name": "చైనా"
+ },
+ "JP": {
+ "name": "జపాన్"
+ },
+ "JM": {
+ "name": "జమైకా"
+ },
+ "DE": {
+ "name": "జర్మనీ"
+ },
+ "ZM": {
+ "name": "జాంబియా"
+ },
+ "GE": {
+ "name": "జార్జియా"
+ },
+ "ZW": {
+ "name": "జింబాబ్వే"
+ },
+ "DJ": {
+ "name": "జిబౌటి"
+ },
+ "GI": {
+ "name": "జిబ్రాల్టార్"
+ },
+ "JE": {
+ "name": "జెర్సీ"
+ },
+ "JO": {
+ "name": "జోర్డాన్"
+ },
+ "TR": {
+ "name": "టర్కీ"
+ },
+ "TZ": {
+ "name": "టాంజానియా"
+ },
+ "TL": {
+ "name": "టిమోర్-లెస్టె"
+ },
+ "TV": {
+ "name": "టువాలు"
+ },
+ "TO": {
+ "name": "టోంగా"
+ },
+ "TK": {
+ "name": "టోకేలావ్"
+ },
+ "TG": {
+ "name": "టోగో"
+ },
+ "TN": {
+ "name": "ట్యునీషియా"
+ },
+ "TT": {
+ "name": "ట్రినిడాడ్ మరియు టొబాగో"
+ },
+ "TA": {
+ "name": "ట్రిస్టన్ డ కన్హా"
+ },
+ "DG": {
+ "name": "డియాగో గార్సియా"
+ },
+ "DK": {
+ "name": "డెన్మార్క్"
+ },
+ "DO": {
+ "name": "డొమెనికన్ రిపబ్లిక్"
+ },
+ "DM": {
+ "name": "డోమెనిక"
+ },
+ "TJ": {
+ "name": "తజికిస్తాన్"
+ },
+ "TM": {
+ "name": "తుర్కమేనిస్తాన్"
+ },
+ "TC": {
+ "name": "తుర్క్ మరియు కాలికోస్ దీవులు"
+ },
+ "TW": {
+ "name": "తైవాన్"
+ },
+ "TH": {
+ "name": "థాయిలాండ్"
+ },
+ "ZA": {
+ "name": "దక్షిణ ఆఫ్రికా"
+ },
+ "KR": {
+ "name": "దక్షిణ కొరియా"
+ },
+ "GS": {
+ "name": "దక్షిణ జార్జియా & దక్షిణ శాండ్విచ్ దీవులు"
+ },
+ "SS": {
+ "name": "దక్షిణ సూడాన్"
+ },
+ "NA": {
+ "name": "నమీబియా"
+ },
+ "NF": {
+ "name": "నార్ఫాక్ దీవి"
+ },
+ "NO": {
+ "name": "నార్వే"
+ },
+ "NI": {
+ "name": "నికరాగువా"
+ },
+ "NU": {
+ "name": "నియు"
+ },
+ "NL": {
+ "name": "నెదర్లాండ్స్"
+ },
+ "NP": {
+ "name": "నేపాల్"
+ },
+ "NE": {
+ "name": "నైజర్"
+ },
+ "NG": {
+ "name": "నైజీరియా"
+ },
+ "NR": {
+ "name": "నౌరు"
+ },
+ "NZ": {
+ "name": "న్యూజిలాండ్"
+ },
+ "EH": {
+ "name": "పడమటి సహారా"
+ },
+ "PA": {
+ "name": "పనామా"
+ },
+ "PY": {
+ "name": "పరాగ్వే"
+ },
+ "PW": {
+ "name": "పలావు"
+ },
+ "PK": {
+ "name": "పాకిస్తాన్"
+ },
+ "PG": {
+ "name": "పాపువా న్యు గినియా"
+ },
+ "PS": {
+ "name": "పాలస్తీనియన్ ప్రాంతాలు"
+ },
+ "PN": {
+ "name": "పిట్‌కెయిర్న్ దీవులు"
+ },
+ "PE": {
+ "name": "పెరూ"
+ },
+ "PT": {
+ "name": "పోర్చుగల్"
+ },
+ "PL": {
+ "name": "పోలాండ్"
+ },
+ "FK": {
+ "name": "ఫాక్‌ల్యాండ్ దీవులు"
+ },
+ "FO": {
+ "name": "ఫారో దీవులు"
+ },
+ "FJ": {
+ "name": "ఫిజీ"
+ },
+ "FI": {
+ "name": "ఫిన్లాండ్"
+ },
+ "PH": {
+ "name": "ఫిలిప్పీన్స్"
+ },
+ "PR": {
+ "name": "ఫ్యూర్టో రికో"
+ },
+ "FR": {
+ "name": "ఫ్రాన్స్‌"
+ },
+ "GF": {
+ "name": "ఫ్రెంచ్ గియానా"
+ },
+ "TF": {
+ "name": "ఫ్రెంచ్ దక్షిణ ప్రాంతాలు"
+ },
+ "PF": {
+ "name": "ఫ్రెంచ్ పోలినిషియా"
+ },
+ "BD": {
+ "name": "బంగ్లాదేశ్"
+ },
+ "BG": {
+ "name": "బల్గేరియా"
+ },
+ "BS": {
+ "name": "బహామాస్"
+ },
+ "BH": {
+ "name": "బహ్రెయిన్"
+ },
+ "BB": {
+ "name": "బార్బడోస్"
+ },
+ "BI": {
+ "name": "బురుండి"
+ },
+ "BF": {
+ "name": "బుర్కినా ఫాసో"
+ },
+ "BJ": {
+ "name": "బెనిన్"
+ },
+ "BM": {
+ "name": "బెర్ముడా"
+ },
+ "BY": {
+ "name": "బెలారస్"
+ },
+ "BZ": {
+ "name": "బెలిజ్"
+ },
+ "BE": {
+ "name": "బెల్జియం"
+ },
+ "BO": {
+ "name": "బొలీవియా"
+ },
+ "BW": {
+ "name": "బోట్స్వానా"
+ },
+ "BA": {
+ "name": "బోస్నియా మరియు హెర్జెగొవీనా"
+ },
+ "VG": {
+ "name": "బ్రిటిష్ వర్జిన్ దీవులు"
+ },
+ "IO": {
+ "name": "బ్రిటీష్ భారతీయ సముద్రపు ప్రాంతం"
+ },
+ "BN": {
+ "name": "బ్రూనై"
+ },
+ "BR": {
+ "name": "బ్రెజిల్"
+ },
+ "IN": {
+ "name": "భారత దేశం"
+ },
+ "BT": {
+ "name": "భూటాన్"
+ },
+ "MN": {
+ "name": "మంగోలియా"
+ },
+ "MG": {
+ "name": "మడగాస్కర్"
+ },
+ "MM": {
+ "name": "మయన్మార్ (బర్మా)"
+ },
+ "MY": {
+ "name": "మలేషియా"
+ },
+ "MO": {
+ "name": "మాకావ్ ఎస్ఏఆర్ చైనా"
+ },
+ "YT": {
+ "name": "మాయొట్టి"
+ },
+ "MU": {
+ "name": "మారిషస్"
+ },
+ "MQ": {
+ "name": "మార్టినిక్"
+ },
+ "MH": {
+ "name": "మార్షల్ దీవులు"
+ },
+ "MW": {
+ "name": "మాలావి"
+ },
+ "ML": {
+ "name": "మాలి"
+ },
+ "MT": {
+ "name": "మాల్టా"
+ },
+ "MV": {
+ "name": "మాల్దీవులు"
+ },
+ "MX": {
+ "name": "మెక్సికో"
+ },
+ "MK": {
+ "name": "మేసిడోనియా"
+ },
+ "FM": {
+ "name": "మైక్రోనేశియ"
+ },
+ "MZ": {
+ "name": "మొజాంబిక్"
+ },
+ "MC": {
+ "name": "మొనాకో"
+ },
+ "MA": {
+ "name": "మొరాక్కో"
+ },
+ "ME": {
+ "name": "మోంటేనేగ్రో"
+ },
+ "MS": {
+ "name": "మోంట్సేర్రాట్"
+ },
+ "MD": {
+ "name": "మోల్డోవా"
+ },
+ "MR": {
+ "name": "మౌరిటేనియా"
+ },
+ "VI": {
+ "name": "యు.ఎస్. వర్జిన్ దీవులు"
+ },
+ "AE": {
+ "name": "యునైటెడ్ అరబ్ ఎమిరేట్స్"
+ },
+ "GB": {
+ "name": "యునైటెడ్ కింగ్‌డమ్"
+ },
+ "YE": {
+ "name": "యెమెన్"
+ },
+ "RU": {
+ "name": "రష్యా"
+ },
+ "RE": {
+ "name": "రియూనియన్"
+ },
+ "RW": {
+ "name": "రువాండా"
+ },
+ "RO": {
+ "name": "రోమానియా"
+ },
+ "LU": {
+ "name": "లక్సంబర్గ్"
+ },
+ "LV": {
+ "name": "లాత్వియా"
+ },
+ "LA": {
+ "name": "లావోస్"
+ },
+ "LI": {
+ "name": "లిక్టెస్టేన్"
+ },
+ "LT": {
+ "name": "లిథువేనియా"
+ },
+ "LY": {
+ "name": "లిబియా"
+ },
+ "LB": {
+ "name": "లెబనాన్"
+ },
+ "LS": {
+ "name": "లెసోతో"
+ },
+ "LR": {
+ "name": "లైబీరియా"
+ },
+ "VU": {
+ "name": "వనాటు"
+ },
+ "VA": {
+ "name": "వాటికన్ నగరం"
+ },
+ "WF": {
+ "name": "వాలిస్ మరియు ఫ్యుత్యునా"
+ },
+ "VN": {
+ "name": "వియత్నాం"
+ },
+ "VE": {
+ "name": "వెనుజువేలా"
+ },
+ "LK": {
+ "name": "శ్రీలంక"
+ },
+ "UM": {
+ "name": "సంయుక్త రాజ్య అమెరికా బయట ఉన్న దీవులు"
+ },
+ "WS": {
+ "name": "సమోవా"
+ },
+ "SM": {
+ "name": "సాన్ మారినో"
+ },
+ "ST": {
+ "name": "సావోటోమ్ మరియు ప్రిన్సిపే"
+ },
+ "SG": {
+ "name": "సింగపూర్"
+ },
+ "SX": {
+ "name": "సింట్ మార్టెన్"
+ },
+ "SL": {
+ "name": "సియెర్రా లియాన్"
+ },
+ "SY": {
+ "name": "సిరియా"
+ },
+ "SC": {
+ "name": "సీషెల్స్"
+ },
+ "SR": {
+ "name": "సురినామ్"
+ },
+ "SD": {
+ "name": "సూడాన్"
+ },
+ "KN": {
+ "name": "సెంట్ కిట్ట్స్ మరియు నెవిస్"
+ },
+ "PM": {
+ "name": "సెంట్ పియెర్ మరియు మికెలాన్"
+ },
+ "BL": {
+ "name": "సెంట్ బర్తేలెమీ"
+ },
+ "MF": {
+ "name": "సెంట్ మార్టిన్"
+ },
+ "LC": {
+ "name": "సెంట్ లూసియా"
+ },
+ "VC": {
+ "name": "సెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్"
+ },
+ "SH": {
+ "name": "సెంట్ హెలినా"
+ },
+ "CF": {
+ "name": "సెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్"
+ },
+ "SN": {
+ "name": "సెనెగల్"
+ },
+ "RS": {
+ "name": "సెర్బియా"
+ },
+ "CY": {
+ "name": "సైప్రస్"
+ },
+ "SO": {
+ "name": "సోమాలియా"
+ },
+ "SB": {
+ "name": "సోలమన్ దీవులు"
+ },
+ "SA": {
+ "name": "సౌదీ అరేబియా"
+ },
+ "ES": {
+ "name": "స్పెయిన్"
+ },
+ "EA": {
+ "name": "స్యూటా మరియు మెలిల్లా"
+ },
+ "SK": {
+ "name": "స్లోవేకియా"
+ },
+ "SI": {
+ "name": "స్లోవేనియా"
+ },
+ "SZ": {
+ "name": "స్వాజిల్యాండ్"
+ },
+ "SJ": {
+ "name": "స్వాల్బార్డ్ మరియు యాన్ మాయేన్"
+ },
+ "CH": {
+ "name": "స్విట్జర్లాండ్"
+ },
+ "SE": {
+ "name": "స్వీడన్"
+ },
+ "HU": {
+ "name": "హంగేరీ"
+ },
+ "HK": {
+ "name": "హాంకాంగ్ ఎస్ఏఆర్ చైనా"
+ },
+ "HT": {
+ "name": "హైటి"
+ },
+ "HN": {
+ "name": "హోండురాస్"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/teo.json b/library/intl/resources/country/teo.json
new file mode 100644
index 000000000..a5fb3b516
--- /dev/null
+++ b/library/intl/resources/country/teo.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/th.json b/library/intl/resources/country/th.json
new file mode 100644
index 000000000..f849e92a2
--- /dev/null
+++ b/library/intl/resources/country/th.json
@@ -0,0 +1,761 @@
+{
+ "GR": {
+ "name": "กรีซ"
+ },
+ "GL": {
+ "name": "กรีนแลนด์"
+ },
+ "GU": {
+ "name": "กวม"
+ },
+ "GP": {
+ "name": "กวาเดอลูป"
+ },
+ "KH": {
+ "name": "กัมพูชา"
+ },
+ "GT": {
+ "name": "กัวเตมาลา"
+ },
+ "QA": {
+ "name": "กาตาร์"
+ },
+ "GH": {
+ "name": "กานา"
+ },
+ "GA": {
+ "name": "กาบอง"
+ },
+ "GY": {
+ "name": "กายอานา"
+ },
+ "GN": {
+ "name": "กินี"
+ },
+ "GW": {
+ "name": "กินี-บิสเซา"
+ },
+ "GD": {
+ "name": "เกรเนดา"
+ },
+ "KR": {
+ "name": "เกาหลีใต้"
+ },
+ "KP": {
+ "name": "เกาหลีเหนือ"
+ },
+ "CX": {
+ "name": "เกาะคริสต์มาส"
+ },
+ "GS": {
+ "name": "เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช"
+ },
+ "NF": {
+ "name": "เกาะนอร์ฟอล์ก"
+ },
+ "IM": {
+ "name": "เกาะแมน"
+ },
+ "AC": {
+ "name": "เกาะแอสเซนชัน"
+ },
+ "GG": {
+ "name": "เกิร์นซีย์"
+ },
+ "GM": {
+ "name": "แกมเบีย"
+ },
+ "MO": {
+ "name": "เขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐประชาชนจีน"
+ },
+ "HK": {
+ "name": "เขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจีน"
+ },
+ "CD": {
+ "name": "คองโก-กินชาซา"
+ },
+ "CG": {
+ "name": "คองโก-บราซซาวิล"
+ },
+ "KM": {
+ "name": "คอโมโรส"
+ },
+ "CR": {
+ "name": "คอสตาริกา"
+ },
+ "KZ": {
+ "name": "คาซัคสถาน"
+ },
+ "KI": {
+ "name": "คิริบาส"
+ },
+ "CU": {
+ "name": "คิวบา"
+ },
+ "KG": {
+ "name": "คีร์กีซสถาน"
+ },
+ "CW": {
+ "name": "คูราเซา"
+ },
+ "KW": {
+ "name": "คูเวต"
+ },
+ "KE": {
+ "name": "เคนยา"
+ },
+ "CV": {
+ "name": "เคปเวิร์ด"
+ },
+ "CA": {
+ "name": "แคนาดา"
+ },
+ "CM": {
+ "name": "แคเมอรูน"
+ },
+ "XK": {
+ "name": "โคโซโว"
+ },
+ "HR": {
+ "name": "โครเอเชีย"
+ },
+ "CO": {
+ "name": "โคลอมเบีย"
+ },
+ "GE": {
+ "name": "จอร์เจีย"
+ },
+ "JO": {
+ "name": "จอร์แดน"
+ },
+ "JM": {
+ "name": "จาเมกา"
+ },
+ "DJ": {
+ "name": "จิบูตี"
+ },
+ "CN": {
+ "name": "จีน"
+ },
+ "JE": {
+ "name": "เจอร์ซีย์"
+ },
+ "TD": {
+ "name": "ชาด"
+ },
+ "CL": {
+ "name": "ชิลี"
+ },
+ "SM": {
+ "name": "ซานมารีโน"
+ },
+ "WS": {
+ "name": "ซามัว"
+ },
+ "SA": {
+ "name": "ซาอุดีอาระเบีย"
+ },
+ "EH": {
+ "name": "ซาฮาราตะวันตก"
+ },
+ "ZW": {
+ "name": "ซิมบับเว"
+ },
+ "SY": {
+ "name": "ซีเรีย"
+ },
+ "EA": {
+ "name": "ซีโอตาและเมลิลลา"
+ },
+ "SD": {
+ "name": "ซูดาน"
+ },
+ "SS": {
+ "name": "ซูดานใต้"
+ },
+ "SR": {
+ "name": "ซูรินาเม"
+ },
+ "SC": {
+ "name": "เซเชลส์"
+ },
+ "KN": {
+ "name": "เซนต์คิตส์และเนวิส"
+ },
+ "BL": {
+ "name": "เซนต์บาร์เธเลมี"
+ },
+ "MF": {
+ "name": "เซนต์มาติน"
+ },
+ "SX": {
+ "name": "เซนต์มาร์ติน"
+ },
+ "LC": {
+ "name": "เซนต์ลูเซีย"
+ },
+ "VC": {
+ "name": "เซนต์วินเซนต์และเกรนาดีนส์"
+ },
+ "SH": {
+ "name": "เซนต์เฮเลนา"
+ },
+ "SN": {
+ "name": "เซเนกัล"
+ },
+ "RS": {
+ "name": "เซอร์เบีย"
+ },
+ "ST": {
+ "name": "เซาตูเมและปรินซิปี"
+ },
+ "SL": {
+ "name": "เซียร์ราลีโอน"
+ },
+ "PM": {
+ "name": "แซงปีแยร์และมีเกอลง"
+ },
+ "ZM": {
+ "name": "แซมเบีย"
+ },
+ "SO": {
+ "name": "โซมาเลีย"
+ },
+ "CY": {
+ "name": "ไซปรัส"
+ },
+ "JP": {
+ "name": "ญี่ปุ่น"
+ },
+ "PS": {
+ "name": "ดินแดนปาเลสไตน์"
+ },
+ "DG": {
+ "name": "ดิเอโกการ์เซีย"
+ },
+ "DK": {
+ "name": "เดนมาร์ก"
+ },
+ "DM": {
+ "name": "โดมินิกา"
+ },
+ "TT": {
+ "name": "ตรินิแดดและโตเบโก"
+ },
+ "TO": {
+ "name": "ตองกา"
+ },
+ "TL": {
+ "name": "ติมอร์-เลสเต"
+ },
+ "TR": {
+ "name": "ตุรกี"
+ },
+ "TN": {
+ "name": "ตูนิเซีย"
+ },
+ "TV": {
+ "name": "ตูวาลู"
+ },
+ "TM": {
+ "name": "เติร์กเมนิสถาน"
+ },
+ "TK": {
+ "name": "โตเกเลา"
+ },
+ "TG": {
+ "name": "โตโก"
+ },
+ "TW": {
+ "name": "ไต้หวัน"
+ },
+ "TA": {
+ "name": "ทริสตัน เดอ คูนา"
+ },
+ "TJ": {
+ "name": "ทาจิกิสถาน"
+ },
+ "TZ": {
+ "name": "แทนซาเนีย"
+ },
+ "TH": {
+ "name": "ไทย"
+ },
+ "VA": {
+ "name": "นครวาติกัน"
+ },
+ "NO": {
+ "name": "นอร์เวย์"
+ },
+ "NA": {
+ "name": "นามิเบีย"
+ },
+ "NR": {
+ "name": "นาอูรู"
+ },
+ "NI": {
+ "name": "นิการากัว"
+ },
+ "NC": {
+ "name": "นิวแคลิโดเนีย"
+ },
+ "NZ": {
+ "name": "นิวซีแลนด์"
+ },
+ "NU": {
+ "name": "นีอูเอ"
+ },
+ "NL": {
+ "name": "เนเธอร์แลนด์"
+ },
+ "BQ": {
+ "name": "เนเธอร์แลนด์แคริบเบียน"
+ },
+ "NP": {
+ "name": "เนปาล"
+ },
+ "NG": {
+ "name": "ไนจีเรีย"
+ },
+ "NE": {
+ "name": "ไนเจอร์"
+ },
+ "BR": {
+ "name": "บราซิล"
+ },
+ "IO": {
+ "name": "บริติชอินเดียนโอเชียนเทร์ริทอรี"
+ },
+ "BN": {
+ "name": "บรูไน"
+ },
+ "BW": {
+ "name": "บอตสวานา"
+ },
+ "BA": {
+ "name": "บอสเนียและเฮอร์เซโกวีนา"
+ },
+ "BD": {
+ "name": "บังกลาเทศ"
+ },
+ "BG": {
+ "name": "บัลแกเรีย"
+ },
+ "BB": {
+ "name": "บาร์เบโดส"
+ },
+ "BH": {
+ "name": "บาห์เรน"
+ },
+ "BS": {
+ "name": "บาฮามาส"
+ },
+ "BI": {
+ "name": "บุรุนดี"
+ },
+ "BF": {
+ "name": "บูร์กินาฟาโซ"
+ },
+ "BJ": {
+ "name": "เบนิน"
+ },
+ "BE": {
+ "name": "เบลเยียม"
+ },
+ "BY": {
+ "name": "เบลารุส"
+ },
+ "BZ": {
+ "name": "เบลีซ"
+ },
+ "BM": {
+ "name": "เบอร์มิวดา"
+ },
+ "BO": {
+ "name": "โบลิเวีย"
+ },
+ "PK": {
+ "name": "ปากีสถาน"
+ },
+ "PA": {
+ "name": "ปานามา"
+ },
+ "PG": {
+ "name": "ปาปัวนิวกินี"
+ },
+ "PY": {
+ "name": "ปารากวัย"
+ },
+ "PW": {
+ "name": "ปาเลา"
+ },
+ "PE": {
+ "name": "เปรู"
+ },
+ "PR": {
+ "name": "เปอร์โตริโก"
+ },
+ "PT": {
+ "name": "โปรตุเกส"
+ },
+ "PL": {
+ "name": "โปแลนด์"
+ },
+ "FR": {
+ "name": "ฝรั่งเศส"
+ },
+ "FJ": {
+ "name": "ฟิจิ"
+ },
+ "FI": {
+ "name": "ฟินแลนด์"
+ },
+ "PH": {
+ "name": "ฟิลิปปินส์"
+ },
+ "GF": {
+ "name": "เฟรนช์เกียนา"
+ },
+ "TF": {
+ "name": "เฟรนช์เซาเทิร์นเทร์ริทอรีส์"
+ },
+ "PF": {
+ "name": "เฟรนช์โปลินีเซีย"
+ },
+ "BT": {
+ "name": "ภูฏาน"
+ },
+ "MN": {
+ "name": "มองโกเลีย"
+ },
+ "MS": {
+ "name": "มอนต์เซอร์รัต"
+ },
+ "ME": {
+ "name": "มอนเตเนโกร"
+ },
+ "MU": {
+ "name": "มอริเชียส"
+ },
+ "MR": {
+ "name": "มอริเตเนีย"
+ },
+ "MD": {
+ "name": "มอลโดวา"
+ },
+ "MT": {
+ "name": "มอลตา"
+ },
+ "MV": {
+ "name": "มัลดีฟส์"
+ },
+ "MK": {
+ "name": "มาซิโดเนีย"
+ },
+ "MG": {
+ "name": "มาดากัสการ์"
+ },
+ "YT": {
+ "name": "มายอต"
+ },
+ "MQ": {
+ "name": "มาร์ตินีก"
+ },
+ "MW": {
+ "name": "มาลาวี"
+ },
+ "ML": {
+ "name": "มาลี"
+ },
+ "MY": {
+ "name": "มาเลเซีย"
+ },
+ "MX": {
+ "name": "เม็กซิโก"
+ },
+ "MM": {
+ "name": "เมียนม่าร์ (พม่า)"
+ },
+ "MZ": {
+ "name": "โมซัมบิก"
+ },
+ "MC": {
+ "name": "โมนาโก"
+ },
+ "MA": {
+ "name": "โมร็อกโก"
+ },
+ "FM": {
+ "name": "ไมโครนีเซีย"
+ },
+ "GI": {
+ "name": "ยิบรอลตาร์"
+ },
+ "UG": {
+ "name": "ยูกันดา"
+ },
+ "UA": {
+ "name": "ยูเครน"
+ },
+ "YE": {
+ "name": "เยเมน"
+ },
+ "DE": {
+ "name": "เยอรมนี"
+ },
+ "RW": {
+ "name": "รวันดา"
+ },
+ "RU": {
+ "name": "รัสเซีย"
+ },
+ "RE": {
+ "name": "เรอูนียง"
+ },
+ "RO": {
+ "name": "โรมาเนีย"
+ },
+ "LU": {
+ "name": "ลักเซมเบิร์ก"
+ },
+ "LV": {
+ "name": "ลัตเวีย"
+ },
+ "LA": {
+ "name": "ลาว"
+ },
+ "LI": {
+ "name": "ลิกเตนสไตน์"
+ },
+ "LT": {
+ "name": "ลิทัวเนีย"
+ },
+ "LY": {
+ "name": "ลิเบีย"
+ },
+ "LS": {
+ "name": "เลโซโท"
+ },
+ "LB": {
+ "name": "เลบานอน"
+ },
+ "LR": {
+ "name": "ไลบีเรีย"
+ },
+ "VU": {
+ "name": "วานูอาตู"
+ },
+ "WF": {
+ "name": "วาลลิสและฟุตูนา"
+ },
+ "VE": {
+ "name": "เวเนซุเอลา"
+ },
+ "VN": {
+ "name": "เวียดนาม"
+ },
+ "LK": {
+ "name": "ศรีลังกา"
+ },
+ "ES": {
+ "name": "สเปน"
+ },
+ "SJ": {
+ "name": "สฟาลบาร์และยานไมเอน"
+ },
+ "SK": {
+ "name": "สโลวะเกีย"
+ },
+ "SI": {
+ "name": "สโลวีเนีย"
+ },
+ "SZ": {
+ "name": "สวาซิแลนด์"
+ },
+ "CH": {
+ "name": "สวิตเซอร์แลนด์"
+ },
+ "SE": {
+ "name": "สวีเดน"
+ },
+ "US": {
+ "name": "สหรัฐอเมริกา"
+ },
+ "AE": {
+ "name": "สหรัฐอาหรับเอมิเรตส์"
+ },
+ "GB": {
+ "name": "สหราชอาณาจักร"
+ },
+ "CZ": {
+ "name": "สาธารณรัฐเช็ก"
+ },
+ "DO": {
+ "name": "สาธารณรัฐโดมินิกัน"
+ },
+ "CF": {
+ "name": "สาธารณรัฐแอฟริกากลาง"
+ },
+ "SG": {
+ "name": "สิงคโปร์"
+ },
+ "IC": {
+ "name": "หมู่เกาะคานารี"
+ },
+ "CK": {
+ "name": "หมู่เกาะคุก"
+ },
+ "KY": {
+ "name": "หมู่เกาะเคย์แมน"
+ },
+ "CC": {
+ "name": "หมู่เกาะโคโคส (คีลิง)"
+ },
+ "SB": {
+ "name": "หมู่เกาะโซโลมอน"
+ },
+ "TC": {
+ "name": "หมู่เกาะเติกส์และหมู่เกาะเคคอส"
+ },
+ "MP": {
+ "name": "หมู่เกาะนอร์เทิร์นมาเรียนา"
+ },
+ "VG": {
+ "name": "หมู่เกาะบริติชเวอร์จิน"
+ },
+ "PN": {
+ "name": "หมู่เกาะพิตแคร์น"
+ },
+ "FK": {
+ "name": "หมู่เกาะฟอล์กแลนด์"
+ },
+ "FO": {
+ "name": "หมู่เกาะแฟโร"
+ },
+ "MH": {
+ "name": "หมู่เกาะมาร์แชลล์"
+ },
+ "VI": {
+ "name": "หมู่เกาะยูเอสเวอร์จิน"
+ },
+ "UM": {
+ "name": "หมู่เกาะรอบนอกของสหรัฐอเมริกา"
+ },
+ "AX": {
+ "name": "หมู่เกาะโอลันด์"
+ },
+ "AS": {
+ "name": "อเมริกันซามัว"
+ },
+ "AU": {
+ "name": "ออสเตรเลีย"
+ },
+ "AT": {
+ "name": "ออสเตรีย"
+ },
+ "AD": {
+ "name": "อันดอร์รา"
+ },
+ "AF": {
+ "name": "อัฟกานิสถาน"
+ },
+ "AZ": {
+ "name": "อาเซอร์ไบจาน"
+ },
+ "AR": {
+ "name": "อาร์เจนตินา"
+ },
+ "AM": {
+ "name": "อาร์เมเนีย"
+ },
+ "AW": {
+ "name": "อารูบา"
+ },
+ "GQ": {
+ "name": "อิเควทอเรียลกินี"
+ },
+ "IT": {
+ "name": "อิตาลี"
+ },
+ "IN": {
+ "name": "อินเดีย"
+ },
+ "ID": {
+ "name": "อินโดนีเซีย"
+ },
+ "IQ": {
+ "name": "อิรัก"
+ },
+ "IL": {
+ "name": "อิสราเอล"
+ },
+ "IR": {
+ "name": "อิหร่าน"
+ },
+ "EG": {
+ "name": "อียิปต์"
+ },
+ "UZ": {
+ "name": "อุซเบกิสถาน"
+ },
+ "UY": {
+ "name": "อุรุกวัย"
+ },
+ "EC": {
+ "name": "เอกวาดอร์"
+ },
+ "ET": {
+ "name": "เอธิโอเปีย"
+ },
+ "ER": {
+ "name": "เอริเทรีย"
+ },
+ "SV": {
+ "name": "เอลซัลวาดอร์"
+ },
+ "EE": {
+ "name": "เอสโตเนีย"
+ },
+ "AI": {
+ "name": "แองกวิลลา"
+ },
+ "AO": {
+ "name": "แองโกลา"
+ },
+ "AQ": {
+ "name": "แอนตาร์กติกา"
+ },
+ "AG": {
+ "name": "แอนติกาและบาร์บูดา"
+ },
+ "ZA": {
+ "name": "แอฟริกาใต้"
+ },
+ "DZ": {
+ "name": "แอลจีเรีย"
+ },
+ "AL": {
+ "name": "แอลเบเนีย"
+ },
+ "OM": {
+ "name": "โอมาน"
+ },
+ "IS": {
+ "name": "ไอซ์แลนด์"
+ },
+ "IE": {
+ "name": "ไอร์แลนด์"
+ },
+ "CI": {
+ "name": "ไอวอรี่โคสต์"
+ },
+ "HN": {
+ "name": "ฮอนดูรัส"
+ },
+ "HU": {
+ "name": "ฮังการี"
+ },
+ "HT": {
+ "name": "เฮติ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ti.json b/library/intl/resources/country/ti.json
new file mode 100644
index 000000000..6cf5bfa3d
--- /dev/null
+++ b/library/intl/resources/country/ti.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "HU": {
+ "name": "ሀንጋሪ"
+ },
+ "HT": {
+ "name": "ሀይቲ"
+ },
+ "IN": {
+ "name": "ህንድ"
+ },
+ "HN": {
+ "name": "ሆንዱራስ"
+ },
+ "HK": {
+ "name": "ሆንግ ኮንግ"
+ },
+ "LU": {
+ "name": "ሉክሰምበርግ"
+ },
+ "LY": {
+ "name": "ሊቢያ"
+ },
+ "LB": {
+ "name": "ሊባኖስ"
+ },
+ "LT": {
+ "name": "ሊቱዌኒያ"
+ },
+ "LI": {
+ "name": "ሊችተንስታይን"
+ },
+ "LV": {
+ "name": "ላትቪያ"
+ },
+ "LA": {
+ "name": "ላኦስ"
+ },
+ "LR": {
+ "name": "ላይቤሪያ"
+ },
+ "LS": {
+ "name": "ሌሶቶ"
+ },
+ "FM": {
+ "name": "ሚክሮኔዢያ"
+ },
+ "ML": {
+ "name": "ማሊ"
+ },
+ "MW": {
+ "name": "ማላዊ"
+ },
+ "MY": {
+ "name": "ማሌዢያ"
+ },
+ "MT": {
+ "name": "ማልታ"
+ },
+ "MV": {
+ "name": "ማልዲቭስ"
+ },
+ "MU": {
+ "name": "ማሩሸስ"
+ },
+ "MH": {
+ "name": "ማርሻል አይላንድ"
+ },
+ "MQ": {
+ "name": "ማርቲኒክ"
+ },
+ "MK": {
+ "name": "ማከዶኒያ"
+ },
+ "MO": {
+ "name": "ማካዎ"
+ },
+ "MM": {
+ "name": "ማያንማር"
+ },
+ "MG": {
+ "name": "ማዳጋስካር"
+ },
+ "MX": {
+ "name": "ሜክሲኮ"
+ },
+ "YT": {
+ "name": "ሜይኦቴ"
+ },
+ "TL": {
+ "name": "ምስራቅ ቲሞር"
+ },
+ "EH": {
+ "name": "ምዕራባዊ ሳህራ"
+ },
+ "MD": {
+ "name": "ሞልዶቫ"
+ },
+ "MR": {
+ "name": "ሞሪቴኒያ"
+ },
+ "MA": {
+ "name": "ሞሮኮ"
+ },
+ "MC": {
+ "name": "ሞናኮ"
+ },
+ "MS": {
+ "name": "ሞንትሴራት"
+ },
+ "MN": {
+ "name": "ሞንጎሊያ"
+ },
+ "MZ": {
+ "name": "ሞዛምቢክ"
+ },
+ "RW": {
+ "name": "ሩዋንዳ"
+ },
+ "RE": {
+ "name": "ሪዩኒየን"
+ },
+ "RU": {
+ "name": "ራሺያ"
+ },
+ "RO": {
+ "name": "ሮሜኒያ"
+ },
+ "SB": {
+ "name": "ሰሎሞን ደሴት"
+ },
+ "KP": {
+ "name": "ሰሜን ኮሪያ"
+ },
+ "SO": {
+ "name": "ሱማሌ"
+ },
+ "SR": {
+ "name": "ሱሪናም"
+ },
+ "SZ": {
+ "name": "ሱዋዚላንድ"
+ },
+ "SD": {
+ "name": "ሱዳን"
+ },
+ "LK": {
+ "name": "ሲሪላንካ"
+ },
+ "SY": {
+ "name": "ሲሪያ"
+ },
+ "SC": {
+ "name": "ሲሼልስ"
+ },
+ "SG": {
+ "name": "ሲንጋፖር"
+ },
+ "WS": {
+ "name": "ሳሞአ"
+ },
+ "SM": {
+ "name": "ሳን ማሪኖ"
+ },
+ "ST": {
+ "name": "ሳኦ ቶሜ እና ፕሪንሲፔ"
+ },
+ "SA": {
+ "name": "ሳውድአረቢያ"
+ },
+ "CY": {
+ "name": "ሳይፕረስ"
+ },
+ "SL": {
+ "name": "ሴራሊዮን"
+ },
+ "SN": {
+ "name": "ሴኔጋል"
+ },
+ "SH": {
+ "name": "ሴንት ሄለና"
+ },
+ "LC": {
+ "name": "ሴንት ሉቺያ"
+ },
+ "SK": {
+ "name": "ስሎቫኪያ"
+ },
+ "SI": {
+ "name": "ስሎቬኒያ"
+ },
+ "CH": {
+ "name": "ስዊዘርላንድ"
+ },
+ "SE": {
+ "name": "ስዊድን"
+ },
+ "ES": {
+ "name": "ስፔን"
+ },
+ "VC": {
+ "name": "ቅዱስ ቪንሴንት እና ግሬናዲንስ"
+ },
+ "KN": {
+ "name": "ቅዱስ ኪትስ እና ኔቪስ"
+ },
+ "PM": {
+ "name": "ቅዱስ ፒዬር እና ሚኩኤሎን"
+ },
+ "BT": {
+ "name": "ቡህታን"
+ },
+ "BG": {
+ "name": "ቡልጌሪያ"
+ },
+ "BF": {
+ "name": "ቡርኪና ፋሶ"
+ },
+ "GW": {
+ "name": "ቢሳዎ"
+ },
+ "BS": {
+ "name": "ባሃማስ"
+ },
+ "BH": {
+ "name": "ባህሬን"
+ },
+ "BB": {
+ "name": "ባርቤዶስ"
+ },
+ "BD": {
+ "name": "ባንግላዲሽ"
+ },
+ "BZ": {
+ "name": "ቤሊዘ"
+ },
+ "BY": {
+ "name": "ቤላሩስ"
+ },
+ "BE": {
+ "name": "ቤልጄም"
+ },
+ "BM": {
+ "name": "ቤርሙዳ"
+ },
+ "BJ": {
+ "name": "ቤኒን"
+ },
+ "BN": {
+ "name": "ብሩኒ"
+ },
+ "BI": {
+ "name": "ብሩንዲ"
+ },
+ "BR": {
+ "name": "ብራዚል"
+ },
+ "BO": {
+ "name": "ቦሊቪያ"
+ },
+ "BA": {
+ "name": "ቦስኒያ እና ሄርዞጎቪኒያ"
+ },
+ "BW": {
+ "name": "ቦትስዋና"
+ },
+ "VA": {
+ "name": "ቫቲካን"
+ },
+ "VU": {
+ "name": "ቫኑአቱ"
+ },
+ "VN": {
+ "name": "ቬትናም"
+ },
+ "VE": {
+ "name": "ቬንዙዌላ"
+ },
+ "TR": {
+ "name": "ቱርክ"
+ },
+ "TM": {
+ "name": "ቱርክሜኒስታን"
+ },
+ "TV": {
+ "name": "ቱቫሉ"
+ },
+ "TN": {
+ "name": "ቱኒዚያ"
+ },
+ "TZ": {
+ "name": "ታንዛኒያ"
+ },
+ "TH": {
+ "name": "ታይላንድ"
+ },
+ "TW": {
+ "name": "ታይዋን"
+ },
+ "TJ": {
+ "name": "ታጃኪስታን"
+ },
+ "TT": {
+ "name": "ትሪኒዳድ እና ቶባጎ"
+ },
+ "TO": {
+ "name": "ቶንጋ"
+ },
+ "TK": {
+ "name": "ቶክላው"
+ },
+ "TG": {
+ "name": "ቶጐ"
+ },
+ "CL": {
+ "name": "ቺሊ"
+ },
+ "CN": {
+ "name": "ቻይና"
+ },
+ "TD": {
+ "name": "ቻድ"
+ },
+ "CZ": {
+ "name": "ቼክ ሪፑብሊክ"
+ },
+ "NU": {
+ "name": "ኒኡይ"
+ },
+ "NI": {
+ "name": "ኒካራጓ"
+ },
+ "NC": {
+ "name": "ኒው ካሌዶኒያ"
+ },
+ "NZ": {
+ "name": "ኒው ዚላንድ"
+ },
+ "NE": {
+ "name": "ኒጀር"
+ },
+ "NA": {
+ "name": "ናሚቢያ"
+ },
+ "NR": {
+ "name": "ናኡሩ"
+ },
+ "NG": {
+ "name": "ናይጄሪያ"
+ },
+ "NL": {
+ "name": "ኔዘርላንድ"
+ },
+ "NP": {
+ "name": "ኔፓል"
+ },
+ "NO": {
+ "name": "ኖርዌ"
+ },
+ "NF": {
+ "name": "ኖርፎልክ ደሴት"
+ },
+ "AL": {
+ "name": "አልባኒያ"
+ },
+ "DZ": {
+ "name": "አልጄሪያ"
+ },
+ "US": {
+ "name": "አሜሪካ"
+ },
+ "AW": {
+ "name": "አሩባ"
+ },
+ "AM": {
+ "name": "አርሜኒያ"
+ },
+ "AR": {
+ "name": "አርጀንቲና"
+ },
+ "AG": {
+ "name": "አንቲጓ እና ባሩዳ"
+ },
+ "AQ": {
+ "name": "አንታርክቲካ"
+ },
+ "AD": {
+ "name": "አንዶራ"
+ },
+ "AI": {
+ "name": "አንጉኢላ"
+ },
+ "AO": {
+ "name": "አንጐላ"
+ },
+ "AU": {
+ "name": "አውስትሬሊያ"
+ },
+ "AZ": {
+ "name": "አዘርባጃን"
+ },
+ "IE": {
+ "name": "አየርላንድ"
+ },
+ "IS": {
+ "name": "አይስላንድ"
+ },
+ "AF": {
+ "name": "አፍጋኒስታን"
+ },
+ "UY": {
+ "name": "ኡራጓይ"
+ },
+ "IQ": {
+ "name": "ኢራቅ"
+ },
+ "IR": {
+ "name": "ኢራን"
+ },
+ "ET": {
+ "name": "ኢትዮጵያ"
+ },
+ "ID": {
+ "name": "ኢንዶኔዢያ"
+ },
+ "GQ": {
+ "name": "ኢኳቶሪያል ጊኒ"
+ },
+ "EC": {
+ "name": "ኢኳዶር"
+ },
+ "SV": {
+ "name": "ኤል ሳልቫዶር"
+ },
+ "ER": {
+ "name": "ኤርትራ"
+ },
+ "EE": {
+ "name": "ኤስቶኒያ"
+ },
+ "IL": {
+ "name": "እስራኤል"
+ },
+ "GB": {
+ "name": "እንግሊዝ"
+ },
+ "OM": {
+ "name": "ኦማን"
+ },
+ "AT": {
+ "name": "ኦስትሪያ"
+ },
+ "CU": {
+ "name": "ኩባ"
+ },
+ "CK": {
+ "name": "ኩክ ደሴቶች"
+ },
+ "KI": {
+ "name": "ኪሪባቲ"
+ },
+ "CM": {
+ "name": "ካሜሩን"
+ },
+ "KH": {
+ "name": "ካምቦዲያ"
+ },
+ "CA": {
+ "name": "ካናዳ"
+ },
+ "KY": {
+ "name": "ካይማን ደሴቶች"
+ },
+ "KE": {
+ "name": "ኬንያ"
+ },
+ "CV": {
+ "name": "ኬፕ ቬርዴ"
+ },
+ "HR": {
+ "name": "ክሮኤሽያ"
+ },
+ "KW": {
+ "name": "ክዌት"
+ },
+ "CO": {
+ "name": "ኮሎምቢያ"
+ },
+ "KM": {
+ "name": "ኮሞሮስ"
+ },
+ "CR": {
+ "name": "ኮስታ ሪካ"
+ },
+ "CI": {
+ "name": "ኮት ዲቯር"
+ },
+ "CD": {
+ "name": "ኮንጎ"
+ },
+ "CG": {
+ "name": "ኮንጐ"
+ },
+ "CC": {
+ "name": "ኮኮስ ኬሊንግ ደሴቶች"
+ },
+ "QA": {
+ "name": "ኳታር"
+ },
+ "WF": {
+ "name": "ዋሊስ እና ፉቱና ደሴቶች"
+ },
+ "ZW": {
+ "name": "ዚምቧቤ"
+ },
+ "ZM": {
+ "name": "ዛምቢያ"
+ },
+ "YE": {
+ "name": "የመን"
+ },
+ "CF": {
+ "name": "የመካከለኛው አፍሪካ ሪፐብሊክ"
+ },
+ "MP": {
+ "name": "የሰሜናዊ ማሪያና ደሴቶች"
+ },
+ "SJ": {
+ "name": "የስቫልባርድ እና ዣን ማየን ደሴቶች"
+ },
+ "IO": {
+ "name": "የብሪታኒያ ህንድ ውቂያኖስ ግዛት"
+ },
+ "AE": {
+ "name": "የተባበሩት አረብ ኤምሬትስ"
+ },
+ "TC": {
+ "name": "የቱርኮችና የካኢኮስ ደሴቶች"
+ },
+ "AX": {
+ "name": "የአላንድ ደሴቶች"
+ },
+ "UM": {
+ "name": "የአሜሪካ ራቅ ያሉ አናሳ ደሴቶች"
+ },
+ "AS": {
+ "name": "የአሜሪካ ሳሞአ"
+ },
+ "VI": {
+ "name": "የአሜሪካ ቨርጂን ደሴቶች"
+ },
+ "VG": {
+ "name": "የእንግሊዝ ድንግል ደሴቶች"
+ },
+ "CX": {
+ "name": "የገና ደሴቶች"
+ },
+ "TF": {
+ "name": "የፈረንሳይ ደቡባዊ ግዛቶች"
+ },
+ "GF": {
+ "name": "የፈረንሳይ ጉዊአና"
+ },
+ "PF": {
+ "name": "የፈረንሳይ ፖሊኔዢያ"
+ },
+ "FO": {
+ "name": "የፋሮይ ደሴቶች"
+ },
+ "PS": {
+ "name": "የፍልስጤም ግዛት"
+ },
+ "FK": {
+ "name": "የፎልክላንድ ደሴቶች"
+ },
+ "UA": {
+ "name": "ዩክሬን"
+ },
+ "UZ": {
+ "name": "ዩዝበኪስታን"
+ },
+ "UG": {
+ "name": "ዩጋንዳ"
+ },
+ "ZA": {
+ "name": "ደቡብ አፍሪካ"
+ },
+ "KR": {
+ "name": "ደቡብ ኮሪያ"
+ },
+ "GS": {
+ "name": "ደቡብ ጆርጂያ እና የደቡድ ሳንድዊች ደሴቶች"
+ },
+ "DK": {
+ "name": "ዴንማርክ"
+ },
+ "DM": {
+ "name": "ዶሚኒካ"
+ },
+ "DO": {
+ "name": "ዶሚኒክ ሪፑብሊክ"
+ },
+ "DE": {
+ "name": "ጀርመን"
+ },
+ "DJ": {
+ "name": "ጂቡቲ"
+ },
+ "JM": {
+ "name": "ጃማይካ"
+ },
+ "JP": {
+ "name": "ጃፓን"
+ },
+ "JO": {
+ "name": "ጆርዳን"
+ },
+ "GE": {
+ "name": "ጆርጂያ"
+ },
+ "GU": {
+ "name": "ጉዋም"
+ },
+ "GT": {
+ "name": "ጉዋቲማላ"
+ },
+ "GP": {
+ "name": "ጉዋደሉፕ"
+ },
+ "GY": {
+ "name": "ጉያና"
+ },
+ "GI": {
+ "name": "ጊብራልታር"
+ },
+ "GN": {
+ "name": "ጊኒ"
+ },
+ "GM": {
+ "name": "ጋምቢያ"
+ },
+ "GA": {
+ "name": "ጋቦን"
+ },
+ "GH": {
+ "name": "ጋና"
+ },
+ "GL": {
+ "name": "ግሪንላንድ"
+ },
+ "GR": {
+ "name": "ግሪክ"
+ },
+ "GD": {
+ "name": "ግሬናዳ"
+ },
+ "EG": {
+ "name": "ግብጽ"
+ },
+ "IT": {
+ "name": "ጣሊያን"
+ },
+ "FR": {
+ "name": "ፈረንሳይ"
+ },
+ "PH": {
+ "name": "ፊሊፒንስ"
+ },
+ "FI": {
+ "name": "ፊንላንድ"
+ },
+ "FJ": {
+ "name": "ፊጂ"
+ },
+ "PN": {
+ "name": "ፒትካኢርን"
+ },
+ "PW": {
+ "name": "ፓላው"
+ },
+ "PY": {
+ "name": "ፓራጓይ"
+ },
+ "PA": {
+ "name": "ፓናማ"
+ },
+ "PK": {
+ "name": "ፓኪስታን"
+ },
+ "PG": {
+ "name": "ፓፑዋ ኒው ጊኒ"
+ },
+ "PE": {
+ "name": "ፔሩ"
+ },
+ "PL": {
+ "name": "ፖላንድ"
+ },
+ "PT": {
+ "name": "ፖርቱጋል"
+ },
+ "PR": {
+ "name": "ፖርታ ሪኮ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/to.json b/library/intl/resources/country/to.json
new file mode 100644
index 000000000..645648731
--- /dev/null
+++ b/library/intl/resources/country/to.json
@@ -0,0 +1,761 @@
+{
+ "AI": {
+ "name": "Anikuila"
+ },
+ "AG": {
+ "name": "Anitikua mo Palaputa"
+ },
+ "FR": {
+ "name": "Falanisē"
+ },
+ "PH": {
+ "name": "Filipaini"
+ },
+ "FI": {
+ "name": "Finilani"
+ },
+ "FJ": {
+ "name": "Fisi"
+ },
+ "WS": {
+ "name": "Haʻamoa"
+ },
+ "AS": {
+ "name": "Haʻamoa ʻAmelika"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Hōlani"
+ },
+ "HK": {
+ "name": "Hongi Kongi SAR Siaina"
+ },
+ "HN": {
+ "name": "Honitulasi"
+ },
+ "HU": {
+ "name": "Hungakalia"
+ },
+ "IE": {
+ "name": "ʻAealani"
+ },
+ "AF": {
+ "name": "ʻAfikānisitani"
+ },
+ "ZA": {
+ "name": "ʻAfilika tonga"
+ },
+ "IS": {
+ "name": "ʻAisilani"
+ },
+ "DZ": {
+ "name": "ʻAisilia"
+ },
+ "AE": {
+ "name": "ʻAlepea Fakatahataha"
+ },
+ "AL": {
+ "name": "ʻAlipania"
+ },
+ "AW": {
+ "name": "ʻAlupa"
+ },
+ "AM": {
+ "name": "ʻĀmenia"
+ },
+ "AO": {
+ "name": "ʻAngikola"
+ },
+ "AQ": {
+ "name": "ʻAnitātika"
+ },
+ "AD": {
+ "name": "ʻAnitola"
+ },
+ "AU": {
+ "name": "ʻAositelēlia"
+ },
+ "AT": {
+ "name": "ʻAositulia"
+ },
+ "AZ": {
+ "name": "ʻAsapaisani"
+ },
+ "AR": {
+ "name": "ʻAsenitina"
+ },
+ "GQ": {
+ "name": "ʻEkueta Kini"
+ },
+ "EC": {
+ "name": "ʻEkuetoa"
+ },
+ "SV": {
+ "name": "ʻEle Salavatoa"
+ },
+ "ER": {
+ "name": "ʻElitulia"
+ },
+ "EE": {
+ "name": "ʻEsitōnia"
+ },
+ "IQ": {
+ "name": "ʻIlaaki"
+ },
+ "IR": {
+ "name": "ʻIlaani"
+ },
+ "IN": {
+ "name": "ʻInitia"
+ },
+ "ID": {
+ "name": "ʻInitonēsia"
+ },
+ "IL": {
+ "name": "ʻIsileli"
+ },
+ "EG": {
+ "name": "ʻIsipite"
+ },
+ "IT": {
+ "name": "ʻĪtali"
+ },
+ "ET": {
+ "name": "ʻĪtiōpia"
+ },
+ "UG": {
+ "name": "ʻIukanitā"
+ },
+ "OM": {
+ "name": "ʻOmani"
+ },
+ "FO": {
+ "name": "ʻOtumotu Faloe"
+ },
+ "FK": {
+ "name": "ʻOtumotu Fokulani"
+ },
+ "AX": {
+ "name": "ʻOtumotu ʻAlani"
+ },
+ "IC": {
+ "name": "ʻOtumotu Kaneli"
+ },
+ "KY": {
+ "name": "ʻOtumotu Keimeni"
+ },
+ "CC": {
+ "name": "ʻOtumotu Koko"
+ },
+ "CK": {
+ "name": "ʻOtumotu Kuki"
+ },
+ "MP": {
+ "name": "ʻOtumotu Maliana tokelau"
+ },
+ "MH": {
+ "name": "ʻOtumotu Māsolo"
+ },
+ "PN": {
+ "name": "ʻOtumotu Pitikeni"
+ },
+ "SC": {
+ "name": "ʻOtumotu Seiseli"
+ },
+ "GS": {
+ "name": "ʻOtumotu Seōsia-tonga mo Saniuisi-tonga"
+ },
+ "UM": {
+ "name": "ʻOtumotu siʻi ʻo ʻAmelika"
+ },
+ "SB": {
+ "name": "ʻOtumotu Solomone"
+ },
+ "TC": {
+ "name": "ʻOtumotu Tuki mo Kaikosi"
+ },
+ "VI": {
+ "name": "ʻOtumotu Vilikini fakaʻamelika"
+ },
+ "VG": {
+ "name": "ʻOtumotu Vilikini fakapilitānia"
+ },
+ "UA": {
+ "name": "ʻŪkalaʻine"
+ },
+ "UY": {
+ "name": "ʻUlukuai"
+ },
+ "UZ": {
+ "name": "ʻUsipekitani"
+ },
+ "WF": {
+ "name": "ʻUvea mo Futuna"
+ },
+ "YE": {
+ "name": "Iemeni"
+ },
+ "BQ": {
+ "name": "Kalipiane fakahōlani"
+ },
+ "GR": {
+ "name": "Kalisi"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "GM": {
+ "name": "Kamipia"
+ },
+ "KH": {
+ "name": "Kamipōtia"
+ },
+ "GH": {
+ "name": "Kana"
+ },
+ "CA": {
+ "name": "Kānata"
+ },
+ "GA": {
+ "name": "Kaponi"
+ },
+ "KZ": {
+ "name": "Kasakitani"
+ },
+ "QA": {
+ "name": "Katā"
+ },
+ "GD": {
+ "name": "Kelenatā"
+ },
+ "KE": {
+ "name": "Keniā"
+ },
+ "KG": {
+ "name": "Kīkisitani"
+ },
+ "KI": {
+ "name": "Kilipasi"
+ },
+ "GN": {
+ "name": "Kini"
+ },
+ "GW": {
+ "name": "Kini-Pisau"
+ },
+ "CU": {
+ "name": "Kiupa"
+ },
+ "KP": {
+ "name": "Kōlea tokelau"
+ },
+ "KR": {
+ "name": "Kōlea tonga"
+ },
+ "VA": {
+ "name": "Kolo Vatikani"
+ },
+ "CO": {
+ "name": "Kolomipia"
+ },
+ "KM": {
+ "name": "Komolosi"
+ },
+ "CD": {
+ "name": "Kongo - Kinisasa"
+ },
+ "CG": {
+ "name": "Kongo - Palasavila"
+ },
+ "CR": {
+ "name": "Kosita Lika"
+ },
+ "XK": {
+ "name": "Kōsovo"
+ },
+ "GU": {
+ "name": "Kuamu"
+ },
+ "GP": {
+ "name": "Kuatalupe"
+ },
+ "GT": {
+ "name": "Kuatamala"
+ },
+ "KW": {
+ "name": "Kueiti"
+ },
+ "GG": {
+ "name": "Kuenisī"
+ },
+ "GY": {
+ "name": "Kuiana"
+ },
+ "GF": {
+ "name": "Kuiana fakafalanisē"
+ },
+ "CW": {
+ "name": "Kulasao"
+ },
+ "GL": {
+ "name": "Kulinilani"
+ },
+ "HR": {
+ "name": "Kuloisia"
+ },
+ "LR": {
+ "name": "Laipelia"
+ },
+ "LU": {
+ "name": "Lakisimipeki"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LA": {
+ "name": "Lau"
+ },
+ "LB": {
+ "name": "Lepanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "RE": {
+ "name": "Lēunioni"
+ },
+ "LI": {
+ "name": "Likitenisiteini"
+ },
+ "CF": {
+ "name": "Lipapilika ʻAfilika Lotoloto"
+ },
+ "CZ": {
+ "name": "Lipapilika Seki"
+ },
+ "DO": {
+ "name": "Lipapilika Tominika"
+ },
+ "LY": {
+ "name": "Līpia"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "RO": {
+ "name": "Lomēnia"
+ },
+ "RW": {
+ "name": "Luanitā"
+ },
+ "RU": {
+ "name": "Lūsia"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MO": {
+ "name": "Makau SAR Siaina"
+ },
+ "MV": {
+ "name": "Malativisi"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MY": {
+ "name": "Malēsia"
+ },
+ "ML": {
+ "name": "Māli"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MK": {
+ "name": "Masetōnia"
+ },
+ "CI": {
+ "name": "Matafonua ʻAivolī"
+ },
+ "MG": {
+ "name": "Matakasika"
+ },
+ "MQ": {
+ "name": "Māteniki"
+ },
+ "MR": {
+ "name": "Maulitenia"
+ },
+ "MU": {
+ "name": "Maulitiusi"
+ },
+ "MX": {
+ "name": "Mekisikou"
+ },
+ "FM": {
+ "name": "Mikolonīsia"
+ },
+ "MS": {
+ "name": "Moʻungaselati"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MD": {
+ "name": "Molotova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongokōlia"
+ },
+ "ME": {
+ "name": "Monitenikalo"
+ },
+ "MZ": {
+ "name": "Mosēmipiki"
+ },
+ "AC": {
+ "name": "Motu ʻAsenisini"
+ },
+ "CX": {
+ "name": "Motu Kilisimasi"
+ },
+ "IM": {
+ "name": "Motu Mani"
+ },
+ "NF": {
+ "name": "Motu Nōfoliki"
+ },
+ "CV": {
+ "name": "Muiʻi Vēte"
+ },
+ "NG": {
+ "name": "Naisilia"
+ },
+ "NA": {
+ "name": "Namipia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikalakua"
+ },
+ "NE": {
+ "name": "Nisia"
+ },
+ "NC": {
+ "name": "Niu Kaletōnia"
+ },
+ "NU": {
+ "name": "Niuē"
+ },
+ "NO": {
+ "name": "Noauē"
+ },
+ "NZ": {
+ "name": "Nuʻusila"
+ },
+ "BS": {
+ "name": "Pahama"
+ },
+ "PK": {
+ "name": "Pākisitani"
+ },
+ "PY": {
+ "name": "Palakuai"
+ },
+ "BR": {
+ "name": "Palāsili"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "BH": {
+ "name": "Paleini"
+ },
+ "PA": {
+ "name": "Panamā"
+ },
+ "BB": {
+ "name": "Pāpeitosi"
+ },
+ "PG": {
+ "name": "Papuaniukini"
+ },
+ "BF": {
+ "name": "Pekano Faso"
+ },
+ "BY": {
+ "name": "Pelalusi"
+ },
+ "BE": {
+ "name": "Pelesiume"
+ },
+ "BZ": {
+ "name": "Pelise"
+ },
+ "PE": {
+ "name": "Pelū"
+ },
+ "MM": {
+ "name": "Pema"
+ },
+ "BM": {
+ "name": "Pēmuta"
+ },
+ "BD": {
+ "name": "Pengilātesi"
+ },
+ "BJ": {
+ "name": "Penini"
+ },
+ "GB": {
+ "name": "Pilitānia"
+ },
+ "PL": {
+ "name": "Polani"
+ },
+ "PF": {
+ "name": "Polinisia fakafalanisē"
+ },
+ "BO": {
+ "name": "Polīvia"
+ },
+ "BA": {
+ "name": "Posinia mo Hesikōvina"
+ },
+ "BW": {
+ "name": "Potisiuana"
+ },
+ "IO": {
+ "name": "Potu fonua moana ʻInitia fakapilitānia"
+ },
+ "TF": {
+ "name": "Potu fonua tonga fakafalanisē"
+ },
+ "PS": {
+ "name": "Potu Palesitaine"
+ },
+ "PT": {
+ "name": "Potukali"
+ },
+ "PR": {
+ "name": "Pueto Liko"
+ },
+ "US": {
+ "name": "Puleʻanga fakatahataha ʻAmelika"
+ },
+ "BG": {
+ "name": "Pulukalia"
+ },
+ "BN": {
+ "name": "Pulunei"
+ },
+ "BI": {
+ "name": "Puluniti"
+ },
+ "BT": {
+ "name": "Pūtani"
+ },
+ "SH": {
+ "name": "Sā Helena"
+ },
+ "KN": {
+ "name": "Sā Kitisi mo Nevisi"
+ },
+ "LC": {
+ "name": "Sā Lūsia"
+ },
+ "SM": {
+ "name": "Sā Malino"
+ },
+ "MF": {
+ "name": "Sā Mātini (fakafalanisē)"
+ },
+ "SX": {
+ "name": "Sā Mātini (fakahōlani)"
+ },
+ "BL": {
+ "name": "Sā Patēlemi"
+ },
+ "PM": {
+ "name": "Sā Piea mo Mikeloni"
+ },
+ "VC": {
+ "name": "Sā Viniseni mo Kulenatini"
+ },
+ "EH": {
+ "name": "Sahala fakahihifo"
+ },
+ "CY": {
+ "name": "Saipalesi"
+ },
+ "JM": {
+ "name": "Samaika"
+ },
+ "ST": {
+ "name": "Sao Tomē mo Pilinisipe"
+ },
+ "TD": {
+ "name": "Sāti"
+ },
+ "SA": {
+ "name": "Saute ʻAlepea"
+ },
+ "JE": {
+ "name": "Selusī"
+ },
+ "ZM": {
+ "name": "Semipia"
+ },
+ "SN": {
+ "name": "Senekalo"
+ },
+ "GE": {
+ "name": "Seōsia"
+ },
+ "RS": {
+ "name": "Sēpia"
+ },
+ "CN": {
+ "name": "Siaina"
+ },
+ "DE": {
+ "name": "Siamane"
+ },
+ "JP": {
+ "name": "Siapani"
+ },
+ "SL": {
+ "name": "Siela Leone"
+ },
+ "LK": {
+ "name": "Sīlangikā"
+ },
+ "CL": {
+ "name": "Sili"
+ },
+ "SY": {
+ "name": "Sīlia"
+ },
+ "SK": {
+ "name": "Silōvakia"
+ },
+ "SI": {
+ "name": "Silōvenia"
+ },
+ "ZW": {
+ "name": "Simipapuei"
+ },
+ "SG": {
+ "name": "Singapoa"
+ },
+ "GI": {
+ "name": "Sipalālitā"
+ },
+ "ES": {
+ "name": "Sipeini"
+ },
+ "DJ": {
+ "name": "Siputi"
+ },
+ "EA": {
+ "name": "Siuta mo Melila"
+ },
+ "SJ": {
+ "name": "Sivolopāti mo Sani Maieni"
+ },
+ "JO": {
+ "name": "Soatane"
+ },
+ "SO": {
+ "name": "Sōmalia"
+ },
+ "SZ": {
+ "name": "Suasilani"
+ },
+ "SE": {
+ "name": "Suēteni"
+ },
+ "CH": {
+ "name": "Suisilani"
+ },
+ "SR": {
+ "name": "Suliname"
+ },
+ "SS": {
+ "name": "Sūtani fakatonga"
+ },
+ "SD": {
+ "name": "Sūteni"
+ },
+ "TH": {
+ "name": "Tailani"
+ },
+ "TW": {
+ "name": "Taiuani"
+ },
+ "TJ": {
+ "name": "Tasikitani"
+ },
+ "DK": {
+ "name": "Tenimaʻake"
+ },
+ "TZ": {
+ "name": "Tenisānia"
+ },
+ "DG": {
+ "name": "Tieko Kāsia"
+ },
+ "TT": {
+ "name": "Tilinitati mo Topako"
+ },
+ "TL": {
+ "name": "Timoa Hahake"
+ },
+ "TR": {
+ "name": "Toake"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TG": {
+ "name": "Toko"
+ },
+ "DM": {
+ "name": "Tominika"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TM": {
+ "name": "Tūkimenisitani"
+ },
+ "TA": {
+ "name": "Tulisiteni ta Kunuha"
+ },
+ "TN": {
+ "name": "Tunīsia"
+ },
+ "TV": {
+ "name": "Tūvalu"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vietinami"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/tr.json b/library/intl/resources/country/tr.json
new file mode 100644
index 000000000..1db15e74b
--- /dev/null
+++ b/library/intl/resources/country/tr.json
@@ -0,0 +1,761 @@
+{
+ "US": {
+ "name": "ABD"
+ },
+ "UM": {
+ "name": "ABD Uzak Adaları"
+ },
+ "VI": {
+ "name": "ABD Virjin Adaları"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Åland Adaları"
+ },
+ "DE": {
+ "name": "Almanya"
+ },
+ "AS": {
+ "name": "Amerikan Samoası"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua ve Barbuda"
+ },
+ "AR": {
+ "name": "Arjantin"
+ },
+ "AL": {
+ "name": "Arnavutluk"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Adası"
+ },
+ "AU": {
+ "name": "Avustralya"
+ },
+ "AT": {
+ "name": "Avusturya"
+ },
+ "AZ": {
+ "name": "Azerbaycan"
+ },
+ "BS": {
+ "name": "Bahamalar"
+ },
+ "BH": {
+ "name": "Bahreyn"
+ },
+ "BD": {
+ "name": "Bangladeş"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "EH": {
+ "name": "Batı Sahara"
+ },
+ "BE": {
+ "name": "Belçika"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Beyaz Rusya"
+ },
+ "AE": {
+ "name": "Birleşik Arap Emirlikleri"
+ },
+ "GB": {
+ "name": "Birleşik Krallık"
+ },
+ "BO": {
+ "name": "Bolivya"
+ },
+ "BA": {
+ "name": "Bosna Hersek"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brezilya"
+ },
+ "IO": {
+ "name": "Britanya Hint Okyanusu Toprakları"
+ },
+ "VG": {
+ "name": "Britanya Virjin Adaları"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaristan"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "KY": {
+ "name": "Cayman Adaları"
+ },
+ "GI": {
+ "name": "Cebelitarık"
+ },
+ "DZ": {
+ "name": "Cezayir"
+ },
+ "CX": {
+ "name": "Christmas Adası"
+ },
+ "DJ": {
+ "name": "Cibuti"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Adaları"
+ },
+ "CK": {
+ "name": "Cook Adaları"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "CZ": {
+ "name": "Çek Cumhuriyeti"
+ },
+ "CN": {
+ "name": "Çin"
+ },
+ "HK": {
+ "name": "Çin Hong Kong ÖYB"
+ },
+ "MO": {
+ "name": "Çin Makao ÖYB"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominik Cumhuriyeti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvator Ginesi"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ID": {
+ "name": "Endonezya"
+ },
+ "ER": {
+ "name": "Eritre"
+ },
+ "AM": {
+ "name": "Ermenistan"
+ },
+ "EE": {
+ "name": "Estonya"
+ },
+ "ET": {
+ "name": "Etiyopya"
+ },
+ "FK": {
+ "name": "Falkland Adaları"
+ },
+ "FO": {
+ "name": "Faroe Adaları"
+ },
+ "MA": {
+ "name": "Fas"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "CI": {
+ "name": "Fildişi Sahili"
+ },
+ "PH": {
+ "name": "Filipinler"
+ },
+ "PS": {
+ "name": "Filistin Bölgeleri"
+ },
+ "FI": {
+ "name": "Finlandiya"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "GF": {
+ "name": "Fransız Guyanası"
+ },
+ "TF": {
+ "name": "Fransız Güney Toprakları"
+ },
+ "PF": {
+ "name": "Fransız Polinezyası"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "ZA": {
+ "name": "Güney Afrika"
+ },
+ "GS": {
+ "name": "Güney Georgia ve Güney Sandwich Adaları"
+ },
+ "CY": {
+ "name": "Güney Kıbrıs Rum Kesimi"
+ },
+ "KR": {
+ "name": "Güney Kore"
+ },
+ "SS": {
+ "name": "Güney Sudan"
+ },
+ "GE": {
+ "name": "Gürcistan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HR": {
+ "name": "Hırvatistan"
+ },
+ "IN": {
+ "name": "Hindistan"
+ },
+ "NL": {
+ "name": "Hollanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "İran"
+ },
+ "IE": {
+ "name": "İrlanda"
+ },
+ "ES": {
+ "name": "İspanya"
+ },
+ "IL": {
+ "name": "İsrail"
+ },
+ "SE": {
+ "name": "İsveç"
+ },
+ "CH": {
+ "name": "İsviçre"
+ },
+ "IT": {
+ "name": "İtalya"
+ },
+ "IS": {
+ "name": "İzlanda"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonya"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kamboçya"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarya Adaları"
+ },
+ "ME": {
+ "name": "Karadağ"
+ },
+ "BQ": {
+ "name": "Karayip Hollanda"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kırgızistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komorlar"
+ },
+ "CG": {
+ "name": "Kongo - Brazavil"
+ },
+ "CD": {
+ "name": "Kongo - Kinşasa"
+ },
+ "XK": {
+ "name": "Kosova"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "KW": {
+ "name": "Kuveyt"
+ },
+ "KP": {
+ "name": "Kuzey Kore"
+ },
+ "MP": {
+ "name": "Kuzey Mariana Adaları"
+ },
+ "CU": {
+ "name": "Küba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonya"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litvanya"
+ },
+ "LB": {
+ "name": "Lübnan"
+ },
+ "LU": {
+ "name": "Lüksemburg"
+ },
+ "HU": {
+ "name": "Macaristan"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivler"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man Adası"
+ },
+ "MH": {
+ "name": "Marshall Adaları"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "EG": {
+ "name": "Mısır"
+ },
+ "FM": {
+ "name": "Mikronezya"
+ },
+ "MN": {
+ "name": "Moğolistan"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Moritanya"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijerya"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Adası"
+ },
+ "NO": {
+ "name": "Norveç"
+ },
+ "CF": {
+ "name": "Orta Afrika Cumhuriyeti"
+ },
+ "UZ": {
+ "name": "Özbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yeni Gine"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn Adaları"
+ },
+ "PL": {
+ "name": "Polonya"
+ },
+ "PT": {
+ "name": "Portekiz"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romanya"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusya"
+ },
+ "BL": {
+ "name": "Saint Barthelemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ve Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre ve Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ve Grenadinler"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ve Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "EA": {
+ "name": "Septe ve Melilla"
+ },
+ "SC": {
+ "name": "Seyşeller"
+ },
+ "RS": {
+ "name": "Sırbistan"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakya"
+ },
+ "SI": {
+ "name": "Slovenya"
+ },
+ "SB": {
+ "name": "Solomon Adaları"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriye"
+ },
+ "SA": {
+ "name": "Suudi Arabistan"
+ },
+ "SJ": {
+ "name": "Svalbard ve Jan Mayen Adaları"
+ },
+ "SZ": {
+ "name": "Svaziland"
+ },
+ "CL": {
+ "name": "Şili"
+ },
+ "TJ": {
+ "name": "Tacikistan"
+ },
+ "TZ": {
+ "name": "Tanzanya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ve Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunus"
+ },
+ "TC": {
+ "name": "Turks ve Caicos Adaları"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türkiye"
+ },
+ "TM": {
+ "name": "Türkmenistan"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrayna"
+ },
+ "OM": {
+ "name": "Umman"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "JO": {
+ "name": "Ürdün"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis ve Futuna Adaları"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "NC": {
+ "name": "Yeni Kaledonya"
+ },
+ "NZ": {
+ "name": "Yeni Zelanda"
+ },
+ "GR": {
+ "name": "Yunanistan"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/twq.json b/library/intl/resources/country/twq.json
new file mode 100644
index 000000000..7d2210638
--- /dev/null
+++ b/library/intl/resources/country/twq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayseland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Šiili"
+ },
+ "CN": {
+ "name": "Šiin"
+ },
+ "CY": {
+ "name": "Šiipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/tzm.json b/library/intl/resources/country/tzm.json
new file mode 100644
index 000000000..edefc2295
--- /dev/null
+++ b/library/intl/resources/country/tzm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afɣanistan"
+ },
+ "PS": {
+ "name": "Agemmaḍ Ugut d Ɣazza Ifilisṭiniyen"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albanya"
+ },
+ "DE": {
+ "name": "Almanya"
+ },
+ "IO": {
+ "name": "Amur n Agaraw Uhindi Ubṛiṭani"
+ },
+ "AD": {
+ "name": "Anḍurra"
+ },
+ "AO": {
+ "name": "Angula"
+ },
+ "AI": {
+ "name": "Angwilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa d Barbuda"
+ },
+ "AR": {
+ "name": "Arjuntin"
+ },
+ "AM": {
+ "name": "Arminya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "Awank iɣrem n Vatikan"
+ },
+ "AZ": {
+ "name": "Azerbiǧan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baḥrayn"
+ },
+ "BD": {
+ "name": "Bangladic"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BG": {
+ "name": "Belɣarya"
+ },
+ "BE": {
+ "name": "Beljika"
+ },
+ "BY": {
+ "name": "Bilarusya"
+ },
+ "BZ": {
+ "name": "Biliz"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BM": {
+ "name": "Birmuda"
+ },
+ "BR": {
+ "name": "Bṛazil"
+ },
+ "BN": {
+ "name": "Brunay"
+ },
+ "BO": {
+ "name": "Bulivya"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BA": {
+ "name": "Busna-d-Hirsik"
+ },
+ "BT": {
+ "name": "Buṭan"
+ },
+ "BW": {
+ "name": "Butswana"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "Ccili"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Ḍuminika"
+ },
+ "DZ": {
+ "name": "Dzayer"
+ },
+ "IQ": {
+ "name": "Ɛiraq"
+ },
+ "OM": {
+ "name": "Ɛumman"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlanḍa"
+ },
+ "FR": {
+ "name": "Fṛansa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "DJ": {
+ "name": "Ǧibuti"
+ },
+ "GD": {
+ "name": "Grinada"
+ },
+ "GL": {
+ "name": "Grinlanḍa"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Tafransist"
+ },
+ "GP": {
+ "name": "Gwadalup"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatimala"
+ },
+ "GH": {
+ "name": "Ɣana"
+ },
+ "GN": {
+ "name": "Ɣinya"
+ },
+ "GQ": {
+ "name": "Ɣinya Tikwaṭur it"
+ },
+ "GW": {
+ "name": "Ɣinya-Bissaw"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "HU": {
+ "name": "Henɣarya"
+ },
+ "IN": {
+ "name": "Hind"
+ },
+ "HN": {
+ "name": "Hinduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hulanḍa"
+ },
+ "EC": {
+ "name": "Ikwaḍur"
+ },
+ "AE": {
+ "name": "Imarat Tiεrabin Tidduklin"
+ },
+ "ID": {
+ "name": "Indunizya"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "ER": {
+ "name": "Iritrya"
+ },
+ "IE": {
+ "name": "Irlanḍa"
+ },
+ "IS": {
+ "name": "Islanḍa"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeil"
+ },
+ "EE": {
+ "name": "Isṭunya"
+ },
+ "IT": {
+ "name": "Iṭalya"
+ },
+ "ET": {
+ "name": "Ityupya"
+ },
+ "US": {
+ "name": "Iwunak Idduklen n Amirika"
+ },
+ "JM": {
+ "name": "Jamayka"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralṭar"
+ },
+ "JP": {
+ "name": "Jjappun"
+ },
+ "GE": {
+ "name": "Jyurjya"
+ },
+ "NC": {
+ "name": "kalidunya Tamaynut"
+ },
+ "KH": {
+ "name": "Kambudj"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazaxistan"
+ },
+ "KE": {
+ "name": "Kinya"
+ },
+ "KG": {
+ "name": "Kirɣistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Krwatya"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "CO": {
+ "name": "Kulumbya"
+ },
+ "CG": {
+ "name": "Kungu"
+ },
+ "KP": {
+ "name": "Kurya Tugafat"
+ },
+ "KR": {
+ "name": "Kurya Tunẓult"
+ },
+ "CR": {
+ "name": "Kusṭa Rika"
+ },
+ "KW": {
+ "name": "Kuwwayt"
+ },
+ "LA": {
+ "name": "Laws"
+ },
+ "LR": {
+ "name": "Libirya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lictencṭayn"
+ },
+ "LU": {
+ "name": "Liksumburg"
+ },
+ "LS": {
+ "name": "Lisuṭu"
+ },
+ "LV": {
+ "name": "Liṭṭunya"
+ },
+ "LT": {
+ "name": "Litwanya"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madaɣacqar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiv"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malizya"
+ },
+ "MT": {
+ "name": "Malṭa"
+ },
+ "MN": {
+ "name": "Manɣulya"
+ },
+ "MK": {
+ "name": "Maqdunya"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "YT": {
+ "name": "Mayuṭ"
+ },
+ "MA": {
+ "name": "Meṛṛuk"
+ },
+ "FM": {
+ "name": "Mikrunizya"
+ },
+ "MX": {
+ "name": "Miksik"
+ },
+ "EG": {
+ "name": "Miṣr"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Mulḍavya"
+ },
+ "MC": {
+ "name": "Munaku"
+ },
+ "MS": {
+ "name": "Muntsirra"
+ },
+ "MU": {
+ "name": "Muris"
+ },
+ "MR": {
+ "name": "Muritanya"
+ },
+ "MZ": {
+ "name": "Muzambiq"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NR": {
+ "name": "Nawru"
+ },
+ "NG": {
+ "name": "Nijiria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NP": {
+ "name": "Nippal"
+ },
+ "NU": {
+ "name": "Niwi"
+ },
+ "NE": {
+ "name": "Nnijer"
+ },
+ "NO": {
+ "name": "Nnurwij"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Ɣinya Tamaynut"
+ },
+ "PY": {
+ "name": "Paragway"
+ },
+ "PE": {
+ "name": "Piru"
+ },
+ "PN": {
+ "name": "Pitkirn"
+ },
+ "PF": {
+ "name": "Pulinizya Tafransist"
+ },
+ "PL": {
+ "name": "Pulunya"
+ },
+ "PT": {
+ "name": "Purtuɣal"
+ },
+ "PR": {
+ "name": "Purturiku"
+ },
+ "QA": {
+ "name": "Qaṭar"
+ },
+ "CY": {
+ "name": "Qubrus"
+ },
+ "KM": {
+ "name": "Qumur"
+ },
+ "RE": {
+ "name": "Riyyunyun"
+ },
+ "RO": {
+ "name": "Ṛumanya"
+ },
+ "RU": {
+ "name": "Rusya"
+ },
+ "RW": {
+ "name": "Ruwwanḍa"
+ },
+ "SV": {
+ "name": "Salvaḍur"
+ },
+ "WS": {
+ "name": "Samwa"
+ },
+ "AS": {
+ "name": "Samwa Imirikaniyyin"
+ },
+ "SG": {
+ "name": "Sanɣafura"
+ },
+ "SM": {
+ "name": "Sanmarinu"
+ },
+ "SH": {
+ "name": "Santehilin"
+ },
+ "KN": {
+ "name": "Santekits d Nivis"
+ },
+ "LC": {
+ "name": "Santelusya"
+ },
+ "PM": {
+ "name": "Santepyir d Mikelun"
+ },
+ "VC": {
+ "name": "Santevinsent d Grinadin"
+ },
+ "ST": {
+ "name": "Sawṭumi d Prinsip"
+ },
+ "ES": {
+ "name": "Sbanya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Siralyun"
+ },
+ "SK": {
+ "name": "Sluvakya"
+ },
+ "SI": {
+ "name": "Sluvinya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "SA": {
+ "name": "Ssaεudiyya Taεrabt"
+ },
+ "SE": {
+ "name": "Ssewwid"
+ },
+ "SC": {
+ "name": "Ssicil"
+ },
+ "CN": {
+ "name": "Ṣṣin"
+ },
+ "SN": {
+ "name": "Ssiniɣal"
+ },
+ "SD": {
+ "name": "Ssudan"
+ },
+ "SO": {
+ "name": "Ṣṣumal"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilanḍa"
+ },
+ "CH": {
+ "name": "Swisra"
+ },
+ "ZA": {
+ "name": "Tafrikt Tunẓul"
+ },
+ "CF": {
+ "name": "Tagduda n Afrika Wammas"
+ },
+ "CZ": {
+ "name": "Tagduda n Čik"
+ },
+ "DO": {
+ "name": "Tagduda n Ḍuminikan"
+ },
+ "CD": {
+ "name": "Tagduda Tadimuqraṭit n Kungu"
+ },
+ "GB": {
+ "name": "Tagelda Taddukelt"
+ },
+ "TJ": {
+ "name": "Ṭaǧikistan"
+ },
+ "CI": {
+ "name": "Taɣazut n Uszer"
+ },
+ "TZ": {
+ "name": "Ṭanzanya"
+ },
+ "TH": {
+ "name": "Ṭaylanḍa"
+ },
+ "TW": {
+ "name": "Ṭaywan"
+ },
+ "TD": {
+ "name": "Tcad"
+ },
+ "VG": {
+ "name": "Tigzirin (Virgin) Tibṛiṭaniyin"
+ },
+ "FK": {
+ "name": "Tigzirin n Falkland"
+ },
+ "CV": {
+ "name": "Tigzirin n Iɣf Uzegzaw"
+ },
+ "KY": {
+ "name": "Tigzirin n Kayman"
+ },
+ "CK": {
+ "name": "Tigzirin n Kuk"
+ },
+ "MH": {
+ "name": "Tigzirin n Marcal"
+ },
+ "MP": {
+ "name": "Tigzirin n Maryana Tugafat"
+ },
+ "SB": {
+ "name": "Tigzirin n Salumun"
+ },
+ "VI": {
+ "name": "Tigzirin n Virjin n Iwunak Yedduklen"
+ },
+ "TC": {
+ "name": "Tigzirin Turkiyyin d Tikaykusin"
+ },
+ "NF": {
+ "name": "Tigzirt Nurfulk"
+ },
+ "TL": {
+ "name": "Timur Tagmuṭ"
+ },
+ "TT": {
+ "name": "Trinidad d Ṭubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Ṭṭugu"
+ },
+ "TK": {
+ "name": "Tuklu"
+ },
+ "TN": {
+ "name": "Tunes"
+ },
+ "TO": {
+ "name": "Ṭunga"
+ },
+ "TM": {
+ "name": "Turkmanistan"
+ },
+ "TR": {
+ "name": "Turkya"
+ },
+ "TV": {
+ "name": "Ṭuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uɣanda"
+ },
+ "UA": {
+ "name": "Ukranya"
+ },
+ "JO": {
+ "name": "Urḍun"
+ },
+ "UY": {
+ "name": "Urugway"
+ },
+ "AU": {
+ "name": "Usṭralya"
+ },
+ "AT": {
+ "name": "Ustriyya"
+ },
+ "UZ": {
+ "name": "Uzbakistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VE": {
+ "name": "Vinzwilla"
+ },
+ "VN": {
+ "name": "Viṭnam"
+ },
+ "WF": {
+ "name": "Walis d Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "GR": {
+ "name": "Yunan"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "NZ": {
+ "name": "Zilanḍa Tamaynut"
+ },
+ "ZW": {
+ "name": "Zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ug.json b/library/intl/resources/country/ug.json
new file mode 100644
index 000000000..a9a86b1ce
--- /dev/null
+++ b/library/intl/resources/country/ug.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "ئارگېنتىنا"
+ },
+ "AW": {
+ "name": "ئارۇبا"
+ },
+ "AC": {
+ "name": "ئاسسېنسىيون ئارىلى"
+ },
+ "AF": {
+ "name": "ئافغانىستان"
+ },
+ "AX": {
+ "name": "ئالاند ئاراللىرى"
+ },
+ "AL": {
+ "name": "ئالبانىيە"
+ },
+ "DZ": {
+ "name": "ئالجىرىيە"
+ },
+ "AS": {
+ "name": "ئامېرىكا تەۋەلىكىدىكى ساموئا"
+ },
+ "UM": {
+ "name": "ئامېرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللار"
+ },
+ "VI": {
+ "name": "ئامېرىكا تەۋەلىكىدىكى ۋىرجىن تاقىم ئاراللىرى"
+ },
+ "US": {
+ "name": "ئامېرىكا قوشما شتاتلىرى"
+ },
+ "AQ": {
+ "name": "ئانتاركتىكا"
+ },
+ "AG": {
+ "name": "ئانتىگۋا ۋە باربۇدا"
+ },
+ "AD": {
+ "name": "ئاندوررا"
+ },
+ "AO": {
+ "name": "ئانگولا"
+ },
+ "AI": {
+ "name": "ئانگۋىللا"
+ },
+ "AU": {
+ "name": "ئاۋسترالىيە"
+ },
+ "AT": {
+ "name": "ئاۋسترىيە"
+ },
+ "MO": {
+ "name": "ئاۋمېن ئالاھىدە مەمۇرىي رايونى (جۇڭگو)"
+ },
+ "AM": {
+ "name": "ئەرمېنىيە"
+ },
+ "AE": {
+ "name": "ئەرەب بىرلەشمە خەلىپىلىكى"
+ },
+ "AZ": {
+ "name": "ئەزەربەيجان"
+ },
+ "SV": {
+ "name": "ئەل سالۋادور"
+ },
+ "GB": {
+ "name": "ئەنگلىيە پادىشاھلىقى"
+ },
+ "VG": {
+ "name": "ئەنگلىيەگە قاراشلىق ۋىرجىن ئارىلى"
+ },
+ "IO": {
+ "name": "ئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكى"
+ },
+ "CF": {
+ "name": "ئوتتۇرا ئافرىقا جۇمھۇرىيىتى"
+ },
+ "OM": {
+ "name": "ئومان"
+ },
+ "UZ": {
+ "name": "ئۆزبېكىستان"
+ },
+ "UY": {
+ "name": "ئۇرۇگۋاي"
+ },
+ "UA": {
+ "name": "ئۇكرائىنا"
+ },
+ "UG": {
+ "name": "ئۇگاندا"
+ },
+ "IT": {
+ "name": "ئىتالىيە"
+ },
+ "IQ": {
+ "name": "ئىراق"
+ },
+ "IR": {
+ "name": "ئىران"
+ },
+ "IE": {
+ "name": "ئىرېلاندىيە"
+ },
+ "ES": {
+ "name": "ئىسپانىيە"
+ },
+ "IL": {
+ "name": "ئىسرائىلىيە"
+ },
+ "IS": {
+ "name": "ئىسلاندىيە"
+ },
+ "JO": {
+ "name": "ئىيوردانىيە"
+ },
+ "ER": {
+ "name": "ئېرىترېيە"
+ },
+ "EE": {
+ "name": "ئېستونىيە"
+ },
+ "ET": {
+ "name": "ئېفىيوپىيە"
+ },
+ "GQ": {
+ "name": "ئېكۋاتور گىۋىنېيەسى"
+ },
+ "EC": {
+ "name": "ئېكۋادور"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BD": {
+ "name": "باڭلادىش"
+ },
+ "BS": {
+ "name": "باھاما"
+ },
+ "BH": {
+ "name": "بەھرەين"
+ },
+ "BW": {
+ "name": "بوتسۋانا"
+ },
+ "BA": {
+ "name": "بوسنىيە-گېرتسېگوۋىنا"
+ },
+ "BO": {
+ "name": "بولىۋىيە"
+ },
+ "BT": {
+ "name": "بۇتان"
+ },
+ "BF": {
+ "name": "بۇركىنا-فاسو"
+ },
+ "BI": {
+ "name": "بۇرۇندى"
+ },
+ "BG": {
+ "name": "بۇلغارىيە"
+ },
+ "BR": {
+ "name": "بىرازىلىيە"
+ },
+ "MM": {
+ "name": "بىرما"
+ },
+ "BN": {
+ "name": "بىرۇنېي"
+ },
+ "BM": {
+ "name": "بېرمۇدا"
+ },
+ "BY": {
+ "name": "بېلارۇسىيە"
+ },
+ "BE": {
+ "name": "بېلگىيە"
+ },
+ "BZ": {
+ "name": "بېلىز"
+ },
+ "BJ": {
+ "name": "بېنىن"
+ },
+ "PG": {
+ "name": "پاپۇئا يېڭى گىۋىنېيەسى"
+ },
+ "PY": {
+ "name": "پاراگۋاي"
+ },
+ "PK": {
+ "name": "پاكىستان"
+ },
+ "PW": {
+ "name": "پالاۋ"
+ },
+ "PA": {
+ "name": "پاناما"
+ },
+ "PS": {
+ "name": "پەلەستىن زېمىنى"
+ },
+ "PT": {
+ "name": "پورتۇگالىيە"
+ },
+ "PL": {
+ "name": "پولشا"
+ },
+ "PR": {
+ "name": "پۇئېرتو-رىكو"
+ },
+ "PN": {
+ "name": "پىتكاير ئاراللىرى"
+ },
+ "PE": {
+ "name": "پېرۇ"
+ },
+ "TJ": {
+ "name": "تاجىكىستان"
+ },
+ "TZ": {
+ "name": "تانزانىيە"
+ },
+ "TH": {
+ "name": "تايلاند"
+ },
+ "TA": {
+ "name": "ترىستان داكۇنھا"
+ },
+ "TW": {
+ "name": "تەيۋەن"
+ },
+ "TK": {
+ "name": "توكېلاۋ"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TC": {
+ "name": "تۇركس ۋە كايكوس ئاراللىرى"
+ },
+ "TN": {
+ "name": "تۇنىس"
+ },
+ "TV": {
+ "name": "تۇۋالۇ"
+ },
+ "TM": {
+ "name": "تۈركمەنىستان"
+ },
+ "TR": {
+ "name": "تۈركىيە"
+ },
+ "TT": {
+ "name": "تىرىنىداد ۋە توباگو"
+ },
+ "GI": {
+ "name": "جەبىلتارىق"
+ },
+ "ZA": {
+ "name": "جەنۇبىي ئافرىقا"
+ },
+ "GS": {
+ "name": "جەنۇبىي جورجىيە ۋە جەنۇبىي ساندىۋىچ ئاراللىرى"
+ },
+ "SS": {
+ "name": "جەنۇبىي سۇدان"
+ },
+ "KR": {
+ "name": "جەنۇبىي كورىيە"
+ },
+ "CN": {
+ "name": "جۇڭگو"
+ },
+ "DJ": {
+ "name": "جىبۇتى"
+ },
+ "JE": {
+ "name": "جېرسېي"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CL": {
+ "name": "چىلى"
+ },
+ "CZ": {
+ "name": "چېخ جۇمھۇرىيىتى"
+ },
+ "DK": {
+ "name": "دانىيە"
+ },
+ "DM": {
+ "name": "دومىنىكا"
+ },
+ "DO": {
+ "name": "دومىنىكا جۇمھۇرىيىتى"
+ },
+ "DG": {
+ "name": "دېگو-گارشىيا"
+ },
+ "CX": {
+ "name": "روژدېستۋو ئارىلى"
+ },
+ "RU": {
+ "name": "رۇسىيە"
+ },
+ "RO": {
+ "name": "رۇمىنىيە"
+ },
+ "RW": {
+ "name": "رىۋاندا"
+ },
+ "RE": {
+ "name": "رېئونىيون"
+ },
+ "ZM": {
+ "name": "زامبىيە"
+ },
+ "ZW": {
+ "name": "زىمبابۋې"
+ },
+ "WS": {
+ "name": "ساموئا"
+ },
+ "ST": {
+ "name": "سان تومې ۋە پرىنسىپې"
+ },
+ "SM": {
+ "name": "سان-مارىنو"
+ },
+ "SH": {
+ "name": "ساينىت ھېلېنا"
+ },
+ "BL": {
+ "name": "ساينىت-بارتھېلەمي ئاراللىرى"
+ },
+ "PM": {
+ "name": "ساينىت-پىئېر ۋە مىكېلون ئاراللىرى"
+ },
+ "KN": {
+ "name": "ساينىت-كىرىستوفېر ۋە نېۋىس"
+ },
+ "LC": {
+ "name": "ساينىت-لۇسىيە"
+ },
+ "MF": {
+ "name": "ساينىت-مارتېن"
+ },
+ "VC": {
+ "name": "ساينىت-ۋىنسېنت ۋە گىرېنادىنېس"
+ },
+ "SA": {
+ "name": "سەئۇدى ئەرەبىستان"
+ },
+ "SB": {
+ "name": "سولومون ئاراللىرى"
+ },
+ "SO": {
+ "name": "سومالى"
+ },
+ "SD": {
+ "name": "سۇدان"
+ },
+ "SR": {
+ "name": "سۇرىنام"
+ },
+ "SY": {
+ "name": "سۈرىيە"
+ },
+ "CY": {
+ "name": "سىپرۇس"
+ },
+ "LK": {
+ "name": "سىرىلانكا"
+ },
+ "SK": {
+ "name": "سىلوۋاكىيە"
+ },
+ "SI": {
+ "name": "سىلوۋېنىيە"
+ },
+ "SX": {
+ "name": "سىنت مارتېن"
+ },
+ "SG": {
+ "name": "سىنگاپور"
+ },
+ "SJ": {
+ "name": "سىۋالبارد ۋە يان-مايېن ئارىلى"
+ },
+ "SZ": {
+ "name": "سىۋېزىلاند"
+ },
+ "RS": {
+ "name": "سېربىيە"
+ },
+ "SL": {
+ "name": "سېررالېئون"
+ },
+ "SN": {
+ "name": "سېنېگال"
+ },
+ "EA": {
+ "name": "سېيتا ۋە مېلىلا"
+ },
+ "SC": {
+ "name": "سېيشېل"
+ },
+ "TL": {
+ "name": "شەرقىي تىمور"
+ },
+ "KP": {
+ "name": "شىمالىي كورىيە"
+ },
+ "MP": {
+ "name": "شىمالىي مارىيانا ئاراللىرى"
+ },
+ "CH": {
+ "name": "شىۋىتسارىيە"
+ },
+ "SE": {
+ "name": "شىۋېتسىيە"
+ },
+ "HK": {
+ "name": "شياڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو)"
+ },
+ "EH": {
+ "name": "غەربىي ساخارا"
+ },
+ "FO": {
+ "name": "فائېرو ئاراللىرى"
+ },
+ "FK": {
+ "name": "فالكلاند ئاراللىرى"
+ },
+ "FJ": {
+ "name": "فىجى"
+ },
+ "FR": {
+ "name": "فىرانسىيە"
+ },
+ "PF": {
+ "name": "فىرانسىيەگە قاراشلىق پولىنېزىيە"
+ },
+ "TF": {
+ "name": "فىرانسىيەگە قاراشلىق جەنۇبتىكى زېمىنلىرى"
+ },
+ "GF": {
+ "name": "فىرانسىيەگە قاراشلىق گىۋىيانا"
+ },
+ "PH": {
+ "name": "فىلىپپىن"
+ },
+ "FI": {
+ "name": "فىنلاندىيە"
+ },
+ "QA": {
+ "name": "قاتار"
+ },
+ "KZ": {
+ "name": "قازاقىستان"
+ },
+ "KG": {
+ "name": "قىرغىزىستان"
+ },
+ "BQ": {
+ "name": "كارىب دېڭىزى گوللاندىيە"
+ },
+ "KH": {
+ "name": "كامبودژا"
+ },
+ "CM": {
+ "name": "كامېرون"
+ },
+ "CA": {
+ "name": "كانادا"
+ },
+ "IC": {
+ "name": "كانارى ئاراللىرى"
+ },
+ "KY": {
+ "name": "كايمان ئاراللىرى"
+ },
+ "CC": {
+ "name": "كەئەلىڭ كوكۇس ئاراللىرى"
+ },
+ "CI": {
+ "name": "كوتې دې ئىۋوئىر"
+ },
+ "CR": {
+ "name": "كوستارىكا"
+ },
+ "XK": {
+ "name": "كوسوۋو"
+ },
+ "CO": {
+ "name": "كولومبىيە"
+ },
+ "KM": {
+ "name": "كومورو"
+ },
+ "CG": {
+ "name": "كونگو - بىراززاۋىل"
+ },
+ "CD": {
+ "name": "كونگو - كىنشاسا"
+ },
+ "CU": {
+ "name": "كۇبا"
+ },
+ "CW": {
+ "name": "كۇراسو"
+ },
+ "CK": {
+ "name": "كۇك ئاراللىرى"
+ },
+ "KW": {
+ "name": "كۇۋەيت"
+ },
+ "HR": {
+ "name": "كىرودىيە"
+ },
+ "KI": {
+ "name": "كىرىباتى"
+ },
+ "KE": {
+ "name": "كېنىيە"
+ },
+ "GA": {
+ "name": "گابون"
+ },
+ "GM": {
+ "name": "گامبىيە"
+ },
+ "GH": {
+ "name": "گانا"
+ },
+ "NL": {
+ "name": "گوللاندىيە"
+ },
+ "GU": {
+ "name": "گۇئام"
+ },
+ "GE": {
+ "name": "گىروزىيە"
+ },
+ "GR": {
+ "name": "گىرېتسىيە"
+ },
+ "GD": {
+ "name": "گىرېنادا"
+ },
+ "GL": {
+ "name": "گىرېنلاند"
+ },
+ "GT": {
+ "name": "گىۋاتېمالا"
+ },
+ "GP": {
+ "name": "گىۋادېلۇپ"
+ },
+ "GN": {
+ "name": "گىۋىنېيە"
+ },
+ "GW": {
+ "name": "گىۋىنېيە-بىسسائۇ"
+ },
+ "GY": {
+ "name": "گىۋىيانا"
+ },
+ "DE": {
+ "name": "گېرمانىيە"
+ },
+ "GG": {
+ "name": "گېرىنسى"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LV": {
+ "name": "لاتۋىيە"
+ },
+ "LR": {
+ "name": "لىبېرىيە"
+ },
+ "LT": {
+ "name": "لىتۋانىيە"
+ },
+ "LI": {
+ "name": "لىچتېنشتېين بەگلىكى"
+ },
+ "LB": {
+ "name": "لىۋان"
+ },
+ "LY": {
+ "name": "لىۋىيە"
+ },
+ "LU": {
+ "name": "لىيۇكسېمبۇرگ"
+ },
+ "LS": {
+ "name": "لېسوتو"
+ },
+ "MG": {
+ "name": "ماداغاسقار"
+ },
+ "MA": {
+ "name": "ماراكەش"
+ },
+ "MQ": {
+ "name": "مارتىنىكا"
+ },
+ "MH": {
+ "name": "مارشال ئاراللىرى"
+ },
+ "MK": {
+ "name": "ماكېدونىيە"
+ },
+ "MW": {
+ "name": "مالاۋى"
+ },
+ "MY": {
+ "name": "مالايشىيا"
+ },
+ "MT": {
+ "name": "مالتا"
+ },
+ "MV": {
+ "name": "مالدىۋې"
+ },
+ "ML": {
+ "name": "مالى"
+ },
+ "MR": {
+ "name": "ماۋرىتانىيە"
+ },
+ "MU": {
+ "name": "ماۋرىتىئۇس"
+ },
+ "YT": {
+ "name": "مايوتتې"
+ },
+ "MZ": {
+ "name": "موزامبىك"
+ },
+ "MN": {
+ "name": "موڭغۇلىيە"
+ },
+ "MD": {
+ "name": "مولدوۋا"
+ },
+ "MC": {
+ "name": "موناكو"
+ },
+ "MS": {
+ "name": "مونتسېررات"
+ },
+ "ME": {
+ "name": "مونتېنېگرو"
+ },
+ "EG": {
+ "name": "مىسىر"
+ },
+ "FM": {
+ "name": "مىكرونېزىيە"
+ },
+ "MX": {
+ "name": "مېكسىكا"
+ },
+ "IM": {
+ "name": "مېن ئارىلى"
+ },
+ "NA": {
+ "name": "نامىبىيە"
+ },
+ "NR": {
+ "name": "ناۋرۇ"
+ },
+ "NF": {
+ "name": "نورفولك ئارىلى"
+ },
+ "NO": {
+ "name": "نورۋېگىيە"
+ },
+ "NI": {
+ "name": "نىكاراگۇئا"
+ },
+ "NG": {
+ "name": "نىگېرىيە"
+ },
+ "NU": {
+ "name": "نىيۇئې"
+ },
+ "NP": {
+ "name": "نېپال"
+ },
+ "NE": {
+ "name": "نېگىر"
+ },
+ "HT": {
+ "name": "ھايتى"
+ },
+ "HN": {
+ "name": "ھوندۇراس"
+ },
+ "ID": {
+ "name": "ھىندونېزىيە"
+ },
+ "IN": {
+ "name": "ھىندىستان"
+ },
+ "VA": {
+ "name": "ۋاتىكان شەھىرى"
+ },
+ "WF": {
+ "name": "ۋالىس ۋە فۇتۇنا"
+ },
+ "VU": {
+ "name": "ۋانۇئاتۇ"
+ },
+ "VN": {
+ "name": "ۋىيېتنام"
+ },
+ "HU": {
+ "name": "ۋېنگىرىيە"
+ },
+ "VE": {
+ "name": "ۋېنېزۇئېلا"
+ },
+ "JP": {
+ "name": "ياپونىيە"
+ },
+ "JM": {
+ "name": "يامايكا"
+ },
+ "YE": {
+ "name": "يەمەن"
+ },
+ "CV": {
+ "name": "يېشىل تۇمشۇق"
+ },
+ "NZ": {
+ "name": "يېڭى زېلاندىيە"
+ },
+ "NC": {
+ "name": "يېڭى كالېدونىيە"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uk.json b/library/intl/resources/country/uk.json
new file mode 100644
index 000000000..48ab986ba
--- /dev/null
+++ b/library/intl/resources/country/uk.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралія"
+ },
+ "AT": {
+ "name": "Австрія"
+ },
+ "AZ": {
+ "name": "Азербайджан"
+ },
+ "AX": {
+ "name": "Аландські острови"
+ },
+ "AL": {
+ "name": "Албанія"
+ },
+ "DZ": {
+ "name": "Алжир"
+ },
+ "AS": {
+ "name": "Американське Самоа"
+ },
+ "AI": {
+ "name": "Ангілья"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктика"
+ },
+ "AG": {
+ "name": "Антигуа і Барбуда"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AF": {
+ "name": "Афганістан"
+ },
+ "BS": {
+ "name": "Багами"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BZ": {
+ "name": "Беліз"
+ },
+ "BE": {
+ "name": "Бельгія"
+ },
+ "BJ": {
+ "name": "Бенін"
+ },
+ "BM": {
+ "name": "Бермуди"
+ },
+ "BY": {
+ "name": "Білорусь"
+ },
+ "BG": {
+ "name": "Болгарія"
+ },
+ "BO": {
+ "name": "Болівія"
+ },
+ "BA": {
+ "name": "Боснія і Герцоговина"
+ },
+ "BW": {
+ "name": "Ботсвана"
+ },
+ "BR": {
+ "name": "Бразилія"
+ },
+ "VG": {
+ "name": "Британські Віргінські острови"
+ },
+ "IO": {
+ "name": "Британські території в Індійському океані"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркіна-Фасо"
+ },
+ "BI": {
+ "name": "Бурунді"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VN": {
+ "name": "Вʼєтнам"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика Британія"
+ },
+ "VE": {
+ "name": "Венесуела"
+ },
+ "UM": {
+ "name": "Віддалені острови США"
+ },
+ "VI": {
+ "name": "Віргінські острови, США"
+ },
+ "AM": {
+ "name": "Вірменія"
+ },
+ "WF": {
+ "name": "Волліс і Футуна"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаїті"
+ },
+ "GM": {
+ "name": "Гамбія"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "Гаяна"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвінея"
+ },
+ "GW": {
+ "name": "Гвінея-Бісау"
+ },
+ "GG": {
+ "name": "Гернсі"
+ },
+ "GI": {
+ "name": "Гібралтар"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "HK": {
+ "name": "Гонконг, О.А.Р. Китаю"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландія"
+ },
+ "GR": {
+ "name": "Греція"
+ },
+ "GE": {
+ "name": "Грузія"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "Данія"
+ },
+ "JE": {
+ "name": "Джерсі"
+ },
+ "DJ": {
+ "name": "Джибуті"
+ },
+ "DG": {
+ "name": "Дієго-Гарсія"
+ },
+ "DM": {
+ "name": "Домініка"
+ },
+ "DO": {
+ "name": "Домініканська Республіка"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторіальна Гвінея"
+ },
+ "ER": {
+ "name": "Еритрея"
+ },
+ "EE": {
+ "name": "Естонія"
+ },
+ "ET": {
+ "name": "Ефіопія"
+ },
+ "EG": {
+ "name": "Єгипет"
+ },
+ "YE": {
+ "name": "Ємен"
+ },
+ "ZM": {
+ "name": "Замбія"
+ },
+ "EH": {
+ "name": "Західна Сахара"
+ },
+ "ZW": {
+ "name": "Зімбабве"
+ },
+ "IL": {
+ "name": "Ізраїль"
+ },
+ "IN": {
+ "name": "Індія"
+ },
+ "ID": {
+ "name": "Індонезія"
+ },
+ "IQ": {
+ "name": "Ірак"
+ },
+ "IR": {
+ "name": "Іран"
+ },
+ "IE": {
+ "name": "Ірландія"
+ },
+ "IS": {
+ "name": "Ісландія"
+ },
+ "ES": {
+ "name": "Іспанія"
+ },
+ "IT": {
+ "name": "Італія"
+ },
+ "JO": {
+ "name": "Йорданія"
+ },
+ "CV": {
+ "name": "Кабо Верде"
+ },
+ "KZ": {
+ "name": "Казахстан"
+ },
+ "KY": {
+ "name": "Кайманові острови"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канарські острови"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенія"
+ },
+ "KG": {
+ "name": "Киргизстан"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "CY": {
+ "name": "Кіпр"
+ },
+ "KI": {
+ "name": "Кірибаті"
+ },
+ "CC": {
+ "name": "Кокосові (Кілінгові) острови"
+ },
+ "CO": {
+ "name": "Колумбія"
+ },
+ "KM": {
+ "name": "Коморські острови"
+ },
+ "CG": {
+ "name": "Конго – Браззавіль"
+ },
+ "CD": {
+ "name": "Конго – Кіншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Івуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "Кюрасао"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвія"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LR": {
+ "name": "Ліберія"
+ },
+ "LB": {
+ "name": "Ліван"
+ },
+ "LY": {
+ "name": "Лівія"
+ },
+ "LI": {
+ "name": "Ліхтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MM": {
+ "name": "Мʼянма (Бірма)"
+ },
+ "MU": {
+ "name": "Маврикій"
+ },
+ "MR": {
+ "name": "Мавританія"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао О.А.Р. Китаю"
+ },
+ "MK": {
+ "name": "Македонія"
+ },
+ "MW": {
+ "name": "Малаві"
+ },
+ "MY": {
+ "name": "Малайзія"
+ },
+ "ML": {
+ "name": "Малі"
+ },
+ "MV": {
+ "name": "Мальдіви"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиніка"
+ },
+ "MH": {
+ "name": "Маршаллові Острови"
+ },
+ "MX": {
+ "name": "Мексика"
+ },
+ "FM": {
+ "name": "Мікронезія"
+ },
+ "MZ": {
+ "name": "Мозамбік"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголія"
+ },
+ "MS": {
+ "name": "Монтсеррат"
+ },
+ "NA": {
+ "name": "Намібія"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нігер"
+ },
+ "NG": {
+ "name": "Нігерія"
+ },
+ "NL": {
+ "name": "Нідерланди"
+ },
+ "BQ": {
+ "name": "Нідерландські Карибські острови"
+ },
+ "NI": {
+ "name": "Нікарагуа"
+ },
+ "DE": {
+ "name": "Німеччина"
+ },
+ "NU": {
+ "name": "Ніуе"
+ },
+ "NZ": {
+ "name": "Нова Зеландія"
+ },
+ "NC": {
+ "name": "Нова Каледонія"
+ },
+ "NO": {
+ "name": "Норвегія"
+ },
+ "AE": {
+ "name": "Обʼєднані Арабські Емірати"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "Острів Вознесіння"
+ },
+ "IM": {
+ "name": "Острів Мен"
+ },
+ "NF": {
+ "name": "Острів Норфолк"
+ },
+ "CX": {
+ "name": "Острів Різдва"
+ },
+ "SH": {
+ "name": "Острів Святої Єлени"
+ },
+ "CK": {
+ "name": "Острови Кука"
+ },
+ "PN": {
+ "name": "Острови Піткерн"
+ },
+ "SJ": {
+ "name": "Острови Свальбард і Ян-Маєн"
+ },
+ "TC": {
+ "name": "Острови Теркс і Кайкос"
+ },
+ "PK": {
+ "name": "Пакистан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "Палестинські території"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Нова Гвінея"
+ },
+ "ZA": {
+ "name": "ПАР"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "GS": {
+ "name": "Південна Джорджія та Південні Сандвічеві острови"
+ },
+ "KR": {
+ "name": "Південна Корея"
+ },
+ "SS": {
+ "name": "Південний Судан"
+ },
+ "KP": {
+ "name": "Північна Корея"
+ },
+ "MP": {
+ "name": "Північні Маріанські острови"
+ },
+ "PL": {
+ "name": "Польща"
+ },
+ "PT": {
+ "name": "Португалія"
+ },
+ "PR": {
+ "name": "Пуерто-Рико"
+ },
+ "RE": {
+ "name": "Реюньйон"
+ },
+ "RU": {
+ "name": "Росія"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румунія"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе і Прінсіпі"
+ },
+ "SA": {
+ "name": "Саудівська Аравія"
+ },
+ "SZ": {
+ "name": "Свазіленд"
+ },
+ "SC": {
+ "name": "Сейшельські острови"
+ },
+ "BL": {
+ "name": "Сен-Бартельмі"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пʼєр і Мікелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-Вінсент і Гренадини"
+ },
+ "KN": {
+ "name": "Сент-Кітс і Невіс"
+ },
+ "LC": {
+ "name": "Сент-Люсія"
+ },
+ "RS": {
+ "name": "Сербія"
+ },
+ "EA": {
+ "name": "Сеута і Мелілья"
+ },
+ "SY": {
+ "name": "Сирія"
+ },
+ "SG": {
+ "name": "Сінгапур"
+ },
+ "SX": {
+ "name": "Сінт-Мартен"
+ },
+ "SK": {
+ "name": "Словаччина"
+ },
+ "SI": {
+ "name": "Словенія"
+ },
+ "SB": {
+ "name": "Соломонові Острови"
+ },
+ "SO": {
+ "name": "Сомалі"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TL": {
+ "name": "Східний Тимор"
+ },
+ "US": {
+ "name": "США"
+ },
+ "SL": {
+ "name": "Сьєрра-Леоне"
+ },
+ "TJ": {
+ "name": "Таджикистан"
+ },
+ "TH": {
+ "name": "Таїланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "Танзанія"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринідад і Тобаго"
+ },
+ "TA": {
+ "name": "Трістан-да-Кунья"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Туніс"
+ },
+ "TR": {
+ "name": "Туреччина"
+ },
+ "TM": {
+ "name": "Туркменістан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "HU": {
+ "name": "Угорщина"
+ },
+ "UZ": {
+ "name": "Узбекистан"
+ },
+ "UA": {
+ "name": "Україна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фарерські острови"
+ },
+ "FJ": {
+ "name": "Фіджі"
+ },
+ "PH": {
+ "name": "Філіппіни"
+ },
+ "FI": {
+ "name": "Фінляндія"
+ },
+ "FK": {
+ "name": "Фолклендські острови"
+ },
+ "FR": {
+ "name": "Франція"
+ },
+ "GF": {
+ "name": "Французька Гвіана"
+ },
+ "PF": {
+ "name": "Французька Полінезія"
+ },
+ "TF": {
+ "name": "Французькі Південні Території"
+ },
+ "HR": {
+ "name": "Хорватія"
+ },
+ "CF": {
+ "name": "Центральноафриканська Республіка"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "Чехія"
+ },
+ "CL": {
+ "name": "Чилі"
+ },
+ "ME": {
+ "name": "Чорногорія"
+ },
+ "CH": {
+ "name": "Швейцарія"
+ },
+ "SE": {
+ "name": "Швеція"
+ },
+ "LK": {
+ "name": "Шрі-Ланка"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "Японія"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ur-IN.json b/library/intl/resources/country/ur-IN.json
new file mode 100644
index 000000000..536cec452
--- /dev/null
+++ b/library/intl/resources/country/ur-IN.json
@@ -0,0 +1,761 @@
+{
+ "IT": {
+ "name": "اٹلی"
+ },
+ "AR": {
+ "name": "ارجنٹینا"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AW": {
+ "name": "اروبا"
+ },
+ "ER": {
+ "name": "اریٹیریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "GQ": {
+ "name": "استوائی گیانا"
+ },
+ "EE": {
+ "name": "اسٹونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "AF": {
+ "name": "افغانستان"
+ },
+ "SV": {
+ "name": "ال سلواڈور"
+ },
+ "AL": {
+ "name": "البانیہ"
+ },
+ "DZ": {
+ "name": "الجیریا"
+ },
+ "UM": {
+ "name": "امریکی بیرونی جزائر"
+ },
+ "VI": {
+ "name": "امریکی جزائر ورجن"
+ },
+ "AS": {
+ "name": "امریکی ساموآ"
+ },
+ "AQ": {
+ "name": "انٹارکٹیکا"
+ },
+ "AG": {
+ "name": "انٹیگوا اور باربودا"
+ },
+ "AD": {
+ "name": "انڈورا"
+ },
+ "ID": {
+ "name": "انڈونیشیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "ET": {
+ "name": "ایتھوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "EC": {
+ "name": "ایکواڈور"
+ },
+ "AZ": {
+ "name": "آذربائجان"
+ },
+ "AM": {
+ "name": "آرمینیا"
+ },
+ "AT": {
+ "name": "آسٹریا"
+ },
+ "AU": {
+ "name": "آسٹریلیا"
+ },
+ "IE": {
+ "name": "آئرلینڈ"
+ },
+ "IS": {
+ "name": "آئس لینڈ"
+ },
+ "IM": {
+ "name": "آئل آف مین"
+ },
+ "BB": {
+ "name": "بارباڈوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیل"
+ },
+ "IO": {
+ "name": "برطانوی بحرہند خطہ"
+ },
+ "VG": {
+ "name": "برطانوی جزائر ورجن"
+ },
+ "BF": {
+ "name": "برکینا فاسو"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BI": {
+ "name": "برونڈی"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "BG": {
+ "name": "بلغاریہ"
+ },
+ "BD": {
+ "name": "بنگلہ دیش"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BA": {
+ "name": "بوسنیا اور ہرزیگووینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "BS": {
+ "name": "بہاماس"
+ },
+ "BY": {
+ "name": "بیلاروس"
+ },
+ "BZ": {
+ "name": "بیلائز"
+ },
+ "BE": {
+ "name": "بیلجیم"
+ },
+ "BJ": {
+ "name": "بینن"
+ },
+ "IN": {
+ "name": "بھارت"
+ },
+ "BT": {
+ "name": "بھوٹان"
+ },
+ "PG": {
+ "name": "پاپوآ نیو گنی"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PW": {
+ "name": "پلاؤ"
+ },
+ "PA": {
+ "name": "پنامہ"
+ },
+ "PL": {
+ "name": "پولینڈ"
+ },
+ "PY": {
+ "name": "پیراگوئے"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "PR": {
+ "name": "پیورٹو ریکو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TW": {
+ "name": "تائیوان"
+ },
+ "TA": {
+ "name": "ترسٹان دا کونیا"
+ },
+ "TM": {
+ "name": "ترکمانستان"
+ },
+ "TR": {
+ "name": "ترکی"
+ },
+ "TT": {
+ "name": "ترینیداد اور ٹوباگو"
+ },
+ "TZ": {
+ "name": "تنزانیہ"
+ },
+ "TL": {
+ "name": "تیمور لیسٹ"
+ },
+ "TN": {
+ "name": "تیونیسیا"
+ },
+ "TH": {
+ "name": "تھائی لینڈ"
+ },
+ "TK": {
+ "name": "ٹوکیلاؤ"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونگا"
+ },
+ "TV": {
+ "name": "ٹووالو"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجیا"
+ },
+ "GI": {
+ "name": "جبل الطارق"
+ },
+ "DJ": {
+ "name": "جبوتی"
+ },
+ "JE": {
+ "name": "جرسی"
+ },
+ "DE": {
+ "name": "جرمنی"
+ },
+ "CC": {
+ "name": "جزائر (کیلنگ) کوکوس"
+ },
+ "AX": {
+ "name": "جزائر ایلانڈ"
+ },
+ "PN": {
+ "name": "جزائر پٹکیرن"
+ },
+ "SB": {
+ "name": "جزائر سلیمان"
+ },
+ "MP": {
+ "name": "جزائر شمالی ماریانا"
+ },
+ "FK": {
+ "name": "جزائر فاکلینڈ"
+ },
+ "CK": {
+ "name": "جزائر کک"
+ },
+ "IC": {
+ "name": "جزائر کناری"
+ },
+ "TC": {
+ "name": "جزائر کیکس و ترکیہ"
+ },
+ "MH": {
+ "name": "جزائر مارشل"
+ },
+ "FO": {
+ "name": "جزائرفارو"
+ },
+ "AC": {
+ "name": "جزیرہ اسینشن"
+ },
+ "NF": {
+ "name": "جزیرہ نارفولک"
+ },
+ "JM": {
+ "name": "جمائیکا"
+ },
+ "ZA": {
+ "name": "جنوبی افریقہ"
+ },
+ "GS": {
+ "name": "جنوبی جارجیا اور جنوبی سینڈوچ جزائر"
+ },
+ "SS": {
+ "name": "جنوبی سوڈان"
+ },
+ "KR": {
+ "name": "جنوبی کوریا"
+ },
+ "TD": {
+ "name": "چاڈ"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CZ": {
+ "name": "چیک جمہوریہ"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "ڈنمارک"
+ },
+ "DM": {
+ "name": "ڈومنیکا"
+ },
+ "DO": {
+ "name": "ڈومنیکن جمہوریہ"
+ },
+ "DG": {
+ "name": "ڈیگو گارشیا"
+ },
+ "RW": {
+ "name": "روانڈا"
+ },
+ "RU": {
+ "name": "روس"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "ری یونین"
+ },
+ "US": {
+ "name": "ریاستہائے متحدہ"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "ZW": {
+ "name": "زمبابوے"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "SM": {
+ "name": "سان مارینو"
+ },
+ "ST": {
+ "name": "ساؤ ٹوم اور پرنسپے"
+ },
+ "RS": {
+ "name": "سربیا"
+ },
+ "LK": {
+ "name": "سری لنکا"
+ },
+ "SC": {
+ "name": "سشلیز"
+ },
+ "SA": {
+ "name": "سعودی عرب"
+ },
+ "GB": {
+ "name": "سلطنت متحدہ"
+ },
+ "SK": {
+ "name": "سلوواکیہ"
+ },
+ "SI": {
+ "name": "سلووینیا"
+ },
+ "SX": {
+ "name": "سنٹ مارٹن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SZ": {
+ "name": "سوازی لینڈ"
+ },
+ "SJ": {
+ "name": "سوالبرڈ اور جان ماین"
+ },
+ "SD": {
+ "name": "سوڈان"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "CH": {
+ "name": "سوئٹزر لینڈ"
+ },
+ "SE": {
+ "name": "سویڈن"
+ },
+ "BL": {
+ "name": "سینٹ برتھلیمی"
+ },
+ "PM": {
+ "name": "سینٹ پیئر اور میکلیئون"
+ },
+ "KN": {
+ "name": "سینٹ کٹس اور نیویس"
+ },
+ "LC": {
+ "name": "سینٹ لوسیا"
+ },
+ "MF": {
+ "name": "سینٹ مارٹن"
+ },
+ "VC": {
+ "name": "سینٹ ونسنٹ اور گرینیڈائنز"
+ },
+ "SH": {
+ "name": "سینٹ ہیلینا"
+ },
+ "SN": {
+ "name": "سینیگل"
+ },
+ "SL": {
+ "name": "سیئر لیون"
+ },
+ "EA": {
+ "name": "سیئوٹا اور میلیلا"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "شمالی کوریا"
+ },
+ "SO": {
+ "name": "صومالیہ"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "FJ": {
+ "name": "فجی"
+ },
+ "FR": {
+ "name": "فرانس"
+ },
+ "PF": {
+ "name": "فرانسیسی پولینیشیا"
+ },
+ "TF": {
+ "name": "فرانسیسی جنوبی خطے"
+ },
+ "GF": {
+ "name": "فرانسیسی گیانا"
+ },
+ "PH": {
+ "name": "فلپائن"
+ },
+ "PS": {
+ "name": "فلسطینی خطے"
+ },
+ "FI": {
+ "name": "فن لینڈ"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KZ": {
+ "name": "قزاخستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "CG": {
+ "name": "کانگو - برازاویلے"
+ },
+ "CD": {
+ "name": "کانگو - کنشاسا"
+ },
+ "CX": {
+ "name": "کرسمس آئلینڈ"
+ },
+ "KG": {
+ "name": "کرغزستان"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KI": {
+ "name": "کریباتی"
+ },
+ "BQ": {
+ "name": "کریبیائی نیدرلینڈز"
+ },
+ "KH": {
+ "name": "کمبوڈیا"
+ },
+ "CI": {
+ "name": "کوت داوواغ"
+ },
+ "CR": {
+ "name": "کوسٹا ریکا"
+ },
+ "XK": {
+ "name": "کوسووو"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کوموروس"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ ورڈی"
+ },
+ "CM": {
+ "name": "کیمرون"
+ },
+ "KY": {
+ "name": "کیمین آئلینڈز"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CA": {
+ "name": "کینیڈا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "CW": {
+ "name": "کیوراکاؤ"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GL": {
+ "name": "گرین لینڈ"
+ },
+ "GD": {
+ "name": "گریناڈا"
+ },
+ "GN": {
+ "name": "گنی"
+ },
+ "GW": {
+ "name": "گنی بساؤ"
+ },
+ "GT": {
+ "name": "گواٹے مالا"
+ },
+ "GP": {
+ "name": "گواڈیلوپ"
+ },
+ "GU": {
+ "name": "گوآم"
+ },
+ "GG": {
+ "name": "گوئرنسی"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GA": {
+ "name": "گیبون"
+ },
+ "GH": {
+ "name": "گھانا"
+ },
+ "LA": {
+ "name": "لاؤس"
+ },
+ "LR": {
+ "name": "لائبیریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتھوانیا"
+ },
+ "LV": {
+ "name": "لٹویا"
+ },
+ "LU": {
+ "name": "لگژمبرگ"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "LI": {
+ "name": "لیشٹنسٹائن"
+ },
+ "MQ": {
+ "name": "مارٹینک"
+ },
+ "MU": {
+ "name": "ماریشس"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MD": {
+ "name": "مالدووا"
+ },
+ "MV": {
+ "name": "مالدیپ"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "FM": {
+ "name": "مائکرونیشیا"
+ },
+ "YT": {
+ "name": "مایوٹ"
+ },
+ "AE": {
+ "name": "متحدہ عرب امارات"
+ },
+ "MG": {
+ "name": "مڈغاسکر"
+ },
+ "MA": {
+ "name": "مراقش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "EH": {
+ "name": "مغربی صحارا"
+ },
+ "MK": {
+ "name": "مقدونیہ"
+ },
+ "MO": {
+ "name": "مکاؤ SAR چین"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "ملیشیا"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریطانیہ"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونٹسیراٹ"
+ },
+ "ME": {
+ "name": "مونٹے نیگرو"
+ },
+ "MM": {
+ "name": "میانمار (برما)"
+ },
+ "MX": {
+ "name": "میکسیکو"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NR": {
+ "name": "ناورو"
+ },
+ "NE": {
+ "name": "نائجر"
+ },
+ "NG": {
+ "name": "نائجیریا"
+ },
+ "NI": {
+ "name": "نکاراگووا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیدر لینڈز"
+ },
+ "NC": {
+ "name": "نیو کلیڈونیا"
+ },
+ "NZ": {
+ "name": "نیوزی ینڈ"
+ },
+ "NU": {
+ "name": "نیئو"
+ },
+ "VA": {
+ "name": "واٹیکن سٹی"
+ },
+ "CF": {
+ "name": "وسط افریقی جمہوریہ"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "WF": {
+ "name": "ویلیز اور فیوٹیونا"
+ },
+ "VE": {
+ "name": "وینزوئیلا"
+ },
+ "VU": {
+ "name": "وینوآٹو"
+ },
+ "HK": {
+ "name": "ہانگ کانگ SAR چین"
+ },
+ "ES": {
+ "name": "ہسپانیہ"
+ },
+ "HU": {
+ "name": "ہنگری"
+ },
+ "HN": {
+ "name": "ہونڈاروس"
+ },
+ "HT": {
+ "name": "ہیتی"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوئے"
+ },
+ "UA": {
+ "name": "یوکرین"
+ },
+ "UG": {
+ "name": "یوگانڈا"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ur.json b/library/intl/resources/country/ur.json
new file mode 100644
index 000000000..5bb85870b
--- /dev/null
+++ b/library/intl/resources/country/ur.json
@@ -0,0 +1,761 @@
+{
+ "IT": {
+ "name": "اٹلی"
+ },
+ "AR": {
+ "name": "ارجنٹینا"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AW": {
+ "name": "اروبا"
+ },
+ "ER": {
+ "name": "اریٹیریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "GQ": {
+ "name": "استوائی گیانا"
+ },
+ "EE": {
+ "name": "اسٹونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "AC": {
+ "name": "اسکینسیئن آئلینڈ"
+ },
+ "AF": {
+ "name": "افغانستان"
+ },
+ "SV": {
+ "name": "ال سلواڈور"
+ },
+ "AL": {
+ "name": "البانیہ"
+ },
+ "DZ": {
+ "name": "الجیریا"
+ },
+ "UM": {
+ "name": "امریکہ سے باہر کے چھوٹے جزائز"
+ },
+ "AS": {
+ "name": "امریکی ساموآ"
+ },
+ "VI": {
+ "name": "امریکی ورجن آئلینڈز"
+ },
+ "AQ": {
+ "name": "انٹارکٹیکا"
+ },
+ "AG": {
+ "name": "انٹیگوا اور باربودا"
+ },
+ "AD": {
+ "name": "انڈورا"
+ },
+ "ID": {
+ "name": "انڈونیشیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "ET": {
+ "name": "ایتھوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "EC": {
+ "name": "ایکواڈور"
+ },
+ "AZ": {
+ "name": "آذربائجان"
+ },
+ "AM": {
+ "name": "آرمینیا"
+ },
+ "AT": {
+ "name": "آسٹریا"
+ },
+ "AU": {
+ "name": "آسٹریلیا"
+ },
+ "AX": {
+ "name": "آلینڈ آئلینڈز"
+ },
+ "IE": {
+ "name": "آئرلینڈ"
+ },
+ "IS": {
+ "name": "آئس لینڈ"
+ },
+ "IM": {
+ "name": "آئل آف مین"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیلی"
+ },
+ "VG": {
+ "name": "برٹش ورجن آئلینڈز"
+ },
+ "IO": {
+ "name": "برطانوی ہندوستانی سمندری خطہ"
+ },
+ "BF": {
+ "name": "برکینا فاسو"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BI": {
+ "name": "برونڈی"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "BG": {
+ "name": "بلغاریہ"
+ },
+ "BD": {
+ "name": "بنگلہ دیش"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BA": {
+ "name": "بوسنیا اور ہرزیگووینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "BS": {
+ "name": "بہاماس"
+ },
+ "BY": {
+ "name": "بیلاروس"
+ },
+ "BZ": {
+ "name": "بیلائز"
+ },
+ "BE": {
+ "name": "بیلجیم"
+ },
+ "BJ": {
+ "name": "بینن"
+ },
+ "IN": {
+ "name": "بھارت"
+ },
+ "BT": {
+ "name": "بھوٹان"
+ },
+ "PG": {
+ "name": "پاپوآ نیو گنی"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PN": {
+ "name": "پٹکائرن جزائر"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PW": {
+ "name": "پلاؤ"
+ },
+ "PA": {
+ "name": "پنامہ"
+ },
+ "PL": {
+ "name": "پولینڈ"
+ },
+ "PY": {
+ "name": "پیراگوئے"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "PR": {
+ "name": "پیورٹو ریکو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TW": {
+ "name": "تائیوان"
+ },
+ "TC": {
+ "name": "ترکس اور کیکاؤس جزائر"
+ },
+ "TM": {
+ "name": "ترکمانستان"
+ },
+ "TR": {
+ "name": "ترکی"
+ },
+ "TT": {
+ "name": "ترینیداد اور ٹوباگو"
+ },
+ "TZ": {
+ "name": "تنزانیہ"
+ },
+ "TL": {
+ "name": "تیمور لیسٹ"
+ },
+ "TN": {
+ "name": "تیونیسیا"
+ },
+ "TH": {
+ "name": "تھائی لینڈ"
+ },
+ "TA": {
+ "name": "ٹرسٹن ڈا کیونہا"
+ },
+ "TK": {
+ "name": "ٹوکیلاؤ"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونگا"
+ },
+ "TV": {
+ "name": "ٹووالو"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجیا"
+ },
+ "GI": {
+ "name": "جبل الطارق"
+ },
+ "DJ": {
+ "name": "جبوتی"
+ },
+ "JE": {
+ "name": "جرسی"
+ },
+ "DE": {
+ "name": "جرمنی"
+ },
+ "JM": {
+ "name": "جمائیکا"
+ },
+ "ZA": {
+ "name": "جنوبی افریقہ"
+ },
+ "GS": {
+ "name": "جنوبی جارجیا اور جنوبی سینڈوچ جزائر"
+ },
+ "SS": {
+ "name": "جنوبی سوڈان"
+ },
+ "KR": {
+ "name": "جنوبی کوریا"
+ },
+ "TD": {
+ "name": "چاڈ"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CZ": {
+ "name": "چیک جمہوریہ"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DG": {
+ "name": "ڈائجو گارسیا"
+ },
+ "DK": {
+ "name": "ڈنمارک"
+ },
+ "DM": {
+ "name": "ڈومنیکا"
+ },
+ "DO": {
+ "name": "ڈومنیکن جمہوریہ"
+ },
+ "RW": {
+ "name": "روانڈا"
+ },
+ "RU": {
+ "name": "روسی"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "ری یونین"
+ },
+ "US": {
+ "name": "ریاستہائے متحدہ"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "ZW": {
+ "name": "زمبابوے"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "SM": {
+ "name": "سان مارینو"
+ },
+ "ST": {
+ "name": "ساؤ ٹوم اور پرنسپے"
+ },
+ "RS": {
+ "name": "سربیا"
+ },
+ "LK": {
+ "name": "سری لنکا"
+ },
+ "SC": {
+ "name": "سشلیز"
+ },
+ "SA": {
+ "name": "سعودی عرب"
+ },
+ "GB": {
+ "name": "سلطنت متحدہ"
+ },
+ "SK": {
+ "name": "سلوواکیہ"
+ },
+ "SI": {
+ "name": "سلووینیا"
+ },
+ "SX": {
+ "name": "سنٹ مارٹن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SZ": {
+ "name": "سوازی لینڈ"
+ },
+ "SJ": {
+ "name": "سوالبرڈ اور جان ماین"
+ },
+ "SD": {
+ "name": "سوڈان"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SB": {
+ "name": "سولومن آئلینڈز"
+ },
+ "CH": {
+ "name": "سوئٹزر لینڈ"
+ },
+ "SE": {
+ "name": "سویڈن"
+ },
+ "BL": {
+ "name": "سینٹ برتھلیمی"
+ },
+ "PM": {
+ "name": "سینٹ پیئر اور میکلیئون"
+ },
+ "KN": {
+ "name": "سینٹ کٹس اور نیویس"
+ },
+ "LC": {
+ "name": "سینٹ لوسیا"
+ },
+ "MF": {
+ "name": "سینٹ مارٹن"
+ },
+ "VC": {
+ "name": "سینٹ ونسنٹ اور گرینیڈائنز"
+ },
+ "SH": {
+ "name": "سینٹ ہیلینا"
+ },
+ "SN": {
+ "name": "سینیگل"
+ },
+ "SL": {
+ "name": "سیئر لیون"
+ },
+ "EA": {
+ "name": "سیئوٹا اور میلیلا"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "شمالی کوریا"
+ },
+ "MP": {
+ "name": "شمالی ماریانا آئلینڈز"
+ },
+ "SO": {
+ "name": "صومالیہ"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GD": {
+ "name": "غرناطہ"
+ },
+ "FK": {
+ "name": "فاکلینڈ جزائر"
+ },
+ "FJ": {
+ "name": "فجی"
+ },
+ "FR": {
+ "name": "فرانس"
+ },
+ "PF": {
+ "name": "فرانسیسی پولینیشیا"
+ },
+ "TF": {
+ "name": "فرانسیسی جنوبی خطے"
+ },
+ "FO": {
+ "name": "فروئی آئلینڈز"
+ },
+ "GF": {
+ "name": "فرینچ گیانا"
+ },
+ "PH": {
+ "name": "فلپائنی"
+ },
+ "PS": {
+ "name": "فلسطینی خطے"
+ },
+ "FI": {
+ "name": "فن لینڈ"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KZ": {
+ "name": "قزاخستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "CG": {
+ "name": "کانگو - برازاویلے"
+ },
+ "CD": {
+ "name": "کانگو - کنشاسا"
+ },
+ "CX": {
+ "name": "کرسمس آئلینڈ"
+ },
+ "KG": {
+ "name": "کرغزستان"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KI": {
+ "name": "کریباتی"
+ },
+ "BQ": {
+ "name": "کریبیائی نیدرلینڈز"
+ },
+ "CK": {
+ "name": "کک آئلینڈز"
+ },
+ "KH": {
+ "name": "کمبوڈیا"
+ },
+ "CI": {
+ "name": "کوٹ ڈی آئیوری"
+ },
+ "CR": {
+ "name": "کوسٹا ریکا"
+ },
+ "XK": {
+ "name": "کوسووو"
+ },
+ "CC": {
+ "name": "کوکوس (کیلنگ) جزائر"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کوموروس"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ ورڈی"
+ },
+ "CM": {
+ "name": "کیمرون"
+ },
+ "KY": {
+ "name": "کیمین آئلینڈز"
+ },
+ "IC": {
+ "name": "کینری آئلینڈز"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CA": {
+ "name": "کینیڈا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "CW": {
+ "name": "کیوراکاؤ"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GL": {
+ "name": "گرین لینڈ"
+ },
+ "GN": {
+ "name": "گنی"
+ },
+ "GW": {
+ "name": "گنی بساؤ"
+ },
+ "GT": {
+ "name": "گواٹے مالا"
+ },
+ "GP": {
+ "name": "گواڈیلوپ"
+ },
+ "GU": {
+ "name": "گوآم"
+ },
+ "GG": {
+ "name": "گوئرنسی"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GA": {
+ "name": "گیبون"
+ },
+ "GH": {
+ "name": "گھانا"
+ },
+ "LA": {
+ "name": "لاؤس"
+ },
+ "LR": {
+ "name": "لائبیریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتھوانیا"
+ },
+ "LV": {
+ "name": "لٹویا"
+ },
+ "LU": {
+ "name": "لگژمبرگ"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "LI": {
+ "name": "لیشٹنسٹائن"
+ },
+ "MQ": {
+ "name": "مارٹینک"
+ },
+ "MH": {
+ "name": "مارشل آئلینڈز"
+ },
+ "MU": {
+ "name": "ماریشس"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MD": {
+ "name": "مالدووا"
+ },
+ "MV": {
+ "name": "مالدیپ"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "FM": {
+ "name": "مائکرونیشیا"
+ },
+ "YT": {
+ "name": "مایوٹ"
+ },
+ "AE": {
+ "name": "متحدہ عرب امارات"
+ },
+ "MG": {
+ "name": "مڈغاسکر"
+ },
+ "MA": {
+ "name": "مراقش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "EH": {
+ "name": "مغربی صحارا"
+ },
+ "MK": {
+ "name": "مقدونیہ"
+ },
+ "MO": {
+ "name": "مکاؤ SAR چین"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "ملیشیا"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریطانیہ"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونٹسیراٹ"
+ },
+ "ME": {
+ "name": "مونٹے نیگرو"
+ },
+ "MM": {
+ "name": "میانمار (برما)"
+ },
+ "MX": {
+ "name": "میکسیکو"
+ },
+ "NF": {
+ "name": "نار فاک آئلینڈ"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NE": {
+ "name": "نائجر"
+ },
+ "NG": {
+ "name": "نائجیریا"
+ },
+ "NI": {
+ "name": "نکاراگووا"
+ },
+ "NR": {
+ "name": "نؤرو"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیدر لینڈز"
+ },
+ "NC": {
+ "name": "نیو کلیڈونیا"
+ },
+ "NZ": {
+ "name": "نیوزی ینڈ"
+ },
+ "NU": {
+ "name": "نیئو"
+ },
+ "VA": {
+ "name": "واٹیکن سٹی"
+ },
+ "CF": {
+ "name": "وسط افریقی جمہوریہ"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "WF": {
+ "name": "ویلیز اور فیوٹیونا"
+ },
+ "VE": {
+ "name": "وینزوئیلا"
+ },
+ "VU": {
+ "name": "وینوآٹو"
+ },
+ "HK": {
+ "name": "ہانگ کانگ SAR چین"
+ },
+ "ES": {
+ "name": "ہسپانیہ"
+ },
+ "HU": {
+ "name": "ہنگری"
+ },
+ "HN": {
+ "name": "ہونڈاروس"
+ },
+ "HT": {
+ "name": "ہیتی"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوئے"
+ },
+ "UA": {
+ "name": "یوکرین"
+ },
+ "UG": {
+ "name": "یوگانڈا"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uz-Cyrl.json b/library/intl/resources/country/uz-Cyrl.json
new file mode 100644
index 000000000..7952cce87
--- /dev/null
+++ b/library/intl/resources/country/uz-Cyrl.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "Австралия"
+ },
+ "AT": {
+ "name": "Австрия"
+ },
+ "VI": {
+ "name": "АҚШ Вирджиния ороллари"
+ },
+ "UM": {
+ "name": "АҚШ ёндош ороллари"
+ },
+ "AX": {
+ "name": "Аланд ороллари"
+ },
+ "AL": {
+ "name": "Албания"
+ },
+ "AS": {
+ "name": "Америка Самоаси"
+ },
+ "AI": {
+ "name": "Ангила"
+ },
+ "AO": {
+ "name": "Ангола"
+ },
+ "AD": {
+ "name": "Андорра"
+ },
+ "AQ": {
+ "name": "Антарктика"
+ },
+ "AG": {
+ "name": "Антигуа ва Барбадос"
+ },
+ "AR": {
+ "name": "Аргентина"
+ },
+ "AM": {
+ "name": "Арманистон"
+ },
+ "AW": {
+ "name": "Аруба"
+ },
+ "AF": {
+ "name": "Афғонистон"
+ },
+ "BS": {
+ "name": "Багама ороллари"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "Барбадос"
+ },
+ "BH": {
+ "name": "Баҳрайн"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BY": {
+ "name": "Белорусия"
+ },
+ "BE": {
+ "name": "Бельгия"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "AE": {
+ "name": "Бирлашган Араб Амирликлари"
+ },
+ "GB": {
+ "name": "Бирлашган Қироллик"
+ },
+ "BG": {
+ "name": "Болгария"
+ },
+ "BO": {
+ "name": "Боливия"
+ },
+ "BA": {
+ "name": "Босния ва Герцеговина"
+ },
+ "BW": {
+ "name": "Ботсванна"
+ },
+ "BR": {
+ "name": "Бразилия"
+ },
+ "VG": {
+ "name": "Британия Вирджиния ороллари"
+ },
+ "IO": {
+ "name": "Британия Ҳинд океани ҳудуди"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-Фасо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "Венгрия"
+ },
+ "VE": {
+ "name": "Венесуэла"
+ },
+ "AC": {
+ "name": "Вознесение ороли"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GM": {
+ "name": "Гамбия"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "Гаяна"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинея"
+ },
+ "GW": {
+ "name": "Гвинея-Бисау"
+ },
+ "GG": {
+ "name": "Гернси"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "Гондурас"
+ },
+ "HK": {
+ "name": "Гонконг Хитой ММҲ"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренландия"
+ },
+ "GR": {
+ "name": "Греция"
+ },
+ "GE": {
+ "name": "Грузия"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "EH": {
+ "name": "Ғарбий Саҳрои Кабир"
+ },
+ "DK": {
+ "name": "Дания"
+ },
+ "JE": {
+ "name": "Джерси"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего Гарсия"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминикан Республикаси"
+ },
+ "DZ": {
+ "name": "Жазоир"
+ },
+ "ZA": {
+ "name": "Жанубий Африка"
+ },
+ "GS": {
+ "name": "Жанубий Джорджия ва Жанубий Сендвич ороллари"
+ },
+ "KR": {
+ "name": "Жанубий Корея"
+ },
+ "SS": {
+ "name": "Жанубий Судан"
+ },
+ "ZM": {
+ "name": "Замбия"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "ID": {
+ "name": "Индонезия"
+ },
+ "JO": {
+ "name": "Иордания"
+ },
+ "IE": {
+ "name": "Ирландия"
+ },
+ "IQ": {
+ "name": "Ироқ"
+ },
+ "IS": {
+ "name": "Исландия"
+ },
+ "ES": {
+ "name": "Испания"
+ },
+ "IL": {
+ "name": "Исроил"
+ },
+ "IT": {
+ "name": "Италия"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KY": {
+ "name": "Кайман ороллари"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар ороллари"
+ },
+ "BQ": {
+ "name": "Кариб Нидерландияси"
+ },
+ "KE": {
+ "name": "Кения"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "Кокос (Килинг) ороллари"
+ },
+ "CO": {
+ "name": "Колумбия"
+ },
+ "KM": {
+ "name": "Комор ороллари"
+ },
+ "CG": {
+ "name": "Конго Браззавиль"
+ },
+ "CD": {
+ "name": "Конго-Киншаса"
+ },
+ "XK": {
+ "name": "Косово"
+ },
+ "CR": {
+ "name": "Коста-Рика"
+ },
+ "CI": {
+ "name": "Кот-д-Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувайт"
+ },
+ "CK": {
+ "name": "Кук ороллари"
+ },
+ "CW": {
+ "name": "Курасао"
+ },
+ "QA": {
+ "name": "Қатар"
+ },
+ "KG": {
+ "name": "Қирғизистон"
+ },
+ "KZ": {
+ "name": "Қозоғистон"
+ },
+ "US": {
+ "name": "Қўшма Штатлар"
+ },
+ "LA": {
+ "name": "Лаос"
+ },
+ "LV": {
+ "name": "Латвия"
+ },
+ "LS": {
+ "name": "Лесото"
+ },
+ "LR": {
+ "name": "Либерия"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "Ливия"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "Люксембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "Мавритания"
+ },
+ "MG": {
+ "name": "Мадагаскар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао Хитой ММҲ"
+ },
+ "MK": {
+ "name": "Македония"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайзия"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив ороллари"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "CF": {
+ "name": "Марказий Африка Республикаси"
+ },
+ "MA": {
+ "name": "Марокаш"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршал ороллари"
+ },
+ "MX": {
+ "name": "Мексика"
+ },
+ "FM": {
+ "name": "Микронезия"
+ },
+ "EG": {
+ "name": "Миср"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MS": {
+ "name": "Монтсеррат"
+ },
+ "MN": {
+ "name": "Муғулистон"
+ },
+ "BL": {
+ "name": "Муқаддас Варфаломей"
+ },
+ "SH": {
+ "name": "Муқаддас Елена ороллари"
+ },
+ "MM": {
+ "name": "Мьянма (Бирма)"
+ },
+ "IM": {
+ "name": "Мэн ороли"
+ },
+ "NA": {
+ "name": "Намибия"
+ },
+ "NR": {
+ "name": "Науру"
+ },
+ "NP": {
+ "name": "Непал"
+ },
+ "NE": {
+ "name": "Нигер"
+ },
+ "NG": {
+ "name": "Нигерия"
+ },
+ "NL": {
+ "name": "Нидерландия"
+ },
+ "NI": {
+ "name": "Никарагуа"
+ },
+ "NU": {
+ "name": "Ниуе"
+ },
+ "NO": {
+ "name": "Норвегия"
+ },
+ "NF": {
+ "name": "Норфолк ороллари"
+ },
+ "AZ": {
+ "name": "Озарбайжон"
+ },
+ "DE": {
+ "name": "Олмония"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Янги Гвинея"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкарин ороллари"
+ },
+ "PK": {
+ "name": "Покистон"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "Португалия"
+ },
+ "PR": {
+ "name": "Пуэрто-Рико"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "CX": {
+ "name": "Рождество ороли"
+ },
+ "RU": {
+ "name": "Россия"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Руминия"
+ },
+ "SJ": {
+ "name": "Савльбард ва Жан Маен"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе ва Принсипи"
+ },
+ "SA": {
+ "name": "Саудия Арабистони"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "EA": {
+ "name": "Сейта ва Мелилла"
+ },
+ "SC": {
+ "name": "Сейшел ороллари"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-Винсент ва Гренадин"
+ },
+ "KN": {
+ "name": "Сент-Китс ва Невис"
+ },
+ "LC": {
+ "name": "Сент-Люсия"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "PM": {
+ "name": "Сент-Пьер ва Микелон"
+ },
+ "RS": {
+ "name": "Сербия"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Маартен"
+ },
+ "SK": {
+ "name": "Словакия"
+ },
+ "SI": {
+ "name": "Словения"
+ },
+ "SB": {
+ "name": "Соломон ороллари"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SY": {
+ "name": "Сурия"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "Танзания"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TJ": {
+ "name": "Тожикистон"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад ва Тобаго"
+ },
+ "TA": {
+ "name": "Тристан де Куна"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "Тунис"
+ },
+ "TR": {
+ "name": "Туркия"
+ },
+ "TM": {
+ "name": "Туркманистон"
+ },
+ "TC": {
+ "name": "Туркс ва Кайкос ороллари"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "OM": {
+ "name": "Уммон"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "WF": {
+ "name": "Уэллис ва Футуна"
+ },
+ "UZ": {
+ "name": "Ўзбекистон"
+ },
+ "PS": {
+ "name": "Фаластин ҳудуди"
+ },
+ "FO": {
+ "name": "Фарер ороллари"
+ },
+ "FJ": {
+ "name": "Фижи ороллари"
+ },
+ "PH": {
+ "name": "Филиппин"
+ },
+ "FI": {
+ "name": "Финляндия"
+ },
+ "FK": {
+ "name": "Фолькленд ороллари"
+ },
+ "FR": {
+ "name": "Франция"
+ },
+ "TF": {
+ "name": "Франция жанубий худудлари"
+ },
+ "GF": {
+ "name": "Француз Гвианаси"
+ },
+ "PF": {
+ "name": "Француз Полинезияси"
+ },
+ "CN": {
+ "name": "Хитой"
+ },
+ "HR": {
+ "name": "Хорватия"
+ },
+ "IN": {
+ "name": "Ҳиндистон"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черногория"
+ },
+ "CZ": {
+ "name": "Чехия Республикаси"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "TL": {
+ "name": "Шарқий-Тимор"
+ },
+ "CH": {
+ "name": "Швейцария"
+ },
+ "SE": {
+ "name": "Швеция"
+ },
+ "KP": {
+ "name": "Шимолий Корея"
+ },
+ "MP": {
+ "name": "Шимолий Марианна ороллари"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваториал Гвинея"
+ },
+ "SV": {
+ "name": "Эль-Сальвадор"
+ },
+ "ER": {
+ "name": "Эритрея"
+ },
+ "IR": {
+ "name": "Эрон"
+ },
+ "EE": {
+ "name": "Эстония"
+ },
+ "ET": {
+ "name": "Эфиопия"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "YE": {
+ "name": "Яман"
+ },
+ "NZ": {
+ "name": "Янги Зеландия"
+ },
+ "NC": {
+ "name": "Янги Каледония"
+ },
+ "JP": {
+ "name": "Япония"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uz.json b/library/intl/resources/country/uz.json
new file mode 100644
index 000000000..9d0ba0099
--- /dev/null
+++ b/library/intl/resources/country/uz.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgʻoniston"
+ },
+ "AX": {
+ "name": "Aland orollari"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "AS": {
+ "name": "Amerika Samoasi"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua va Barbados"
+ },
+ "VI": {
+ "name": "AQSH Virdjiniya orollari"
+ },
+ "UM": {
+ "name": "AQSH yondosh orollari"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armaniston"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "BL": {
+ "name": "Avliyo Varfolomey"
+ },
+ "AU": {
+ "name": "Avstraliya"
+ },
+ "AT": {
+ "name": "Avstriya"
+ },
+ "BS": {
+ "name": "Bagama orollari"
+ },
+ "BH": {
+ "name": "Bahrayn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiya"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BY": {
+ "name": "Belorusiya"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "AE": {
+ "name": "Birlashgan Arab Amirliklari"
+ },
+ "GB": {
+ "name": "Birlashgan Qirollik"
+ },
+ "BG": {
+ "name": "Bolgariya"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosniya va Gertsegovina"
+ },
+ "BW": {
+ "name": "Botsvanna"
+ },
+ "BR": {
+ "name": "Braziliya"
+ },
+ "IO": {
+ "name": "Britaniya Hind okeani hududi"
+ },
+ "VG": {
+ "name": "Britaniya Virdjiniya orollari"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BF": {
+ "name": "Burkina-Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "ME": {
+ "name": "Chernogoriya"
+ },
+ "CZ": {
+ "name": "Chexiya Respublikasi"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "DK": {
+ "name": "Daniya"
+ },
+ "DG": {
+ "name": "Diyego Garsiya"
+ },
+ "JE": {
+ "name": "Djersi"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikan Respublikasi"
+ },
+ "ET": {
+ "name": "Efiopiya"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorial Gvineya"
+ },
+ "ER": {
+ "name": "Eritreya"
+ },
+ "IR": {
+ "name": "Eron"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "PS": {
+ "name": "Falastin hududi"
+ },
+ "FO": {
+ "name": "Farer orollari"
+ },
+ "FJ": {
+ "name": "Fiji orollari"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlyandiya"
+ },
+ "FK": {
+ "name": "Folklend orollari"
+ },
+ "FR": {
+ "name": "Fransiya"
+ },
+ "TF": {
+ "name": "Frantsiya janubiy xududlari"
+ },
+ "GF": {
+ "name": "Frantsuz Gvianasi"
+ },
+ "PF": {
+ "name": "Frantsuz Polineziyasi"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "HT": {
+ "name": "Gaiti"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "DE": {
+ "name": "Germaniya"
+ },
+ "GG": {
+ "name": "Gernsi"
+ },
+ "EH": {
+ "name": "Gʻarbiy Sahroi Kabir"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "HN": {
+ "name": "Gonduras"
+ },
+ "HK": {
+ "name": "Gonkong Xitoy MMH"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandiya"
+ },
+ "GR": {
+ "name": "Gretsiya"
+ },
+ "GE": {
+ "name": "Gruziya"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineya"
+ },
+ "GW": {
+ "name": "Gvineya-Bisau"
+ },
+ "IN": {
+ "name": "Hindiston"
+ },
+ "ID": {
+ "name": "Indoneziya"
+ },
+ "JO": {
+ "name": "Iordaniya"
+ },
+ "IE": {
+ "name": "Irlandiya"
+ },
+ "IQ": {
+ "name": "Iroq"
+ },
+ "IS": {
+ "name": "Islandiya"
+ },
+ "ES": {
+ "name": "Ispaniya"
+ },
+ "IL": {
+ "name": "Isroil"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "ZA": {
+ "name": "Janubi-Afrika"
+ },
+ "GS": {
+ "name": "Janubiy Djordjiya va Janubiy Sendvich orollari"
+ },
+ "KR": {
+ "name": "Janubiy Koreya"
+ },
+ "SS": {
+ "name": "Janubiy Sudan"
+ },
+ "DZ": {
+ "name": "Jazoir"
+ },
+ "CV": {
+ "name": "Kabo-Verde"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanar orollari"
+ },
+ "BQ": {
+ "name": "Karib Niderlandiyasi"
+ },
+ "KY": {
+ "name": "Kayman orollari"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "CY": {
+ "name": "Kipr"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Kiling) orollari"
+ },
+ "CO": {
+ "name": "Kolumbiya"
+ },
+ "KM": {
+ "name": "Komor orollari"
+ },
+ "CG": {
+ "name": "Kongo Brazzavil"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta-Rika"
+ },
+ "CI": {
+ "name": "Kot-d-Ivuar"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuk orollari"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LB": {
+ "name": "Livan"
+ },
+ "LY": {
+ "name": "Liviya"
+ },
+ "LI": {
+ "name": "Lixtenshteyn"
+ },
+ "LU": {
+ "name": "Lyuksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makao Xitoy MMH"
+ },
+ "MK": {
+ "name": "Makedoniya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MY": {
+ "name": "Malayziya"
+ },
+ "MV": {
+ "name": "Maldiv orollari"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "CF": {
+ "name": "Markaziy Afrika Respublikasi"
+ },
+ "MA": {
+ "name": "Marokash"
+ },
+ "MH": {
+ "name": "Marshal orollari"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Mavrikiy"
+ },
+ "MR": {
+ "name": "Mavritaniya"
+ },
+ "YT": {
+ "name": "Mayotta"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Men oroli"
+ },
+ "FM": {
+ "name": "Mikroneziya"
+ },
+ "EG": {
+ "name": "Misr"
+ },
+ "MN": {
+ "name": "Mo‘g‘uliston"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "SH": {
+ "name": "Muqaddas Yelena orollari"
+ },
+ "MM": {
+ "name": "Myanma (Birma)"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niderlandiya"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niuye"
+ },
+ "NF": {
+ "name": "Norfolk orollari"
+ },
+ "NO": {
+ "name": "Norvegiya"
+ },
+ "UZ": {
+ "name": "Oʻzbekiston"
+ },
+ "OM": {
+ "name": "Omon"
+ },
+ "AZ": {
+ "name": "Ozarbayjon"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yangi Gvineya"
+ },
+ "PY": {
+ "name": "Paragvay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkarin orollari"
+ },
+ "PK": {
+ "name": "Pokiston"
+ },
+ "PL": {
+ "name": "Polsha"
+ },
+ "PT": {
+ "name": "Portugaliya"
+ },
+ "PR": {
+ "name": "Puerto-Riko"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KG": {
+ "name": "Qirgʻiziston"
+ },
+ "US": {
+ "name": "Qoʻshma Shtatlar"
+ },
+ "KZ": {
+ "name": "Qozogʻiston"
+ },
+ "KW": {
+ "name": "Quveyt"
+ },
+ "RE": {
+ "name": "Reyunon"
+ },
+ "CX": {
+ "name": "Rojdestvo oroli"
+ },
+ "RU": {
+ "name": "Rossiya"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Ruminiya"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "ST": {
+ "name": "San-Tome va Prinsipi"
+ },
+ "SA": {
+ "name": "Saudiya Arabistoni"
+ },
+ "SJ": {
+ "name": "Savlbard va Jan Mayen"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent-Kits va Nevis"
+ },
+ "LC": {
+ "name": "Sent-Lyusiya"
+ },
+ "MF": {
+ "name": "Sent-Martin"
+ },
+ "PM": {
+ "name": "Sent-Pyer va Mikelon"
+ },
+ "VC": {
+ "name": "Sent-Vinsent va Grenadin"
+ },
+ "RS": {
+ "name": "Serbiya"
+ },
+ "SC": {
+ "name": "Seyshel orollari"
+ },
+ "EA": {
+ "name": "Seyta va Melilla"
+ },
+ "TL": {
+ "name": "Sharqiy-Timor"
+ },
+ "KP": {
+ "name": "Shimoliy Koreya"
+ },
+ "MP": {
+ "name": "Shimoliy Marianna orollari"
+ },
+ "LK": {
+ "name": "Shri-Lanka"
+ },
+ "SE": {
+ "name": "Shvetsiya"
+ },
+ "CH": {
+ "name": "Shveysariya"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Martin"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SB": {
+ "name": "Solomon orollari"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriya"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SL": {
+ "name": "Syerra-Leone"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TJ": {
+ "name": "Tojikiston"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad va Tobago"
+ },
+ "TA": {
+ "name": "Tristan de Kuna"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TR": {
+ "name": "Turkiya"
+ },
+ "TM": {
+ "name": "Turkmaniston"
+ },
+ "TC": {
+ "name": "Turks va Kaykos orollari"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "WF": {
+ "name": "Uellis va Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugvay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "HU": {
+ "name": "Vengriya"
+ },
+ "AC": {
+ "name": "Vozneseniye oroli"
+ },
+ "VN": {
+ "name": "Vyetnam"
+ },
+ "CN": {
+ "name": "Xitoy"
+ },
+ "HR": {
+ "name": "Xorvatiya"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "JM": {
+ "name": "Yamayka"
+ },
+ "NC": {
+ "name": "Yangi Kaledoniya"
+ },
+ "NZ": {
+ "name": "Yangi Zelandiya"
+ },
+ "JP": {
+ "name": "Yaponiya"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vai-Latn.json b/library/intl/resources/country/vai-Latn.json
new file mode 100644
index 000000000..c03ea40b4
--- /dev/null
+++ b/library/intl/resources/country/vai-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Abhaniya"
+ },
+ "AF": {
+ "name": "Afigándesitaŋ"
+ },
+ "ZA": {
+ "name": "Afirika Kɔi Leŋŋɛ Lɔ"
+ },
+ "CF": {
+ "name": "Áfíríka Lumaã Tɛ Boloe"
+ },
+ "DZ": {
+ "name": "Agiriya"
+ },
+ "IS": {
+ "name": "Áisi Lumaã"
+ },
+ "AR": {
+ "name": "Ajɛŋtína"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AM": {
+ "name": "Améniya"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AD": {
+ "name": "Aŋdóra"
+ },
+ "AI": {
+ "name": "Aŋgíla"
+ },
+ "AO": {
+ "name": "Aŋgóla"
+ },
+ "AG": {
+ "name": "Aŋtígwa Ɓahabhuda"
+ },
+ "IE": {
+ "name": "Áre Lumaã"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "CD": {
+ "name": "Avorekoo"
+ },
+ "AZ": {
+ "name": "Azabhaijaŋ"
+ },
+ "BS": {
+ "name": "Bahámasi"
+ },
+ "BB": {
+ "name": "Bhabhedo"
+ },
+ "BD": {
+ "name": "Bhangiladɛ̀shi"
+ },
+ "IL": {
+ "name": "Bhanísiláila"
+ },
+ "BH": {
+ "name": "Bharɛŋ"
+ },
+ "BZ": {
+ "name": "Bheliz"
+ },
+ "BE": {
+ "name": "Bhɛgiyɔŋ"
+ },
+ "BY": {
+ "name": "Bhɛlarusi"
+ },
+ "BM": {
+ "name": "Bhɛmuda"
+ },
+ "BJ": {
+ "name": "Bhɛni"
+ },
+ "BF": {
+ "name": "Bhokina Fáso"
+ },
+ "BO": {
+ "name": "Bholiviya"
+ },
+ "BW": {
+ "name": "Bhosuwana"
+ },
+ "BG": {
+ "name": "Bhɔgeriya"
+ },
+ "BA": {
+ "name": "Bhɔsiniya"
+ },
+ "BR": {
+ "name": "Bhurazeli"
+ },
+ "BI": {
+ "name": "Bhurundi"
+ },
+ "BN": {
+ "name": "Bhurunɛĩ"
+ },
+ "BT": {
+ "name": "Bhutaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chádi"
+ },
+ "CN": {
+ "name": "Cháína"
+ },
+ "CL": {
+ "name": "Chéli"
+ },
+ "CZ": {
+ "name": "Chɛki Boloe"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimaha"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domíiníka"
+ },
+ "DO": {
+ "name": "Domíiníka Ɓoloe"
+ },
+ "GQ": {
+ "name": "Dúúnyá Tɛ Giini"
+ },
+ "EC": {
+ "name": "Ɛ́kúwédɔ"
+ },
+ "SV": {
+ "name": "Ɛlɛ Sávádɔ"
+ },
+ "ER": {
+ "name": "Ɛritera"
+ },
+ "EE": {
+ "name": "Ɛsitóninya"
+ },
+ "FK": {
+ "name": "Fáháki Luma Tiŋŋɛ"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Félepiŋ"
+ },
+ "FR": {
+ "name": "Fɛŋsi"
+ },
+ "GF": {
+ "name": "Fɛŋsi Giwana"
+ },
+ "PF": {
+ "name": "Fɛŋsi Polinísiya"
+ },
+ "FJ": {
+ "name": "Fíji"
+ },
+ "FI": {
+ "name": "Fiŋlɛŋ"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabhɔŋ"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "SL": {
+ "name": "Gbeya Bahawɔ"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bhisawo"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurinéda"
+ },
+ "GP": {
+ "name": "Guwadelupe"
+ },
+ "GU": {
+ "name": "Guwami"
+ },
+ "GT": {
+ "name": "Guwatɛmala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Háiti"
+ },
+ "GR": {
+ "name": "Hɛlɛŋ"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndura"
+ },
+ "HU": {
+ "name": "Hɔ́ngare"
+ },
+ "IN": {
+ "name": "Índiya"
+ },
+ "ID": {
+ "name": "Índonisiya"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Ítali"
+ },
+ "ET": {
+ "name": "Ítiyópiya"
+ },
+ "DE": {
+ "name": "Jamáĩ"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "GL": {
+ "name": "Jamba Kuwa Lumaã"
+ },
+ "JP": {
+ "name": "Japaŋ"
+ },
+ "VG": {
+ "name": "Jengéesi Bhɛɛ Lɔ Musu Tiŋŋɛ"
+ },
+ "IO": {
+ "name": "Jengéesi Gbawoe Índiya Kɔiyɛ Lɔ"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibhurata"
+ },
+ "DJ": {
+ "name": "Jibhuti"
+ },
+ "JO": {
+ "name": "Jɔɔdaŋ"
+ },
+ "GE": {
+ "name": "Jɔɔjiya"
+ },
+ "NC": {
+ "name": "Kalidoninya Námaá"
+ },
+ "CM": {
+ "name": "Kameruŋ"
+ },
+ "CA": {
+ "name": "Kánáda"
+ },
+ "KH": {
+ "name": "Kaŋbhodiya"
+ },
+ "QA": {
+ "name": "Kataha"
+ },
+ "KZ": {
+ "name": "Kazasitaŋ"
+ },
+ "KY": {
+ "name": "Keemaŋ Tiŋŋɛ"
+ },
+ "KE": {
+ "name": "Kénya"
+ },
+ "CV": {
+ "name": "Kepi Vɛdi Tiŋŋɛ"
+ },
+ "KG": {
+ "name": "Kigisitaŋ"
+ },
+ "KI": {
+ "name": "Kiribhati"
+ },
+ "CU": {
+ "name": "Kiyubha"
+ },
+ "CI": {
+ "name": "Kódivówa"
+ },
+ "CK": {
+ "name": "Kóki Tiŋŋɛ"
+ },
+ "KM": {
+ "name": "Komorosi"
+ },
+ "CG": {
+ "name": "Kóngo"
+ },
+ "HR": {
+ "name": "Koresiya"
+ },
+ "KP": {
+ "name": "Koriya Kɔi Kaŋndɔ"
+ },
+ "KR": {
+ "name": "Koriya Kɔi Leŋŋɛ Lɔ"
+ },
+ "CR": {
+ "name": "Kósíta Ríko"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MP": {
+ "name": "Kɔi Kaŋndɔ Mariyana Tiŋŋɛ"
+ },
+ "CO": {
+ "name": "Kɔlɔmbiya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "SA": {
+ "name": "Lahabu"
+ },
+ "LR": {
+ "name": "Laibhiya"
+ },
+ "LV": {
+ "name": "Lativiya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "Lebhanɔ"
+ },
+ "LY": {
+ "name": "Lebhiya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LS": {
+ "name": "Lisóto"
+ },
+ "LT": {
+ "name": "Lituweninya"
+ },
+ "LU": {
+ "name": "Lusimbɔ"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasita"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MV": {
+ "name": "Malidavi"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MK": {
+ "name": "Masedoninya"
+ },
+ "MH": {
+ "name": "Masha Tiŋŋɛ"
+ },
+ "MQ": {
+ "name": "Matiniki"
+ },
+ "YT": {
+ "name": "Mavote"
+ },
+ "MX": {
+ "name": "Mɛsíko"
+ },
+ "FM": {
+ "name": "Mikonisiya"
+ },
+ "EG": {
+ "name": "Míséla"
+ },
+ "MM": {
+ "name": "Miyamaha"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MD": {
+ "name": "Mɔlidova"
+ },
+ "MC": {
+ "name": "Mɔnako"
+ },
+ "MN": {
+ "name": "Mɔngoliya"
+ },
+ "MU": {
+ "name": "Mɔreshɔ"
+ },
+ "MR": {
+ "name": "Mɔretaninya"
+ },
+ "MA": {
+ "name": "Mɔroko"
+ },
+ "MS": {
+ "name": "Mɔserati"
+ },
+ "NE": {
+ "name": "Naĩja"
+ },
+ "NG": {
+ "name": "Naĩjiriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NP": {
+ "name": "Nepa"
+ },
+ "NL": {
+ "name": "Nidɔlɛŋ"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niwe"
+ },
+ "NR": {
+ "name": "Noru"
+ },
+ "NF": {
+ "name": "Nɔfɔ Tiŋŋɛ"
+ },
+ "NO": {
+ "name": "Nɔɔwe"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "AT": {
+ "name": "Ɔ́situwa"
+ },
+ "AU": {
+ "name": "Ɔsituwéeliya"
+ },
+ "PK": {
+ "name": "Pakisitaŋ"
+ },
+ "PS": {
+ "name": "Palesitininya Tele Jii Kɔiyɛ lá hĩ Gaza"
+ },
+ "PW": {
+ "name": "Palo"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "ES": {
+ "name": "Panyɛĩ"
+ },
+ "PG": {
+ "name": "Papuwa Gini Námaá"
+ },
+ "PY": {
+ "name": "Paragɔe"
+ },
+ "PE": {
+ "name": "Pɛru"
+ },
+ "PN": {
+ "name": "Pitikɛŋ"
+ },
+ "PR": {
+ "name": "Piyuto Riko"
+ },
+ "PL": {
+ "name": "Pólɛŋ"
+ },
+ "US": {
+ "name": "Poo"
+ },
+ "VI": {
+ "name": "Poo Bhɛɛ lɔ Musu Tiŋŋɛ"
+ },
+ "AS": {
+ "name": "Poo Sambowa"
+ },
+ "PT": {
+ "name": "Potokíi"
+ },
+ "RW": {
+ "name": "Rawunda"
+ },
+ "RE": {
+ "name": "Renyɔɔ̃"
+ },
+ "RO": {
+ "name": "Romininya"
+ },
+ "RU": {
+ "name": "Rɔshiya"
+ },
+ "CY": {
+ "name": "Saɛpurɔ"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "SM": {
+ "name": "Saŋ Marindo"
+ },
+ "ST": {
+ "name": "Sawo Tombe ɓɛ a Gbawoe"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seshɛɛ"
+ },
+ "SG": {
+ "name": "Síingapoo"
+ },
+ "SN": {
+ "name": "Sinigaha"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SH": {
+ "name": "Siŋ Hɛlina"
+ },
+ "KN": {
+ "name": "Siŋ Kisi ɓɛ́ Nevisi"
+ },
+ "LC": {
+ "name": "Siŋ Lusiya"
+ },
+ "PM": {
+ "name": "Siŋ Piiyɛ ɓɛ́ Mikelɔŋ"
+ },
+ "VC": {
+ "name": "Siŋ Viŋsi"
+ },
+ "SY": {
+ "name": "Síyaŋ"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudɛŋ"
+ },
+ "SB": {
+ "name": "Sulaimaãna Tiŋŋɛ"
+ },
+ "SK": {
+ "name": "Sulovakiya"
+ },
+ "SI": {
+ "name": "Suloveninya"
+ },
+ "LK": {
+ "name": "Suri Laŋka"
+ },
+ "SR": {
+ "name": "Surinambe"
+ },
+ "SZ": {
+ "name": "Suwazi Lumaã"
+ },
+ "CH": {
+ "name": "Suweza Lumaã"
+ },
+ "SE": {
+ "name": "Suwidɛŋ"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tai Lumaã"
+ },
+ "TW": {
+ "name": "Taiwaŋ"
+ },
+ "TJ": {
+ "name": "Tajikisitaŋ"
+ },
+ "TZ": {
+ "name": "Taŋzaninya"
+ },
+ "TL": {
+ "name": "Tele Ɓɔ́ Timɔɔ̃"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tɔnga"
+ },
+ "TR": {
+ "name": "Tɔ́ɔ́ki"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tukimɛnisitaŋ"
+ },
+ "TC": {
+ "name": "Tukisi ɓɛ̀ Kaikóosi Tiŋŋɛ"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TT": {
+ "name": "Turindeda ɓɛ́ Tobhego"
+ },
+ "TV": {
+ "name": "Tuválu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanuwátu"
+ },
+ "VA": {
+ "name": "Vatikaŋ Ɓoloe"
+ },
+ "VE": {
+ "name": "Vɛnɛzuwela"
+ },
+ "VN": {
+ "name": "Viyanami"
+ },
+ "WF": {
+ "name": "Walísi"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemɛni"
+ },
+ "UZ": {
+ "name": "Yubhɛkisitaŋ"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukuréŋ"
+ },
+ "AE": {
+ "name": "Yunaitɛ Arabhi Ɛmire"
+ },
+ "GB": {
+ "name": "Yunaitɛ Kíŋdɔŋ"
+ },
+ "UY": {
+ "name": "Yuwegɔwe"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "NZ": {
+ "name": "Zilɛŋ Námaá"
+ },
+ "ZW": {
+ "name": "Zimbabhuwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vai.json b/library/intl/resources/country/vai.json
new file mode 100644
index 000000000..108a35283
--- /dev/null
+++ b/library/intl/resources/country/vai.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ER": {
+ "name": "ꔀꔸꔳꕟ"
+ },
+ "BZ": {
+ "name": "ꔆꔷꔘ"
+ },
+ "SL": {
+ "name": "ꔋꕩ ꕒꕌꖺ ꕸꖃꔀ"
+ },
+ "TL": {
+ "name": "ꔎꔒ ꗃ ꔳꗞꖻ"
+ },
+ "LY": {
+ "name": "ꔒꔫꕩ"
+ },
+ "LB": {
+ "name": "ꔒꕑꗟꘋ"
+ },
+ "RE": {
+ "name": "ꔓꗠꖻ"
+ },
+ "SC": {
+ "name": "ꔖꗼꔷ"
+ },
+ "CL": {
+ "name": "ꔚꔷ"
+ },
+ "IO": {
+ "name": "ꔛꔟꔻ ꔤꔺꕩ ꗛꔤꘂ ꕗꕴꔀ ꕮ"
+ },
+ "VG": {
+ "name": "ꔛꔟꔻ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣ"
+ },
+ "JP": {
+ "name": "ꔛꗨꗢ"
+ },
+ "YE": {
+ "name": "ꔝꘈꘋ"
+ },
+ "KY": {
+ "name": "ꔞꔀꕮꘋ ꔳꘋꗣ"
+ },
+ "CV": {
+ "name": "ꔞꔪ ꗲꔵ ꔳꘋꗣ"
+ },
+ "KE": {
+ "name": "ꔞꕰ"
+ },
+ "ET": {
+ "name": "ꔤꔳꖎꔪꕩ"
+ },
+ "IN": {
+ "name": "ꔤꔺꕩ"
+ },
+ "IT": {
+ "name": "ꔤꕚꔷ"
+ },
+ "IQ": {
+ "name": "ꔤꕟꕃ"
+ },
+ "IR": {
+ "name": "ꔤꕟꘋ"
+ },
+ "ID": {
+ "name": "ꔤꖆꕇꔻꕩ"
+ },
+ "PN": {
+ "name": "ꔪꔳꕪꕆ"
+ },
+ "PR": {
+ "name": "ꔪꖳꕿ ꔸꖏ"
+ },
+ "PH": {
+ "name": "ꔱꔒꔪꘋ"
+ },
+ "FJ": {
+ "name": "ꔱꔤꕀ"
+ },
+ "FI": {
+ "name": "ꔱꘋ ꖨꕮꕊ"
+ },
+ "LS": {
+ "name": "ꔷꖇꕿ"
+ },
+ "LT": {
+ "name": "ꔷꖤꔃꕇꕰ"
+ },
+ "LI": {
+ "name": "ꔷꗿꘋꔻꗳꘋ"
+ },
+ "SN": {
+ "name": "ꔻꕇꕭꕌ"
+ },
+ "SY": {
+ "name": "ꔻꕩꘋ"
+ },
+ "SG": {
+ "name": "ꔻꕬꕶꕱ"
+ },
+ "SI": {
+ "name": "ꔻꖃꔍꕇꕰ"
+ },
+ "SK": {
+ "name": "ꔻꖃꕙꕃꕩ"
+ },
+ "PM": {
+ "name": "ꔻꘋ ꔪꘂ ꗪ ꕆꔞꗏꘋ"
+ },
+ "VC": {
+ "name": "ꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸ"
+ },
+ "KN": {
+ "name": "ꔻꘋ ꕃꔳꔻ ꗪ ꔕꔲꔻ"
+ },
+ "LC": {
+ "name": "ꔻꘋ ꖨꔻꕩ"
+ },
+ "SH": {
+ "name": "ꔻꘋ ꗥꔷꕯ"
+ },
+ "NZ": {
+ "name": "ꔽꔤ ꖨꕮ ꕯꕮꕊ"
+ },
+ "ZW": {
+ "name": "ꔽꕓꖜꔃ"
+ },
+ "DJ": {
+ "name": "ꕀꖜꔳ"
+ },
+ "GI": {
+ "name": "ꕀꖜꕟꕚ"
+ },
+ "KI": {
+ "name": "ꕃꔸꕑꔳ"
+ },
+ "KG": {
+ "name": "ꕃꕅꔻꕚꘋ"
+ },
+ "CU": {
+ "name": "ꕃꖳꕑ"
+ },
+ "GN": {
+ "name": "ꕅꔤꕇ"
+ },
+ "GW": {
+ "name": "ꕅꔤꕇ ꔫꕢꕴ"
+ },
+ "EG": {
+ "name": "ꕆꔖꕞ"
+ },
+ "MM": {
+ "name": "ꕆꕩꘋꕮ"
+ },
+ "FM": {
+ "name": "ꕆꖏꕇꔻꕩ"
+ },
+ "NP": {
+ "name": "ꕇꕐꔷ"
+ },
+ "NI": {
+ "name": "ꕇꕪꕟꖶꕎ"
+ },
+ "IE": {
+ "name": "ꕉꔓ ꖨꕮꕊ"
+ },
+ "IS": {
+ "name": "ꕉꔤꔻ ꖨꕮꕊ"
+ },
+ "ZA": {
+ "name": "ꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀ"
+ },
+ "CF": {
+ "name": "ꕉꔱꔸꕪ ꗳ ꗳ ꕸꖃꔀ"
+ },
+ "AF": {
+ "name": "ꕉꔱꕭꔕꔻꕚꘋ"
+ },
+ "DZ": {
+ "name": "ꕉꔷꔠꔸꕩ"
+ },
+ "AL": {
+ "name": "ꕉꔷꕑꕇꕩ"
+ },
+ "AI": {
+ "name": "ꕉꕄꕞ"
+ },
+ "AM": {
+ "name": "ꕉꕆꕯ"
+ },
+ "AZ": {
+ "name": "ꕉꕤꕑꔤꕧꘋ"
+ },
+ "AD": {
+ "name": "ꕉꖆꕟ"
+ },
+ "AO": {
+ "name": "ꕉꖐꕞ"
+ },
+ "AW": {
+ "name": "ꕉꖩꕑ"
+ },
+ "AR": {
+ "name": "ꕉꘀꘋꔳꕯ"
+ },
+ "AG": {
+ "name": "ꕉꘋꔳꖶꕎ ꗪ ꕑꖜꕜ"
+ },
+ "HT": {
+ "name": "ꕌꔤꔳ"
+ },
+ "WF": {
+ "name": "ꕎꔷꔻ ꗪ ꖢꖤꕯ"
+ },
+ "PS": {
+ "name": "ꕐꔒꔻꔳꕯ ꔎꔒ ꕀꔤ ꗛꔤ ꕞ ꗱ ꗪ ꕭꕌꕤ"
+ },
+ "PK": {
+ "name": "ꕐꕃꔻꕚꘋ"
+ },
+ "PY": {
+ "name": "ꕐꕟꗝꔀ"
+ },
+ "PA": {
+ "name": "ꕐꕯꕮ"
+ },
+ "PW": {
+ "name": "ꕐꖃ"
+ },
+ "PG": {
+ "name": "ꕐꖛꕎ ꕅꔤꕇ ꕯꕮꕊ"
+ },
+ "ES": {
+ "name": "ꕐꘊꔧ"
+ },
+ "BB": {
+ "name": "ꕑꔆꖁꔻ"
+ },
+ "BD": {
+ "name": "ꕑꕅꕞꗵꔼ"
+ },
+ "IL": {
+ "name": "ꕑꕇꔻꕞꔤꕞ"
+ },
+ "BS": {
+ "name": "ꕑꕌꕮꔻ"
+ },
+ "BH": {
+ "name": "ꕑꗸꘋ"
+ },
+ "FK": {
+ "name": "ꕘꔷꕃ ꖨꕮ ꔳꘋꗣ"
+ },
+ "VE": {
+ "name": "ꕙꔳꕪꘋ ꕸꖃꔀ"
+ },
+ "VU": {
+ "name": "ꕙꖸꕎꖤ"
+ },
+ "TH": {
+ "name": "ꕚꔤ ꖨꕮꕊ"
+ },
+ "TW": {
+ "name": "ꕚꔤꕎꘋ"
+ },
+ "TJ": {
+ "name": "ꕚꕀꕃꔻꕚꘋ"
+ },
+ "TV": {
+ "name": "ꕚꖣꖨ"
+ },
+ "TZ": {
+ "name": "ꕚꘋꕤꕇꕰ"
+ },
+ "DK": {
+ "name": "ꕜꕇꕮꕃ"
+ },
+ "LR": {
+ "name": "ꕞꔤꔫꕩ"
+ },
+ "LV": {
+ "name": "ꕞꔳꔲꕩ"
+ },
+ "SA": {
+ "name": "ꕞꕌꖝ ꕸꖃꔀ"
+ },
+ "LA": {
+ "name": "ꕞꕴꔻ"
+ },
+ "RW": {
+ "name": "ꕟꖙꕡ"
+ },
+ "ST": {
+ "name": "ꕢꕴ ꕿꔈ ꗪ ꕉ ꕮꔧ ꕗꕴꔀ"
+ },
+ "WS": {
+ "name": "ꕢꕹꖙꕉ"
+ },
+ "CY": {
+ "name": "ꕢꗡꖛꗐꔻ"
+ },
+ "ZM": {
+ "name": "ꕤꔭꕩ"
+ },
+ "CN": {
+ "name": "ꕦꔤꕯ"
+ },
+ "TD": {
+ "name": "ꕦꔵ"
+ },
+ "GL": {
+ "name": "ꕧꕓ ꖴꕎ ꖨꕮꕊ"
+ },
+ "DE": {
+ "name": "ꕧꕮꔧ"
+ },
+ "JM": {
+ "name": "ꕧꕮꔧꕪ"
+ },
+ "CM": {
+ "name": "ꕪꔈꖩꘋ"
+ },
+ "NC": {
+ "name": "ꕪꔷꖁꕇꕰ ꕯꕮꕊ"
+ },
+ "QA": {
+ "name": "ꕪꕚꕌ"
+ },
+ "KZ": {
+ "name": "ꕪꕤꔻꕚꘋ"
+ },
+ "CA": {
+ "name": "ꕪꕯꕜ"
+ },
+ "KH": {
+ "name": "ꕪꕹꔵꕩ"
+ },
+ "GM": {
+ "name": "ꕭꔭꕩ"
+ },
+ "GH": {
+ "name": "ꕭꕌꕯ"
+ },
+ "GA": {
+ "name": "ꕭꕷꘋ"
+ },
+ "MY": {
+ "name": "ꕮꔒꔻꕩ"
+ },
+ "MK": {
+ "name": "ꕮꔖꖁꕇꕰ"
+ },
+ "MQ": {
+ "name": "ꕮꔳꕇꕃ"
+ },
+ "ML": {
+ "name": "ꕮꔷ"
+ },
+ "MV": {
+ "name": "ꕮꔷꕜꔍ"
+ },
+ "SM": {
+ "name": "ꕮꔸꖆ ꕢꘋ"
+ },
+ "MT": {
+ "name": "ꕮꕊꕚ"
+ },
+ "MH": {
+ "name": "ꕮꕊꕣ ꔳꘋꗣ"
+ },
+ "MG": {
+ "name": "ꕮꕜꕭꔻꕪ"
+ },
+ "MW": {
+ "name": "ꕮꕞꕌꔨ"
+ },
+ "YT": {
+ "name": "ꕮꗚꔎ"
+ },
+ "NG": {
+ "name": "ꕯꔤꕀꔸꕩ"
+ },
+ "NE": {
+ "name": "ꕯꔤꕧ"
+ },
+ "NA": {
+ "name": "ꕯꕆꔫꕩ"
+ },
+ "OM": {
+ "name": "ꕱꕮꘋ"
+ },
+ "US": {
+ "name": "ꕶꕱ"
+ },
+ "AS": {
+ "name": "ꕶꕱ ꕢꕹꕎ"
+ },
+ "VI": {
+ "name": "ꕶꕱ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣ"
+ },
+ "PT": {
+ "name": "ꕶꕿꕃꔤ ꕸꖃꔀ"
+ },
+ "PL": {
+ "name": "ꕶꗷꘋ"
+ },
+ "BO": {
+ "name": "ꕷꔷꔲꕩ"
+ },
+ "BA": {
+ "name": "ꕷꔻꕇꕰ ꗪ ꗥꕤꖑꔲꕯ"
+ },
+ "BF": {
+ "name": "ꕷꕃꕯ ꕘꖇ"
+ },
+ "BW": {
+ "name": "ꕷꖬꕎꕯ"
+ },
+ "MZ": {
+ "name": "ꕹꕤꔭꕃ"
+ },
+ "TK": {
+ "name": "ꕿꔞꖃ"
+ },
+ "TG": {
+ "name": "ꕿꖑ"
+ },
+ "DM": {
+ "name": "ꖁꕆꕇꕪ"
+ },
+ "DO": {
+ "name": "ꖁꕆꕇꕪꘋ ꕸꕱꔀ"
+ },
+ "RO": {
+ "name": "ꖄꕆꕇꕰ"
+ },
+ "NR": {
+ "name": "ꖆꖩ"
+ },
+ "SO": {
+ "name": "ꖇꕮꔷꕩ"
+ },
+ "HR": {
+ "name": "ꖏꔓꔻꕩ"
+ },
+ "CI": {
+ "name": "ꖏꔳ ꕾꕎ"
+ },
+ "KR": {
+ "name": "ꖏꔸꕩ ꗛꔤ ꔒꘋꗣ ꗏ"
+ },
+ "KP": {
+ "name": "ꖏꔸꕩ ꗛꔤ ꕪꘋꗒ"
+ },
+ "CR": {
+ "name": "ꖏꔻꕚ ꔸꕪ"
+ },
+ "CK": {
+ "name": "ꖏꕃ ꔳꘋꗣ"
+ },
+ "KM": {
+ "name": "ꖏꕹꖄꔻ"
+ },
+ "CG": {
+ "name": "ꖏꖐ"
+ },
+ "CD": {
+ "name": "ꖏꖐ ꗵꗞꖴꕟꔎ ꕸꖃꔀ"
+ },
+ "MD": {
+ "name": "ꖒꔷꖁꕙ"
+ },
+ "GB": {
+ "name": "ꖕꕯꔤꗳ"
+ },
+ "BT": {
+ "name": "ꖜꕚꘋ"
+ },
+ "BR": {
+ "name": "ꖜꕟꔘꔀ"
+ },
+ "BI": {
+ "name": "ꖜꖩꔺ"
+ },
+ "BN": {
+ "name": "ꖜꖩꘉꔧ"
+ },
+ "FR": {
+ "name": "ꖢꕟꘋꔻ"
+ },
+ "TT": {
+ "name": "ꖤꔸꔕꕜ ꗪ ꕿꔆꖑ"
+ },
+ "TN": {
+ "name": "ꖤꕇꔻꕩ"
+ },
+ "GQ": {
+ "name": "ꖦꕰꕊ ꗳ ꕅꔤꕇ"
+ },
+ "CH": {
+ "name": "ꖬꔃꕤ ꖨꕮꕊ"
+ },
+ "SE": {
+ "name": "ꖬꔨꗵꘋ"
+ },
+ "LK": {
+ "name": "ꖬꔸ ꕞꘋꕪ"
+ },
+ "SR": {
+ "name": "ꖬꔸꕯꔈ"
+ },
+ "SZ": {
+ "name": "ꖬꕎꔽ ꖨꕮꕊ"
+ },
+ "SB": {
+ "name": "ꖬꕞꔤꕮꕊꕯ ꔳꘋꗣ"
+ },
+ "SD": {
+ "name": "ꖬꗵꘋ"
+ },
+ "UY": {
+ "name": "ꖳꔓꗝꔀ"
+ },
+ "UG": {
+ "name": "ꖳꕭꕡ"
+ },
+ "AE": {
+ "name": "ꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻ"
+ },
+ "UA": {
+ "name": "ꖳꖴꔓꘋ"
+ },
+ "UZ": {
+ "name": "ꖳꗩꕃꔻꕚꘋ"
+ },
+ "KW": {
+ "name": "ꖴꔃꔳ"
+ },
+ "GT": {
+ "name": "ꖶꕎꔎꕮꕞ"
+ },
+ "GP": {
+ "name": "ꖶꕎꔐꖨꔅ"
+ },
+ "GU": {
+ "name": "ꖶꕎꕆ"
+ },
+ "GD": {
+ "name": "ꖶꕟꕯꕜ"
+ },
+ "GY": {
+ "name": "ꖶꕩꕯ"
+ },
+ "NU": {
+ "name": "ꖸꔃꔤ"
+ },
+ "AT": {
+ "name": "ꖺꔻꖤꕎ"
+ },
+ "AU": {
+ "name": "ꖺꖬꖤꔃꔷꕩ"
+ },
+ "HN": {
+ "name": "ꖽꖫꕟ"
+ },
+ "HU": {
+ "name": "ꖽꘋꕭꔓ"
+ },
+ "BG": {
+ "name": "ꗂꔠꔸꕩ"
+ },
+ "TO": {
+ "name": "ꗋꕬ"
+ },
+ "TR": {
+ "name": "ꗋꖺꕃ"
+ },
+ "TC": {
+ "name": "ꗋꖺꕃꔻ ꗪ ꕪꔤꖏꔻ ꔳꘋꗣ"
+ },
+ "TM": {
+ "name": "ꗋꖺꕃꕮꕇꔻꕚꘋ"
+ },
+ "LU": {
+ "name": "ꗏꔻꘋꗂꖺ"
+ },
+ "RU": {
+ "name": "ꗐꖺꔻꕩ"
+ },
+ "GE": {
+ "name": "ꗘꖺꕀꕩ"
+ },
+ "JO": {
+ "name": "ꗘꖺꗵꘋ"
+ },
+ "MP": {
+ "name": "ꗛꔤ ꕪꘋꗒ ꕮꔸꕩꕯ ꔳꘋꗣ"
+ },
+ "CO": {
+ "name": "ꗛꗏꔭꕩ"
+ },
+ "MR": {
+ "name": "ꗞꔓꔎꕇꕰ"
+ },
+ "MU": {
+ "name": "ꗞꔓꗔ"
+ },
+ "MA": {
+ "name": "ꗞꕟꖏ"
+ },
+ "MC": {
+ "name": "ꗞꕯꖏ"
+ },
+ "MN": {
+ "name": "ꗞꖐꔷꕩ"
+ },
+ "MS": {
+ "name": "ꗞꘋꔖꕟꔳ"
+ },
+ "NO": {
+ "name": "ꗟꖺꔃ"
+ },
+ "NF": {
+ "name": "ꗟꖺꗉ ꔳꘋꗣ"
+ },
+ "EE": {
+ "name": "ꗡꔻꕿꕇꕰ"
+ },
+ "EC": {
+ "name": "ꗡꖴꔃꗍ"
+ },
+ "SV": {
+ "name": "ꗡꗷ ꕢꔍꗍꖺ"
+ },
+ "GR": {
+ "name": "ꗥꗷꘋ"
+ },
+ "PE": {
+ "name": "ꗨꗡꖩ"
+ },
+ "BE": {
+ "name": "ꗩꕀꗚꘋ"
+ },
+ "BJ": {
+ "name": "ꗩꕇꘋ"
+ },
+ "BY": {
+ "name": "ꗩꕞꖩꔻ"
+ },
+ "BM": {
+ "name": "ꗩꖷꕜ"
+ },
+ "PF": {
+ "name": "ꗱꘋꔻ ꕶꔷꕇꔻꕩ"
+ },
+ "GF": {
+ "name": "ꗱꘋꔻ ꖶꕎꕯ"
+ },
+ "VN": {
+ "name": "ꗲꕇꖮꔃꕞ"
+ },
+ "CZ": {
+ "name": "ꗿꕃ ꕸꖃꔀ"
+ },
+ "MX": {
+ "name": "ꘈꔻꖏ"
+ },
+ "NL": {
+ "name": "ꘉꕜ ꖨꕮꕊ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vi.json b/library/intl/resources/country/vi.json
new file mode 100644
index 000000000..985ab0e48
--- /dev/null
+++ b/library/intl/resources/country/vi.json
@@ -0,0 +1,761 @@
+{
+ "SA": {
+ "name": "Ả Rập Xê-út"
+ },
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ai Cập"
+ },
+ "IE": {
+ "name": "Ai-len"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua và Barbuda"
+ },
+ "AT": {
+ "name": "Áo"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "IN": {
+ "name": "Ấn Độ"
+ },
+ "PL": {
+ "name": "Ba Lan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BE": {
+ "name": "Bỉ"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia và Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "PT": {
+ "name": "Bồ Đào Nha"
+ },
+ "CI": {
+ "name": "Bờ Biển Ngà"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bungari"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Ca-ri-bê Hà Lan"
+ },
+ "UM": {
+ "name": "Các đảo nhỏ xa t.tâm thuộc Mỹ"
+ },
+ "AE": {
+ "name": "Các Tiểu V.quốc Ả Rập T.nhất"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "KH": {
+ "name": "Campuchia"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "EA": {
+ "name": "Ceuta và Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "KW": {
+ "name": "Cô-oét"
+ },
+ "DO": {
+ "name": "Cộng hòa Dominica"
+ },
+ "CZ": {
+ "name": "Cộng hòa Séc"
+ },
+ "CF": {
+ "name": "Cộng hòa Trung Phi"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "TW": {
+ "name": "Đài Loan"
+ },
+ "DK": {
+ "name": "Đan Mạch"
+ },
+ "AC": {
+ "name": "Đảo Ascension"
+ },
+ "CX": {
+ "name": "Đảo Giáng Sinh"
+ },
+ "IM": {
+ "name": "Đảo Man"
+ },
+ "NF": {
+ "name": "Đảo Norfolk"
+ },
+ "AS": {
+ "name": "Đảo Somoa thuộc Mỹ"
+ },
+ "HK": {
+ "name": "Đặc khu hành chính Hồng Kông - Trung Quốc"
+ },
+ "MO": {
+ "name": "Đặc khu hành chính Macao - Trung Quốc"
+ },
+ "TL": {
+ "name": "Đông Timor"
+ },
+ "DE": {
+ "name": "Đức"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana thuộc Pháp"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Xích Đạo"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "NL": {
+ "name": "Hà Lan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "KR": {
+ "name": "Hàn Quốc"
+ },
+ "US": {
+ "name": "Hoa Kỳ"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "GR": {
+ "name": "Hy Lạp"
+ },
+ "IQ": {
+ "name": "I-rắc"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "TF": {
+ "name": "Lãnh thổ miền nam nước Pháp"
+ },
+ "PS": {
+ "name": "Lãnh thổ Palestine"
+ },
+ "LA": {
+ "name": "Lào"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Li-băng"
+ },
+ "LY": {
+ "name": "Li-bi"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lít-va"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MA": {
+ "name": "Ma-rốc"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MN": {
+ "name": "Mông Cổ"
+ },
+ "MM": {
+ "name": "Myanmar (Miến Điện)"
+ },
+ "NO": {
+ "name": "Na Uy"
+ },
+ "AQ": {
+ "name": "Nam Cực"
+ },
+ "ZA": {
+ "name": "Nam Phi"
+ },
+ "SS": {
+ "name": "Nam Sudan"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "RU": {
+ "name": "Nga"
+ },
+ "JP": {
+ "name": "Nhật Bản"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "FR": {
+ "name": "Pháp"
+ },
+ "FI": {
+ "name": "Phần Lan"
+ },
+ "PH": {
+ "name": "Philippin"
+ },
+ "PF": {
+ "name": "Polynesia thuộc Pháp"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "AX": {
+ "name": "Quần đảo Åland"
+ },
+ "MP": {
+ "name": "Quần đảo Bắc Mariana"
+ },
+ "IC": {
+ "name": "Quần đảo Canary"
+ },
+ "KY": {
+ "name": "Quần đảo Cayman"
+ },
+ "CC": {
+ "name": "Quần đảo Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Quần đảo Cook"
+ },
+ "FK": {
+ "name": "Quần đảo Falkland"
+ },
+ "FO": {
+ "name": "Quần đảo Faroe"
+ },
+ "MH": {
+ "name": "Quần đảo Marshall"
+ },
+ "GS": {
+ "name": "Quần đảo Nam Georgia và Nam Sandwich"
+ },
+ "PN": {
+ "name": "Quần đảo Pitcairn"
+ },
+ "SB": {
+ "name": "Quần đảo Solomon"
+ },
+ "TC": {
+ "name": "Quần đảo Turk và Caicos"
+ },
+ "VG": {
+ "name": "Quần đảo Virgin thuộc Anh"
+ },
+ "VI": {
+ "name": "Quần đảo Virgin thuộc Mỹ"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts và Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre và Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent và Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé và Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Síp"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard và Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "ES": {
+ "name": "Tây Ban Nha"
+ },
+ "EH": {
+ "name": "Tây Sahara"
+ },
+ "TH": {
+ "name": "Thái Lan"
+ },
+ "VA": {
+ "name": "Thành Vatican"
+ },
+ "TR": {
+ "name": "Thổ Nhĩ Kỳ"
+ },
+ "IO": {
+ "name": "Thuộc địa Anh tại Ấn Độ Dương"
+ },
+ "SE": {
+ "name": "Thụy Điển"
+ },
+ "CH": {
+ "name": "Thụy Sĩ"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "KP": {
+ "name": "Triều Tiên"
+ },
+ "TT": {
+ "name": "Trinidad và Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CN": {
+ "name": "Trung Quốc"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "AU": {
+ "name": "Úc"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Việt Nam"
+ },
+ "GB": {
+ "name": "Vương quốc Anh"
+ },
+ "WF": {
+ "name": "Wallis và Futuna"
+ },
+ "IT": {
+ "name": "Ý"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vun.json b/library/intl/resources/country/vun.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/vun.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/wae.json b/library/intl/resources/country/wae.json
new file mode 100644
index 000000000..103ba487f
--- /dev/null
+++ b/library/intl/resources/country/wae.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganištan"
+ },
+ "AX": {
+ "name": "Alandinslä"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "UM": {
+ "name": "Amerikaniš Ozeanie"
+ },
+ "AS": {
+ "name": "Amerikaniš Samoa"
+ },
+ "VI": {
+ "name": "Amerikaniši Jungfröiwinslä"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "AR": {
+ "name": "Argentinie"
+ },
+ "AM": {
+ "name": "Armenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Aserbaidšan"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "BH": {
+ "name": "Bačrain"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliwie"
+ },
+ "BA": {
+ "name": "Bosnie und Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilie"
+ },
+ "IO": {
+ "name": "Britišes Territorium em indiše Ozean"
+ },
+ "VG": {
+ "name": "Britiši Jungfröiwinslä"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinslä"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominikaniši Rebublik"
+ },
+ "DM": {
+ "name": "Doninica"
+ },
+ "DJ": {
+ "name": "Dšibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebeiküšta"
+ },
+ "GB": {
+ "name": "England"
+ },
+ "GQ": {
+ "name": "Equatorialginea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Eštland"
+ },
+ "ET": {
+ "name": "Ethiopie"
+ },
+ "FK": {
+ "name": "Falklandinslä"
+ },
+ "FO": {
+ "name": "Färöe"
+ },
+ "FJ": {
+ "name": "Fidši"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankrič"
+ },
+ "GF": {
+ "name": "Französiš Guiana"
+ },
+ "PF": {
+ "name": "Französiš Polinesie"
+ },
+ "TF": {
+ "name": "Französiši Süd- und Antarktisgebiet"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgie"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GW": {
+ "name": "Ginea Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Gričeland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "AC": {
+ "name": "Himmelfártsinsla"
+ },
+ "NL": {
+ "name": "Holand"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonesie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jéme"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KY": {
+ "name": "Kaimaninslä"
+ },
+ "KH": {
+ "name": "Kambodša"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariše Inslä"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasačstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgištan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinslä"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komore"
+ },
+ "CG": {
+ "name": "Kongo Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatie"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liečteštei"
+ },
+ "LT": {
+ "name": "Litaue"
+ },
+ "LY": {
+ "name": "Lübie"
+ },
+ "LU": {
+ "name": "Luxeburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediwe"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalinslä"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanie"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MK": {
+ "name": "Mazedonie"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesie"
+ },
+ "MD": {
+ "name": "Moldau"
+ },
+ "MC": {
+ "name": "Monago"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "MS": {
+ "name": "Monserrat"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "YT": {
+ "name": "Moyette"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niwkaledonie"
+ },
+ "NZ": {
+ "name": "Niwséland"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nördliči Mariane"
+ },
+ "NF": {
+ "name": "Norfolkinsla"
+ },
+ "NO": {
+ "name": "Norwäge"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Öštrič"
+ },
+ "TL": {
+ "name": "Ošttimor"
+ },
+ "PK": {
+ "name": "Pakištan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Paleština"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Niwginea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippine"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänie"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "SB": {
+ "name": "Salomone"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabie"
+ },
+ "ES": {
+ "name": "Schpanie"
+ },
+ "SE": {
+ "name": "Schwede"
+ },
+ "CH": {
+ "name": "Schwiz"
+ },
+ "SC": {
+ "name": "Sečelle"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenie"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "HK": {
+ "name": "Sonderverwaltigszona Hongkong"
+ },
+ "MO": {
+ "name": "Sonderverwaltigszona Makau"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Bartholomäus-Insla"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und d’Grenadine"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgie und d’südliče Senwičinslä"
+ },
+ "KR": {
+ "name": "Südkorea"
+ },
+ "SY": {
+ "name": "Sürie"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "TJ": {
+ "name": "Tadšikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "DE": {
+ "name": "Titšland"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tšad"
+ },
+ "CZ": {
+ "name": "Tšečie"
+ },
+ "CL": {
+ "name": "Tšile"
+ },
+ "TN": {
+ "name": "Tunesie"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmeništan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinslä"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungare"
+ },
+ "UY": {
+ "name": "Urugauy"
+ },
+ "UZ": {
+ "name": "Usbekištan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigti Arabiše Emirat"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "EH": {
+ "name": "Weštsahara"
+ },
+ "CX": {
+ "name": "Wienäčtsinslä"
+ },
+ "BY": {
+ "name": "Wísrussland"
+ },
+ "CF": {
+ "name": "Zentralafrikaniši Rebublik"
+ },
+ "CY": {
+ "name": "Zypre"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/xog.json b/library/intl/resources/country/xog.json
new file mode 100644
index 000000000..d76c8706d
--- /dev/null
+++ b/library/intl/resources/country/xog.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganisitani"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AL": {
+ "name": "Alibaniya"
+ },
+ "DZ": {
+ "name": "Aligerya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa ni Barabuda"
+ },
+ "AM": {
+ "name": "Arameniya"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitureliya"
+ },
+ "AT": {
+ "name": "Awusituriya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisirandi"
+ },
+ "AZ": {
+ "name": "Azerebayijaani"
+ },
+ "BH": {
+ "name": "Baareeni"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BD": {
+ "name": "Bangaladesi"
+ },
+ "BB": {
+ "name": "Barabadosi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Beremuda"
+ },
+ "MH": {
+ "name": "Bizinga bya Mariso"
+ },
+ "MP": {
+ "name": "Bizinga bya Mariyana ebyamumambuka"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BA": {
+ "name": "Boziniya Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "DE": {
+ "name": "Budaaki"
+ },
+ "FR": {
+ "name": "Bufalansa"
+ },
+ "BG": {
+ "name": "Bulugariya"
+ },
+ "GB": {
+ "name": "Bungereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Burunayi"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaani"
+ },
+ "IN": {
+ "name": "Buyindi"
+ },
+ "GR": {
+ "name": "Buyonaani"
+ },
+ "TD": {
+ "name": "Caadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayina"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaaka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "FK": {
+ "name": "Ebiizinga bya Falikalandi"
+ },
+ "SB": {
+ "name": "Ebizanga bya Solomooni"
+ },
+ "IO": {
+ "name": "Ebizinga bya Cago"
+ },
+ "PH": {
+ "name": "Ebizinga bya Firipino"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimaani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepu Veredi"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kkuki"
+ },
+ "KM": {
+ "name": "Ebizinga bya Komoro"
+ },
+ "MV": {
+ "name": "Ebizinga bya Malidive"
+ },
+ "TC": {
+ "name": "Ebizinga bya Taaka ni Kayikosi"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebitwalibwa Bungereza"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini eby’Amerika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "El salivado"
+ },
+ "AE": {
+ "name": "Emireeti"
+ },
+ "ER": {
+ "name": "Eritureya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Esyopya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GQ": {
+ "name": "Gayana yaku ekweta"
+ },
+ "GI": {
+ "name": "Giburalita"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisawu"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Gurenelandi"
+ },
+ "GF": {
+ "name": "Guyana enfalansa"
+ },
+ "GP": {
+ "name": "Gwadalupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GE": {
+ "name": "Gyogya"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hundurasi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jjibuti"
+ },
+ "NC": {
+ "name": "Kaledonya mupya"
+ },
+ "KH": {
+ "name": "Kambodya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KZ": {
+ "name": "Kazakisitaani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaani"
+ },
+ "NF": {
+ "name": "Kizinga ky’eNorofoko"
+ },
+ "CO": {
+ "name": "Kolombya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo - Zayire"
+ },
+ "KP": {
+ "name": "Koreya eya mumambuka"
+ },
+ "KR": {
+ "name": "Koreya eya mumaserengeta"
+ },
+ "CR": {
+ "name": "Kosita Rika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kote Divwa"
+ },
+ "HR": {
+ "name": "Kurowesya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "RU": {
+ "name": "Lasa"
+ },
+ "LV": {
+ "name": "Lativya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoso"
+ },
+ "RE": {
+ "name": "Leyunyoni"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Licitensitayini"
+ },
+ "CZ": {
+ "name": "Lipabulika ya Ceeka"
+ },
+ "DO": {
+ "name": "Lipabulika ya Dominika"
+ },
+ "CF": {
+ "name": "Lipabulika ya Senturafiriki"
+ },
+ "LT": {
+ "name": "Lisuwenya"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "LU": {
+ "name": "Lukisembaaga"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniiki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "MU": {
+ "name": "Mawulisyasi"
+ },
+ "MR": {
+ "name": "Mawulitenya"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikuronezya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MD": {
+ "name": "Molodova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteseraati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NG": {
+ "name": "Nayijerya"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NE": {
+ "name": "Nije"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NZ": {
+ "name": "Niyuziirandi"
+ },
+ "NO": {
+ "name": "Nowe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitayini ni Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Nyugini"
+ },
+ "PY": {
+ "name": "Paragwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeeni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya enfalansa"
+ },
+ "PR": {
+ "name": "Potoriko"
+ },
+ "PT": {
+ "name": "Potugaali"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa omumerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sanitome ni Purincipe"
+ },
+ "SA": {
+ "name": "Sawudarebya"
+ },
+ "ZA": {
+ "name": "Sawusafirika"
+ },
+ "SN": {
+ "name": "Senegaalo"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kitisi ne Nevisi"
+ },
+ "LC": {
+ "name": "Senti Luciya"
+ },
+ "PM": {
+ "name": "Senti Piyere ni Mikeloni"
+ },
+ "VC": {
+ "name": "Senti Vinsenti ni Gurendadiini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesere"
+ },
+ "SG": {
+ "name": "Singapowa"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "CY": {
+ "name": "Sipuriya"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovakya"
+ },
+ "SI": {
+ "name": "Sirovenya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Switizirandi"
+ },
+ "TJ": {
+ "name": "Tajikisitaani"
+ },
+ "TM": {
+ "name": "Takimenesitaani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Tayirandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timowa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TR": {
+ "name": "Ttake"
+ },
+ "TN": {
+ "name": "Tunisya"
+ },
+ "TT": {
+ "name": "Turindaadi ni Tobago"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanawuwatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venzwera"
+ },
+ "VN": {
+ "name": "Vyetinaamu"
+ },
+ "WF": {
+ "name": "Walisi ni Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "UY": {
+ "name": "Wurugwayi"
+ },
+ "UZ": {
+ "name": "Wuzibekisitaani"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ID": {
+ "name": "Yindonezya"
+ },
+ "IQ": {
+ "name": "Yiraaka"
+ },
+ "IR": {
+ "name": "Yiraani"
+ },
+ "IL": {
+ "name": "Yisirayeri"
+ },
+ "IT": {
+ "name": "Yitale"
+ },
+ "JO": {
+ "name": "Yorodani"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukurayine"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yav.json b/library/intl/resources/country/yav.json
new file mode 100644
index 000000000..c1ef5c1b2
--- /dev/null
+++ b/library/intl/resources/country/yav.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "afilí mbátɛ́"
+ },
+ "AF": {
+ "name": "Afkanistáŋ"
+ },
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "SA": {
+ "name": "alapísawutíit"
+ },
+ "AM": {
+ "name": "Almanía"
+ },
+ "AL": {
+ "name": "Alpaní"
+ },
+ "AR": {
+ "name": "Alsaŋtín"
+ },
+ "DZ": {
+ "name": "Alselí"
+ },
+ "AW": {
+ "name": "Alúpa"
+ },
+ "US": {
+ "name": "amálíka"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AI": {
+ "name": "Aŋkíla"
+ },
+ "AO": {
+ "name": "Aŋkúla"
+ },
+ "AG": {
+ "name": "Aŋtíka na Palpúta"
+ },
+ "AD": {
+ "name": "Aŋtúla"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Asɛlpaisáŋ"
+ },
+ "HT": {
+ "name": "ayíti"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "EC": {
+ "name": "ekuatɛ́l"
+ },
+ "RE": {
+ "name": "elewuniɔ́ŋ"
+ },
+ "ER": {
+ "name": "elitée"
+ },
+ "ET": {
+ "name": "etiopí"
+ },
+ "IN": {
+ "name": "ɛ́ɛnd"
+ },
+ "ID": {
+ "name": "ɛndonesí"
+ },
+ "EE": {
+ "name": "ɛstoni"
+ },
+ "VU": {
+ "name": "fanuatú"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "VA": {
+ "name": "fatikáaŋ"
+ },
+ "FR": {
+ "name": "felensí"
+ },
+ "VE": {
+ "name": "fenesuwelá"
+ },
+ "FI": {
+ "name": "fɛnlánd"
+ },
+ "VN": {
+ "name": "fiɛtnáam"
+ },
+ "PH": {
+ "name": "filipíin"
+ },
+ "VG": {
+ "name": "Filisíin ungilís"
+ },
+ "FJ": {
+ "name": "físi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "MP": {
+ "name": "il maliyanɛ u muɛnɛ́"
+ },
+ "NF": {
+ "name": "il nɔ́lfɔ́lɔk"
+ },
+ "SB": {
+ "name": "il salomɔ́ŋ"
+ },
+ "IQ": {
+ "name": "ilák"
+ },
+ "IR": {
+ "name": "iláŋ"
+ },
+ "IE": {
+ "name": "ililánd"
+ },
+ "MH": {
+ "name": "ílmalasáal"
+ },
+ "AE": {
+ "name": "imiláat i paaláap"
+ },
+ "GB": {
+ "name": "ingilíís"
+ },
+ "IL": {
+ "name": "ísilayɛ́l"
+ },
+ "EG": {
+ "name": "isípit"
+ },
+ "IS": {
+ "name": "isláand"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "italí"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GM": {
+ "name": "kambíi"
+ },
+ "KH": {
+ "name": "Kámbóse"
+ },
+ "GH": {
+ "name": "kaná"
+ },
+ "CA": {
+ "name": "Kánáta"
+ },
+ "CV": {
+ "name": "Kápfɛl"
+ },
+ "GA": {
+ "name": "kapɔ́ŋ"
+ },
+ "KZ": {
+ "name": "kasaksitáŋ"
+ },
+ "QA": {
+ "name": "katáal"
+ },
+ "KY": {
+ "name": "Káyímanɛ"
+ },
+ "GD": {
+ "name": "kelenáat"
+ },
+ "CM": {
+ "name": "Kemelún"
+ },
+ "KE": {
+ "name": "kénia"
+ },
+ "GN": {
+ "name": "kiiné"
+ },
+ "GW": {
+ "name": "kiinépisaó"
+ },
+ "GR": {
+ "name": "kilɛ́ɛk"
+ },
+ "KG": {
+ "name": "kilikisistáŋ"
+ },
+ "KI": {
+ "name": "kilipatí"
+ },
+ "GQ": {
+ "name": "kinéekuatolial"
+ },
+ "CZ": {
+ "name": "kitɔŋ kí cɛ́k"
+ },
+ "CD": {
+ "name": "kitɔŋ kí kongó"
+ },
+ "PS": {
+ "name": "kitɔŋ ki palɛstíin"
+ },
+ "DO": {
+ "name": "kitɔŋ kí tumunikɛ́ŋ"
+ },
+ "HR": {
+ "name": "Kolowasíi"
+ },
+ "CG": {
+ "name": "Kongó"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kóstálíka"
+ },
+ "CI": {
+ "name": "Kótifualɛ"
+ },
+ "KW": {
+ "name": "kowéet"
+ },
+ "KP": {
+ "name": "kɔlé u muɛnɛ́"
+ },
+ "KR": {
+ "name": "kɔlé wu mbát"
+ },
+ "CO": {
+ "name": "Kɔlɔ́mbía"
+ },
+ "KM": {
+ "name": "Kɔmɔ́ɔl"
+ },
+ "IO": {
+ "name": "Kɔɔ́m kí ndián yi ngilís"
+ },
+ "GU": {
+ "name": "kuamiɛ"
+ },
+ "GP": {
+ "name": "kuatelúup"
+ },
+ "GT": {
+ "name": "kuatemalá"
+ },
+ "GL": {
+ "name": "kuluɛnlánd"
+ },
+ "CU": {
+ "name": "kúpa"
+ },
+ "CK": {
+ "name": "Kúuke"
+ },
+ "GY": {
+ "name": "kuyáan"
+ },
+ "GF": {
+ "name": "kuyáan u felensí"
+ },
+ "LA": {
+ "name": "lawós"
+ },
+ "LS": {
+ "name": "lesotó"
+ },
+ "LV": {
+ "name": "letoní"
+ },
+ "LU": {
+ "name": "liksambúul"
+ },
+ "LB": {
+ "name": "lipáŋ"
+ },
+ "LR": {
+ "name": "lipélia"
+ },
+ "LY": {
+ "name": "lipíi"
+ },
+ "LI": {
+ "name": "lístɛ́nsitáyin"
+ },
+ "LT": {
+ "name": "litiyaní"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "malawí"
+ },
+ "MY": {
+ "name": "malesí"
+ },
+ "MV": {
+ "name": "maletíif"
+ },
+ "MT": {
+ "name": "málɛ́t"
+ },
+ "ML": {
+ "name": "malí"
+ },
+ "MA": {
+ "name": "malóok"
+ },
+ "MQ": {
+ "name": "maltiníik"
+ },
+ "FK": {
+ "name": "maluwín"
+ },
+ "MK": {
+ "name": "masetuán"
+ },
+ "MG": {
+ "name": "matakaskáal"
+ },
+ "YT": {
+ "name": "mayɔ́ɔt"
+ },
+ "MX": {
+ "name": "mɛksíik"
+ },
+ "MM": {
+ "name": "miaŋmáal"
+ },
+ "FM": {
+ "name": "mikolonesí"
+ },
+ "MU": {
+ "name": "molís"
+ },
+ "MR": {
+ "name": "molitaní"
+ },
+ "MD": {
+ "name": "moltafí"
+ },
+ "MC": {
+ "name": "monakó"
+ },
+ "MN": {
+ "name": "mongolí"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "mosambík"
+ },
+ "MS": {
+ "name": "mɔŋsilá"
+ },
+ "NA": {
+ "name": "namipí"
+ },
+ "NR": {
+ "name": "nawulú"
+ },
+ "NP": {
+ "name": "nepáal"
+ },
+ "NI": {
+ "name": "nikalaká"
+ },
+ "NG": {
+ "name": "nisélia"
+ },
+ "NE": {
+ "name": "nisɛ́ɛl"
+ },
+ "NL": {
+ "name": "nitililáand"
+ },
+ "NU": {
+ "name": "niyuwé"
+ },
+ "NO": {
+ "name": "nɔlfɛ́ɛs"
+ },
+ "DE": {
+ "name": "nsáman"
+ },
+ "NC": {
+ "name": "nufɛ́l kaletoní"
+ },
+ "NZ": {
+ "name": "nufɛ́l seláand"
+ },
+ "OM": {
+ "name": "omáŋ"
+ },
+ "AU": {
+ "name": "Otalalí"
+ },
+ "AT": {
+ "name": "Otilís"
+ },
+ "HN": {
+ "name": "ɔndúlas"
+ },
+ "HU": {
+ "name": "ɔngilí"
+ },
+ "BS": {
+ "name": "Pahámas"
+ },
+ "PK": {
+ "name": "pakistáŋ"
+ },
+ "PY": {
+ "name": "palakúé"
+ },
+ "PW": {
+ "name": "palawú"
+ },
+ "BH": {
+ "name": "Palɛŋ"
+ },
+ "BB": {
+ "name": "Palpatós"
+ },
+ "PA": {
+ "name": "panamá"
+ },
+ "ES": {
+ "name": "panyá"
+ },
+ "BD": {
+ "name": "Paŋkalatɛs"
+ },
+ "PG": {
+ "name": "papuasí nufɛ́l kiiné"
+ },
+ "BY": {
+ "name": "Pelalús"
+ },
+ "BZ": {
+ "name": "Pelíse"
+ },
+ "PE": {
+ "name": "pelú"
+ },
+ "BJ": {
+ "name": "Penɛŋ"
+ },
+ "BM": {
+ "name": "Pɛlmúta"
+ },
+ "BE": {
+ "name": "Pɛlsíik"
+ },
+ "BR": {
+ "name": "Pilesíl"
+ },
+ "VI": {
+ "name": "pindisúlɛ́ pi amálíka"
+ },
+ "PN": {
+ "name": "pitikɛ́ɛlínɛ́"
+ },
+ "BO": {
+ "name": "Polífia"
+ },
+ "PF": {
+ "name": "polinesí u felensí"
+ },
+ "PR": {
+ "name": "pólótolíko"
+ },
+ "BW": {
+ "name": "Posuána"
+ },
+ "PL": {
+ "name": "pɔlɔ́ɔny"
+ },
+ "PT": {
+ "name": "pɔltukáal"
+ },
+ "BF": {
+ "name": "Pulikínafásó"
+ },
+ "BG": {
+ "name": "Pulukalíi"
+ },
+ "BI": {
+ "name": "Púlúndí"
+ },
+ "BN": {
+ "name": "Pulunéy"
+ },
+ "BA": {
+ "name": "Pusiní-ɛlkofína"
+ },
+ "BT": {
+ "name": "Putaŋ"
+ },
+ "ZM": {
+ "name": "saambíi"
+ },
+ "TD": {
+ "name": "Sáat"
+ },
+ "SV": {
+ "name": "salfatɔ́ɔl"
+ },
+ "JM": {
+ "name": "samayíik"
+ },
+ "WS": {
+ "name": "samowá"
+ },
+ "AS": {
+ "name": "Sámua u Amelíka"
+ },
+ "SM": {
+ "name": "san malíno"
+ },
+ "CF": {
+ "name": "Santalafilíik"
+ },
+ "JP": {
+ "name": "sapɔ́ɔŋ"
+ },
+ "ST": {
+ "name": "sáwó tomé e pelensípe"
+ },
+ "SN": {
+ "name": "senekáal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "sesɛ́ɛl"
+ },
+ "VC": {
+ "name": "sɛ́ŋ fɛŋsáŋ elekelenatíin"
+ },
+ "KN": {
+ "name": "sɛ́ŋkilistɔ́f eniɛ́f"
+ },
+ "PM": {
+ "name": "sɛ́ŋpiɛ́l e mikelɔ́ŋ"
+ },
+ "SH": {
+ "name": "sɛ́ŋtɛ́ elɛ́ɛnɛ"
+ },
+ "LC": {
+ "name": "sɛ́ŋtɛ́lusí"
+ },
+ "SL": {
+ "name": "sieláleyɔ́ɔn"
+ },
+ "CN": {
+ "name": "Síine"
+ },
+ "CL": {
+ "name": "Silí"
+ },
+ "LK": {
+ "name": "silíláŋka"
+ },
+ "SK": {
+ "name": "silofakí"
+ },
+ "SI": {
+ "name": "silofení"
+ },
+ "GI": {
+ "name": "sílpalatáal"
+ },
+ "ZW": {
+ "name": "simbapuwé"
+ },
+ "SG": {
+ "name": "singapúul"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "síplɛ"
+ },
+ "DJ": {
+ "name": "síputí"
+ },
+ "SO": {
+ "name": "somalí"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "GE": {
+ "name": "sɔlsíi"
+ },
+ "JO": {
+ "name": "sɔltaní"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SZ": {
+ "name": "suasiláand"
+ },
+ "SE": {
+ "name": "suɛ́t"
+ },
+ "SR": {
+ "name": "sulináam"
+ },
+ "SD": {
+ "name": "sutáaŋ"
+ },
+ "CH": {
+ "name": "suwíis"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "DK": {
+ "name": "tanemálk"
+ },
+ "TZ": {
+ "name": "taŋsaní"
+ },
+ "TJ": {
+ "name": "tasikistáaŋ"
+ },
+ "TH": {
+ "name": "tayiláand"
+ },
+ "TW": {
+ "name": "tayiwáan"
+ },
+ "TT": {
+ "name": "tilinitáat na tupákɔ"
+ },
+ "TL": {
+ "name": "timɔ́ɔl u nipálɛ́n"
+ },
+ "TK": {
+ "name": "tokeló"
+ },
+ "TG": {
+ "name": "tokó"
+ },
+ "TO": {
+ "name": "tɔ́ŋka"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "tufalú"
+ },
+ "TC": {
+ "name": "túluk na káyiik"
+ },
+ "TR": {
+ "name": "tulukíi"
+ },
+ "TM": {
+ "name": "tulukmenisitáaŋ"
+ },
+ "DM": {
+ "name": "túmúnéke"
+ },
+ "TN": {
+ "name": "tunusí"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "ukánda"
+ },
+ "UA": {
+ "name": "ukilɛ́ɛn"
+ },
+ "RW": {
+ "name": "uluándá"
+ },
+ "UY": {
+ "name": "ulukuéy"
+ },
+ "RO": {
+ "name": "ulumaní"
+ },
+ "RU": {
+ "name": "ulusí"
+ },
+ "UZ": {
+ "name": "usupekistáaŋ"
+ },
+ "WF": {
+ "name": "walíis na futúna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "yémɛn"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yo-BJ.json b/library/intl/resources/country/yo-BJ.json
new file mode 100644
index 000000000..c37ec283b
--- /dev/null
+++ b/library/intl/resources/country/yo-BJ.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "SS": {
+ "name": "Gúúsù Sudan"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "AD": {
+ "name": "Orílɛ́ède Ààndórà"
+ },
+ "AO": {
+ "name": "Orílɛ́ède Ààngólà"
+ },
+ "AI": {
+ "name": "Orílɛ́ède Ààngúlílà"
+ },
+ "AG": {
+ "name": "Orílɛ́ède Ààntígúà àti Báríbúdà"
+ },
+ "AF": {
+ "name": "Orílɛ́ède Àfùgànístánì"
+ },
+ "AR": {
+ "name": "Orílɛ́ède Agentínà"
+ },
+ "IE": {
+ "name": "Orílɛ́ède Ailandi"
+ },
+ "AL": {
+ "name": "Orílɛ́ède Àlùbàníánì"
+ },
+ "DZ": {
+ "name": "Orílɛ́ède Àlùgèríánì"
+ },
+ "AM": {
+ "name": "Orílɛ́ède Améníà"
+ },
+ "CF": {
+ "name": "Orílɛ́ède Àrin gùngun Áfíríkà"
+ },
+ "ZA": {
+ "name": "Orílɛ́ède Ariwa Afirika"
+ },
+ "KR": {
+ "name": "Orílɛ́ède Ariwa Kɔria"
+ },
+ "AW": {
+ "name": "Orílɛ́ède Árúbà"
+ },
+ "AZ": {
+ "name": "Orílɛ́ède Asɛ́bájánì"
+ },
+ "IS": {
+ "name": "Orílɛ́ède Ashilandi"
+ },
+ "AT": {
+ "name": "Orílɛ́ède Asítíríà"
+ },
+ "AU": {
+ "name": "Orílɛ́ède Ástràlìá"
+ },
+ "BB": {
+ "name": "Orílɛ́ède Bábádósì"
+ },
+ "BS": {
+ "name": "Orílɛ́ède Bàhámásì"
+ },
+ "BD": {
+ "name": "Orílɛ́ède Bángáládésì"
+ },
+ "BH": {
+ "name": "Orílɛ́ède Báránì"
+ },
+ "BR": {
+ "name": "Orílɛ́ède Bàràsílì"
+ },
+ "BE": {
+ "name": "Orílɛ́ède Bégíɔ́mù"
+ },
+ "BY": {
+ "name": "Orílɛ́ède Bélárúsì"
+ },
+ "BZ": {
+ "name": "Orílɛ́ède Bèlísɛ̀"
+ },
+ "BM": {
+ "name": "Orílɛ́ède Bémúdà"
+ },
+ "BJ": {
+ "name": "Orílɛ́ède Bɛ̀nɛ̀"
+ },
+ "BO": {
+ "name": "Orílɛ́ède Bɔ̀lífíyà"
+ },
+ "BA": {
+ "name": "Orílɛ́ède Bɔ̀síníà àti Ɛtisɛgófínà"
+ },
+ "BW": {
+ "name": "Orílɛ́ède Bɔ̀tìsúwánà"
+ },
+ "BN": {
+ "name": "Orílɛ́ède Búrúnɛ́lì"
+ },
+ "BT": {
+ "name": "Orílɛ́ède Bútánì"
+ },
+ "BG": {
+ "name": "Orílɛ́ède Bùùgáríà"
+ },
+ "BF": {
+ "name": "Orílɛ́ède Bùùkíná Fasò"
+ },
+ "BI": {
+ "name": "Orílɛ́ède Bùùrúndì"
+ },
+ "DK": {
+ "name": "Orílɛ́ède Dɛ́mákì"
+ },
+ "DJ": {
+ "name": "Orílɛ́ède Díbɔ́ótì"
+ },
+ "DM": {
+ "name": "Orílɛ́ède Dòmíníkà"
+ },
+ "DO": {
+ "name": "Orilɛ́ède Dòmíníkánì"
+ },
+ "EG": {
+ "name": "Orílɛ́ède Égípítì"
+ },
+ "EC": {
+ "name": "Orílɛ́ède Ekuádò"
+ },
+ "GQ": {
+ "name": "Orílɛ́ède Ekutoria Gini"
+ },
+ "ER": {
+ "name": "Orílɛ́ède Eritira"
+ },
+ "EE": {
+ "name": "Orílɛ́ède Esitonia"
+ },
+ "VI": {
+ "name": "Orílɛ́ède Etikun Fagini ti Amɛrika"
+ },
+ "VG": {
+ "name": "Orílɛ́ède Etíkun Fágínì ti ìlú Bírítísì"
+ },
+ "FK": {
+ "name": "Orílɛ́ède Etikun Fakalandi"
+ },
+ "MP": {
+ "name": "Orílɛ́ède Etikun Guusu Mariana"
+ },
+ "IO": {
+ "name": "Orílɛ́ède Etíkun Índíánì ti Ìlú Bírítísì"
+ },
+ "MH": {
+ "name": "Orílɛ́ède Etikun Máshali"
+ },
+ "NF": {
+ "name": "Orílɛ́ède Etikun Nɔ́úfókì"
+ },
+ "SB": {
+ "name": "Orílɛ́ède Etikun Solomoni"
+ },
+ "KY": {
+ "name": "Orílɛ́ède Etíokun Kámánì"
+ },
+ "CV": {
+ "name": "Orílɛ́ède Etíokun Kápé féndè"
+ },
+ "CK": {
+ "name": "Orílɛ́ède Etíokun Kùúkù"
+ },
+ "ET": {
+ "name": "Orílɛ́ède Etopia"
+ },
+ "SV": {
+ "name": "Orílɛ́ède Ɛɛsáfádò"
+ },
+ "AE": {
+ "name": "Orílɛ́ède Ɛmirate ti Awɔn Arabu"
+ },
+ "VU": {
+ "name": "Orílɛ́ède Faniatu"
+ },
+ "FR": {
+ "name": "Orílɛ́ède Faranse"
+ },
+ "VA": {
+ "name": "Orílɛ́ède Fatikani"
+ },
+ "VE": {
+ "name": "Orílɛ́ède Fɛnɛshuɛla"
+ },
+ "VN": {
+ "name": "Orílɛ́ède Fɛtinami"
+ },
+ "FJ": {
+ "name": "Orílɛ́ède Fiji"
+ },
+ "FI": {
+ "name": "Orílɛ́ède Filandi"
+ },
+ "PH": {
+ "name": "Orílɛ́ède filipini"
+ },
+ "GF": {
+ "name": "Orílɛ́ède Firenshi Guana"
+ },
+ "PF": {
+ "name": "Orílɛ́ède Firenshi Polinesia"
+ },
+ "VC": {
+ "name": "Orílɛ́ède Fisɛnnti ati Genadina"
+ },
+ "GA": {
+ "name": "Orílɛ́ède Gabon"
+ },
+ "GP": {
+ "name": "Orílɛ́ède Gadelope"
+ },
+ "GM": {
+ "name": "Orílɛ́ède Gambia"
+ },
+ "GH": {
+ "name": "Orílɛ́ède Gana"
+ },
+ "DE": {
+ "name": "Orílɛ́ède Gemani"
+ },
+ "GD": {
+ "name": "Orílɛ́ède Genada"
+ },
+ "GN": {
+ "name": "Orílɛ́ède Gene"
+ },
+ "GW": {
+ "name": "Orílɛ́ède Gene-Busau"
+ },
+ "GL": {
+ "name": "Orílɛ́ède Gerelandi"
+ },
+ "GR": {
+ "name": "Orílɛ́ède Geriisi"
+ },
+ "GI": {
+ "name": "Orílɛ́ède Gibaratara"
+ },
+ "GE": {
+ "name": "Orílɛ́ède Gɔgia"
+ },
+ "GU": {
+ "name": "Orílɛ́ède Guamu"
+ },
+ "GT": {
+ "name": "Orílɛ́ède Guatemala"
+ },
+ "KP": {
+ "name": "Orílɛ́ède Guusu Kɔria"
+ },
+ "GY": {
+ "name": "Orílɛ́ède Guyana"
+ },
+ "HT": {
+ "name": "Orílɛ́ède Haati"
+ },
+ "SH": {
+ "name": "Orílɛ́ède Hɛlena"
+ },
+ "HN": {
+ "name": "Orílɛ́ède Hondurasi"
+ },
+ "HU": {
+ "name": "Orílɛ́ède Hungari"
+ },
+ "TL": {
+ "name": "Orílɛ́ède ÌlàOòrùn Tímɔ̀"
+ },
+ "IN": {
+ "name": "Orílɛ́ède India"
+ },
+ "ID": {
+ "name": "Orílɛ́ède Indonesia"
+ },
+ "IQ": {
+ "name": "Orílɛ́ède Iraki"
+ },
+ "IR": {
+ "name": "Orílɛ́ède Irani"
+ },
+ "IL": {
+ "name": "Orílɛ́ède Iserɛli"
+ },
+ "IT": {
+ "name": "Orílɛ́ède Italiyi"
+ },
+ "PS": {
+ "name": "Orílɛ́ède Iwɔorun Pakisitian ati Gasha"
+ },
+ "JM": {
+ "name": "Orílɛ́ède Jamaika"
+ },
+ "JP": {
+ "name": "Orílɛ́ède Japani"
+ },
+ "JO": {
+ "name": "Orílɛ́ède Jɔdani"
+ },
+ "NC": {
+ "name": "Orílɛ́ède Kaledonia Titun"
+ },
+ "CM": {
+ "name": "Orílɛ́ède Kamerúúnì"
+ },
+ "KH": {
+ "name": "Orílɛ́ède Kàmùbódíà"
+ },
+ "CA": {
+ "name": "Orílɛ́ède Kánádà"
+ },
+ "KZ": {
+ "name": "Orílɛ́ède Kashashatani"
+ },
+ "KE": {
+ "name": "Orílɛ́ède Kenya"
+ },
+ "KN": {
+ "name": "Orílɛ́ède Kiiti ati Neefi"
+ },
+ "KI": {
+ "name": "Orílɛ́ède Kiribati"
+ },
+ "CO": {
+ "name": "Orílɛ́ède Kòlómíbìa"
+ },
+ "KM": {
+ "name": "Orílɛ́ède Kòmòrósì"
+ },
+ "CD": {
+ "name": "Orilɛ́ède Kóngò"
+ },
+ "CG": {
+ "name": "Orílɛ́ède Kóngò"
+ },
+ "HR": {
+ "name": "Orílɛ́ède Kòróátíà"
+ },
+ "QA": {
+ "name": "Orílɛ́ède Kota"
+ },
+ "CI": {
+ "name": "Orílɛ́ède Kóútè forà"
+ },
+ "CU": {
+ "name": "Orílɛ́ède Kúbà"
+ },
+ "KG": {
+ "name": "Orílɛ́ède Kurishisitani"
+ },
+ "CY": {
+ "name": "Orílɛ́ède Kúrúsì"
+ },
+ "CR": {
+ "name": "Orílɛ́ède Kuusita Ríkà"
+ },
+ "KW": {
+ "name": "Orílɛ́ède Kuweti"
+ },
+ "LR": {
+ "name": "Orílɛ́ède Laberia"
+ },
+ "LA": {
+ "name": "Orílɛ́ède Laosi"
+ },
+ "LV": {
+ "name": "Orílɛ́ède Latifia"
+ },
+ "LB": {
+ "name": "Orílɛ́ède Lebanoni"
+ },
+ "LS": {
+ "name": "Orílɛ́ède Lesoto"
+ },
+ "LI": {
+ "name": "Orílɛ́ède Lɛshitɛnisiteni"
+ },
+ "LY": {
+ "name": "Orílɛ́ède Libiya"
+ },
+ "LT": {
+ "name": "Orílɛ́ède Lituania"
+ },
+ "LU": {
+ "name": "Orílɛ́ède Lusemogi"
+ },
+ "LC": {
+ "name": "Orílɛ́ède Lushia"
+ },
+ "MG": {
+ "name": "Orílɛ́ède Madasika"
+ },
+ "FM": {
+ "name": "Orílɛ́ède Makoronesia"
+ },
+ "MV": {
+ "name": "Orílɛ́ède Maladifi"
+ },
+ "MY": {
+ "name": "Orílɛ́ède Malasia"
+ },
+ "MT": {
+ "name": "Orílɛ́ède Malata"
+ },
+ "MW": {
+ "name": "Orílɛ́ède Malawi"
+ },
+ "ML": {
+ "name": "Orílɛ́ède Mali"
+ },
+ "MM": {
+ "name": "Orílɛ́ède Manamari"
+ },
+ "MR": {
+ "name": "Orílɛ́ède Maritania"
+ },
+ "MU": {
+ "name": "Orílɛ́ède Maritiusi"
+ },
+ "MK": {
+ "name": "Orílɛ́ède Masidonia"
+ },
+ "MQ": {
+ "name": "Orílɛ́ède Matinikuwi"
+ },
+ "YT": {
+ "name": "Orílɛ́ède Mayote"
+ },
+ "MX": {
+ "name": "Orílɛ́ède Mesiko"
+ },
+ "MD": {
+ "name": "Orílɛ́ède Modofia"
+ },
+ "MN": {
+ "name": "Orílɛ́ède Mogolia"
+ },
+ "MC": {
+ "name": "Orílɛ́ède Monako"
+ },
+ "MA": {
+ "name": "Orílɛ́ède Moroko"
+ },
+ "MZ": {
+ "name": "Orílɛ́ède Moshamibiku"
+ },
+ "MS": {
+ "name": "Orílɛ́ède Motserati"
+ },
+ "NE": {
+ "name": "Orílɛ́ède Nàìjá"
+ },
+ "NG": {
+ "name": "Orílɛ́ède Nàìjíríà"
+ },
+ "NA": {
+ "name": "Orílɛ́ède Namibia"
+ },
+ "NR": {
+ "name": "Orílɛ́ède Nauru"
+ },
+ "NL": {
+ "name": "Orílɛ́ède Nedalandi"
+ },
+ "NP": {
+ "name": "Orílɛ́ède Nepa"
+ },
+ "NI": {
+ "name": "Orílɛ́ède NIkaragua"
+ },
+ "NU": {
+ "name": "Orílɛ́ède Niue"
+ },
+ "NO": {
+ "name": "Orílɛ́ède Nɔɔwii"
+ },
+ "UY": {
+ "name": "Orílɛ́ède Nruguayi"
+ },
+ "UZ": {
+ "name": "Orílɛ́ède Nshibɛkisitani"
+ },
+ "GB": {
+ "name": "Orílɛ́ède Omobabirin"
+ },
+ "US": {
+ "name": "Orílɛ́ède Orilɛede Amerika"
+ },
+ "OM": {
+ "name": "Orílɛ́ède Ɔɔma"
+ },
+ "PW": {
+ "name": "Orílɛ́ède Paalu"
+ },
+ "PG": {
+ "name": "Orílɛ́ède Paapu ti Giini"
+ },
+ "PK": {
+ "name": "Orílɛ́ède Pakisitan"
+ },
+ "PA": {
+ "name": "Orílɛ́ède Panama"
+ },
+ "PY": {
+ "name": "Orílɛ́ède Paraguye"
+ },
+ "PE": {
+ "name": "Orílɛ́ède Peru"
+ },
+ "PM": {
+ "name": "Orílɛ́ède Pɛɛri ati mikuloni"
+ },
+ "PN": {
+ "name": "Orílɛ́ède Pikarini"
+ },
+ "PL": {
+ "name": "Orílɛ́ède Polandi"
+ },
+ "PR": {
+ "name": "Orílɛ́ède Pɔto Riko"
+ },
+ "PT": {
+ "name": "Orílɛ́ède Pɔtugi"
+ },
+ "RE": {
+ "name": "Orílɛ́ède Riuniyan"
+ },
+ "RO": {
+ "name": "Orílɛ́ède Romaniya"
+ },
+ "RU": {
+ "name": "Orílɛ́ède Rɔshia"
+ },
+ "RW": {
+ "name": "Orílɛ́ède Ruwanda"
+ },
+ "WS": {
+ "name": "Orílɛ́ède Samɔ"
+ },
+ "SM": {
+ "name": "Orílɛ́ède Sani Marino"
+ },
+ "ST": {
+ "name": "Orílɛ́ède Sao tomi ati piriishipi"
+ },
+ "SZ": {
+ "name": "Orílɛ́ède Sashiland"
+ },
+ "SA": {
+ "name": "Orílɛ́ède Saudi Arabia"
+ },
+ "SC": {
+ "name": "Orílɛ́ède seshɛlɛsi"
+ },
+ "SN": {
+ "name": "Orílɛ́ède Sɛnɛga"
+ },
+ "TD": {
+ "name": "Orílɛ́ède shààdì"
+ },
+ "CN": {
+ "name": "Orílɛ́ède sháínà"
+ },
+ "ZM": {
+ "name": "Orílɛ́ède shamibia"
+ },
+ "CZ": {
+ "name": "Orílɛ́ède shɛ́ɛ́kì"
+ },
+ "NZ": {
+ "name": "Orílɛ́ède shilandi Titun"
+ },
+ "CL": {
+ "name": "Orílɛ́ède shílè"
+ },
+ "ZW": {
+ "name": "Orílɛ́ède shimibabe"
+ },
+ "SK": {
+ "name": "Orílɛ́ède Silofakia"
+ },
+ "SI": {
+ "name": "Orílɛ́ède Silofania"
+ },
+ "SG": {
+ "name": "Orílɛ́ède Singapo"
+ },
+ "ES": {
+ "name": "Orílɛ́ède Sipani"
+ },
+ "LK": {
+ "name": "Orílɛ́ède Siri Lanka"
+ },
+ "SY": {
+ "name": "Orílɛ́ède Siria"
+ },
+ "SL": {
+ "name": "Orílɛ́ède Siria looni"
+ },
+ "SO": {
+ "name": "Orílɛ́ède Somalia"
+ },
+ "SD": {
+ "name": "Orílɛ́ède Sudani"
+ },
+ "SR": {
+ "name": "Orílɛ́ède Surinami"
+ },
+ "SE": {
+ "name": "Orílɛ́ède Swidini"
+ },
+ "CH": {
+ "name": "Orílɛ́ède switishilandi"
+ },
+ "TH": {
+ "name": "Orílɛ́ède Tailandi"
+ },
+ "TW": {
+ "name": "Orílɛ́ède Taiwani"
+ },
+ "TJ": {
+ "name": "Orílɛ́ède Takisitani"
+ },
+ "TZ": {
+ "name": "Orílɛ́ède Tanshania"
+ },
+ "TT": {
+ "name": "Orílɛ́ède Tirinida ati Tobaga"
+ },
+ "TG": {
+ "name": "Orílɛ́ède Togo"
+ },
+ "TK": {
+ "name": "Orílɛ́ède Tokelau"
+ },
+ "TO": {
+ "name": "Orílɛ́ède Tonga"
+ },
+ "TR": {
+ "name": "Orílɛ́ède Tɔɔki"
+ },
+ "TC": {
+ "name": "Orílɛ́ède Tɔɔki ati Etikun Kakɔsi"
+ },
+ "TM": {
+ "name": "Orílɛ́ède Tɔɔkimenisita"
+ },
+ "TV": {
+ "name": "Orílɛ́ède Tufalu"
+ },
+ "TN": {
+ "name": "Orílɛ́ède Tunishia"
+ },
+ "UG": {
+ "name": "Orílɛ́ède Uganda"
+ },
+ "UA": {
+ "name": "Orílɛ́ède Ukarini"
+ },
+ "WF": {
+ "name": "Orílɛ́ède Wali ati futuna"
+ },
+ "YE": {
+ "name": "Orílɛ́ède yemeni"
+ },
+ "AS": {
+ "name": "Sámóánì ti Orílɛ́ède Àméríkà"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yo.json b/library/intl/resources/country/yo.json
new file mode 100644
index 000000000..561b81669
--- /dev/null
+++ b/library/intl/resources/country/yo.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "SS": {
+ "name": "Gúúsù Sudan"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "AD": {
+ "name": "Orílẹ́ède Ààndórà"
+ },
+ "AO": {
+ "name": "Orílẹ́ède Ààngólà"
+ },
+ "AI": {
+ "name": "Orílẹ́ède Ààngúlílà"
+ },
+ "AG": {
+ "name": "Orílẹ́ède Ààntígúà àti Báríbúdà"
+ },
+ "AF": {
+ "name": "Orílẹ́ède Àfùgànístánì"
+ },
+ "AR": {
+ "name": "Orílẹ́ède Agentínà"
+ },
+ "IE": {
+ "name": "Orílẹ́ède Ailandi"
+ },
+ "AL": {
+ "name": "Orílẹ́ède Àlùbàníánì"
+ },
+ "DZ": {
+ "name": "Orílẹ́ède Àlùgèríánì"
+ },
+ "AM": {
+ "name": "Orílẹ́ède Améníà"
+ },
+ "CF": {
+ "name": "Orílẹ́ède Àrin gùngun Áfíríkà"
+ },
+ "ZA": {
+ "name": "Orílẹ́ède Ariwa Afirika"
+ },
+ "KR": {
+ "name": "Orílẹ́ède Ariwa Kọria"
+ },
+ "AW": {
+ "name": "Orílẹ́ède Árúbà"
+ },
+ "AZ": {
+ "name": "Orílẹ́ède Asẹ́bájánì"
+ },
+ "AT": {
+ "name": "Orílẹ́ède Asítíríà"
+ },
+ "AU": {
+ "name": "Orílẹ́ède Ástràlìá"
+ },
+ "IS": {
+ "name": "Orílẹ́ède Aṣilandi"
+ },
+ "BB": {
+ "name": "Orílẹ́ède Bábádósì"
+ },
+ "BS": {
+ "name": "Orílẹ́ède Bàhámásì"
+ },
+ "BD": {
+ "name": "Orílẹ́ède Bángáládésì"
+ },
+ "BH": {
+ "name": "Orílẹ́ède Báránì"
+ },
+ "BR": {
+ "name": "Orílẹ́ède Bàràsílì"
+ },
+ "BE": {
+ "name": "Orílẹ́ède Bégíọ́mù"
+ },
+ "BY": {
+ "name": "Orílẹ́ède Bélárúsì"
+ },
+ "BZ": {
+ "name": "Orílẹ́ède Bèlísẹ̀"
+ },
+ "BM": {
+ "name": "Orílẹ́ède Bémúdà"
+ },
+ "BJ": {
+ "name": "Orílẹ́ède Bẹ̀nẹ̀"
+ },
+ "BO": {
+ "name": "Orílẹ́ède Bọ̀lífíyà"
+ },
+ "BA": {
+ "name": "Orílẹ́ède Bọ̀síníà àti Ẹtisẹgófínà"
+ },
+ "BW": {
+ "name": "Orílẹ́ède Bọ̀tìsúwánà"
+ },
+ "BN": {
+ "name": "Orílẹ́ède Búrúnẹ́lì"
+ },
+ "BT": {
+ "name": "Orílẹ́ède Bútánì"
+ },
+ "BG": {
+ "name": "Orílẹ́ède Bùùgáríà"
+ },
+ "BF": {
+ "name": "Orílẹ́ède Bùùkíná Fasò"
+ },
+ "BI": {
+ "name": "Orílẹ́ède Bùùrúndì"
+ },
+ "DK": {
+ "name": "Orílẹ́ède Dẹ́mákì"
+ },
+ "DJ": {
+ "name": "Orílẹ́ède Díbọ́ótì"
+ },
+ "DM": {
+ "name": "Orílẹ́ède Dòmíníkà"
+ },
+ "DO": {
+ "name": "Orilẹ́ède Dòmíníkánì"
+ },
+ "EG": {
+ "name": "Orílẹ́ède Égípítì"
+ },
+ "EC": {
+ "name": "Orílẹ́ède Ekuádò"
+ },
+ "GQ": {
+ "name": "Orílẹ́ède Ekutoria Gini"
+ },
+ "ER": {
+ "name": "Orílẹ́ède Eritira"
+ },
+ "EE": {
+ "name": "Orílẹ́ède Esitonia"
+ },
+ "VI": {
+ "name": "Orílẹ́ède Etikun Fagini ti Amẹrika"
+ },
+ "VG": {
+ "name": "Orílẹ́ède Etíkun Fágínì ti ìlú Bírítísì"
+ },
+ "FK": {
+ "name": "Orílẹ́ède Etikun Fakalandi"
+ },
+ "MP": {
+ "name": "Orílẹ́ède Etikun Guusu Mariana"
+ },
+ "IO": {
+ "name": "Orílẹ́ède Etíkun Índíánì ti Ìlú Bírítísì"
+ },
+ "MH": {
+ "name": "Orílẹ́ède Etikun Máṣali"
+ },
+ "NF": {
+ "name": "Orílẹ́ède Etikun Nọ́úfókì"
+ },
+ "SB": {
+ "name": "Orílẹ́ède Etikun Solomoni"
+ },
+ "KY": {
+ "name": "Orílẹ́ède Etíokun Kámánì"
+ },
+ "CV": {
+ "name": "Orílẹ́ède Etíokun Kápé féndè"
+ },
+ "CK": {
+ "name": "Orílẹ́ède Etíokun Kùúkù"
+ },
+ "ET": {
+ "name": "Orílẹ́ède Etopia"
+ },
+ "SV": {
+ "name": "Orílẹ́ède Ẹẹsáfádò"
+ },
+ "AE": {
+ "name": "Orílẹ́ède Ẹmirate ti Awọn Arabu"
+ },
+ "VU": {
+ "name": "Orílẹ́ède Faniatu"
+ },
+ "FR": {
+ "name": "Orílẹ́ède Faranse"
+ },
+ "VA": {
+ "name": "Orílẹ́ède Fatikani"
+ },
+ "VE": {
+ "name": "Orílẹ́ède Fẹnẹṣuẹla"
+ },
+ "VN": {
+ "name": "Orílẹ́ède Fẹtinami"
+ },
+ "FJ": {
+ "name": "Orílẹ́ède Fiji"
+ },
+ "FI": {
+ "name": "Orílẹ́ède Filandi"
+ },
+ "PH": {
+ "name": "Orílẹ́ède filipini"
+ },
+ "GF": {
+ "name": "Orílẹ́ède Firenṣi Guana"
+ },
+ "PF": {
+ "name": "Orílẹ́ède Firenṣi Polinesia"
+ },
+ "VC": {
+ "name": "Orílẹ́ède Fisẹnnti ati Genadina"
+ },
+ "GA": {
+ "name": "Orílẹ́ède Gabon"
+ },
+ "GP": {
+ "name": "Orílẹ́ède Gadelope"
+ },
+ "GM": {
+ "name": "Orílẹ́ède Gambia"
+ },
+ "GH": {
+ "name": "Orílẹ́ède Gana"
+ },
+ "DE": {
+ "name": "Orílẹ́ède Gemani"
+ },
+ "GD": {
+ "name": "Orílẹ́ède Genada"
+ },
+ "GN": {
+ "name": "Orílẹ́ède Gene"
+ },
+ "GW": {
+ "name": "Orílẹ́ède Gene-Busau"
+ },
+ "GL": {
+ "name": "Orílẹ́ède Gerelandi"
+ },
+ "GR": {
+ "name": "Orílẹ́ède Geriisi"
+ },
+ "GI": {
+ "name": "Orílẹ́ède Gibaratara"
+ },
+ "GE": {
+ "name": "Orílẹ́ède Gọgia"
+ },
+ "GU": {
+ "name": "Orílẹ́ède Guamu"
+ },
+ "GT": {
+ "name": "Orílẹ́ède Guatemala"
+ },
+ "KP": {
+ "name": "Orílẹ́ède Guusu Kọria"
+ },
+ "GY": {
+ "name": "Orílẹ́ède Guyana"
+ },
+ "HT": {
+ "name": "Orílẹ́ède Haati"
+ },
+ "SH": {
+ "name": "Orílẹ́ède Hẹlena"
+ },
+ "HN": {
+ "name": "Orílẹ́ède Hondurasi"
+ },
+ "HU": {
+ "name": "Orílẹ́ède Hungari"
+ },
+ "TL": {
+ "name": "Orílẹ́ède ÌlàOòrùn Tímọ̀"
+ },
+ "IN": {
+ "name": "Orílẹ́ède India"
+ },
+ "ID": {
+ "name": "Orílẹ́ède Indonesia"
+ },
+ "IQ": {
+ "name": "Orílẹ́ède Iraki"
+ },
+ "IR": {
+ "name": "Orílẹ́ède Irani"
+ },
+ "IL": {
+ "name": "Orílẹ́ède Iserẹli"
+ },
+ "IT": {
+ "name": "Orílẹ́ède Italiyi"
+ },
+ "PS": {
+ "name": "Orílẹ́ède Iwọorun Pakisitian ati Gaṣa"
+ },
+ "JM": {
+ "name": "Orílẹ́ède Jamaika"
+ },
+ "JP": {
+ "name": "Orílẹ́ède Japani"
+ },
+ "JO": {
+ "name": "Orílẹ́ède Jọdani"
+ },
+ "NC": {
+ "name": "Orílẹ́ède Kaledonia Titun"
+ },
+ "CM": {
+ "name": "Orílẹ́ède Kamerúúnì"
+ },
+ "KH": {
+ "name": "Orílẹ́ède Kàmùbódíà"
+ },
+ "CA": {
+ "name": "Orílẹ́ède Kánádà"
+ },
+ "KZ": {
+ "name": "Orílẹ́ède Kaṣaṣatani"
+ },
+ "KE": {
+ "name": "Orílẹ́ède Kenya"
+ },
+ "KN": {
+ "name": "Orílẹ́ède Kiiti ati Neefi"
+ },
+ "KI": {
+ "name": "Orílẹ́ède Kiribati"
+ },
+ "CO": {
+ "name": "Orílẹ́ède Kòlómíbìa"
+ },
+ "KM": {
+ "name": "Orílẹ́ède Kòmòrósì"
+ },
+ "CD": {
+ "name": "Orilẹ́ède Kóngò"
+ },
+ "CG": {
+ "name": "Orílẹ́ède Kóngò"
+ },
+ "HR": {
+ "name": "Orílẹ́ède Kòróátíà"
+ },
+ "QA": {
+ "name": "Orílẹ́ède Kota"
+ },
+ "CI": {
+ "name": "Orílẹ́ède Kóútè forà"
+ },
+ "CU": {
+ "name": "Orílẹ́ède Kúbà"
+ },
+ "KG": {
+ "name": "Orílẹ́ède Kuriṣisitani"
+ },
+ "CY": {
+ "name": "Orílẹ́ède Kúrúsì"
+ },
+ "CR": {
+ "name": "Orílẹ́ède Kuusita Ríkà"
+ },
+ "KW": {
+ "name": "Orílẹ́ède Kuweti"
+ },
+ "LR": {
+ "name": "Orílẹ́ède Laberia"
+ },
+ "LA": {
+ "name": "Orílẹ́ède Laosi"
+ },
+ "LV": {
+ "name": "Orílẹ́ède Latifia"
+ },
+ "LB": {
+ "name": "Orílẹ́ède Lebanoni"
+ },
+ "LS": {
+ "name": "Orílẹ́ède Lesoto"
+ },
+ "LI": {
+ "name": "Orílẹ́ède Lẹṣitẹnisiteni"
+ },
+ "LY": {
+ "name": "Orílẹ́ède Libiya"
+ },
+ "LT": {
+ "name": "Orílẹ́ède Lituania"
+ },
+ "LU": {
+ "name": "Orílẹ́ède Lusemogi"
+ },
+ "LC": {
+ "name": "Orílẹ́ède Luṣia"
+ },
+ "MG": {
+ "name": "Orílẹ́ède Madasika"
+ },
+ "FM": {
+ "name": "Orílẹ́ède Makoronesia"
+ },
+ "MV": {
+ "name": "Orílẹ́ède Maladifi"
+ },
+ "MY": {
+ "name": "Orílẹ́ède Malasia"
+ },
+ "MT": {
+ "name": "Orílẹ́ède Malata"
+ },
+ "MW": {
+ "name": "Orílẹ́ède Malawi"
+ },
+ "ML": {
+ "name": "Orílẹ́ède Mali"
+ },
+ "MM": {
+ "name": "Orílẹ́ède Manamari"
+ },
+ "MR": {
+ "name": "Orílẹ́ède Maritania"
+ },
+ "MU": {
+ "name": "Orílẹ́ède Maritiusi"
+ },
+ "MK": {
+ "name": "Orílẹ́ède Masidonia"
+ },
+ "MQ": {
+ "name": "Orílẹ́ède Matinikuwi"
+ },
+ "YT": {
+ "name": "Orílẹ́ède Mayote"
+ },
+ "MX": {
+ "name": "Orílẹ́ède Mesiko"
+ },
+ "MD": {
+ "name": "Orílẹ́ède Modofia"
+ },
+ "MN": {
+ "name": "Orílẹ́ède Mogolia"
+ },
+ "MC": {
+ "name": "Orílẹ́ède Monako"
+ },
+ "MA": {
+ "name": "Orílẹ́ède Moroko"
+ },
+ "MZ": {
+ "name": "Orílẹ́ède Moṣamibiku"
+ },
+ "MS": {
+ "name": "Orílẹ́ède Motserati"
+ },
+ "NE": {
+ "name": "Orílẹ́ède Nàìjá"
+ },
+ "NG": {
+ "name": "Orílẹ́ède Nàìjíríà"
+ },
+ "NA": {
+ "name": "Orílẹ́ède Namibia"
+ },
+ "NR": {
+ "name": "Orílẹ́ède Nauru"
+ },
+ "NL": {
+ "name": "Orílẹ́ède Nedalandi"
+ },
+ "NP": {
+ "name": "Orílẹ́ède Nepa"
+ },
+ "NI": {
+ "name": "Orílẹ́ède NIkaragua"
+ },
+ "NU": {
+ "name": "Orílẹ́ède Niue"
+ },
+ "NO": {
+ "name": "Orílẹ́ède Nọọwii"
+ },
+ "UY": {
+ "name": "Orílẹ́ède Nruguayi"
+ },
+ "UZ": {
+ "name": "Orílẹ́ède Nṣibẹkisitani"
+ },
+ "GB": {
+ "name": "Orílẹ́ède Omobabirin"
+ },
+ "US": {
+ "name": "Orílẹ́ède Orilẹede Amerika"
+ },
+ "OM": {
+ "name": "Orílẹ́ède Ọọma"
+ },
+ "PW": {
+ "name": "Orílẹ́ède Paalu"
+ },
+ "PG": {
+ "name": "Orílẹ́ède Paapu ti Giini"
+ },
+ "PK": {
+ "name": "Orílẹ́ède Pakisitan"
+ },
+ "PA": {
+ "name": "Orílẹ́ède Panama"
+ },
+ "PY": {
+ "name": "Orílẹ́ède Paraguye"
+ },
+ "PE": {
+ "name": "Orílẹ́ède Peru"
+ },
+ "PM": {
+ "name": "Orílẹ́ède Pẹẹri ati mikuloni"
+ },
+ "PN": {
+ "name": "Orílẹ́ède Pikarini"
+ },
+ "PL": {
+ "name": "Orílẹ́ède Polandi"
+ },
+ "PR": {
+ "name": "Orílẹ́ède Pọto Riko"
+ },
+ "PT": {
+ "name": "Orílẹ́ède Pọtugi"
+ },
+ "RE": {
+ "name": "Orílẹ́ède Riuniyan"
+ },
+ "RO": {
+ "name": "Orílẹ́ède Romaniya"
+ },
+ "RU": {
+ "name": "Orílẹ́ède Rọṣia"
+ },
+ "RW": {
+ "name": "Orílẹ́ède Ruwanda"
+ },
+ "WS": {
+ "name": "Orílẹ́ède Samọ"
+ },
+ "SM": {
+ "name": "Orílẹ́ède Sani Marino"
+ },
+ "ST": {
+ "name": "Orílẹ́ède Sao tomi ati piriiṣipi"
+ },
+ "SZ": {
+ "name": "Orílẹ́ède Saṣiland"
+ },
+ "SA": {
+ "name": "Orílẹ́ède Saudi Arabia"
+ },
+ "SC": {
+ "name": "Orílẹ́ède seṣẹlẹsi"
+ },
+ "SN": {
+ "name": "Orílẹ́ède Sẹnẹga"
+ },
+ "SK": {
+ "name": "Orílẹ́ède Silofakia"
+ },
+ "SI": {
+ "name": "Orílẹ́ède Silofania"
+ },
+ "SG": {
+ "name": "Orílẹ́ède Singapo"
+ },
+ "ES": {
+ "name": "Orílẹ́ède Sipani"
+ },
+ "LK": {
+ "name": "Orílẹ́ède Siri Lanka"
+ },
+ "SY": {
+ "name": "Orílẹ́ède Siria"
+ },
+ "SL": {
+ "name": "Orílẹ́ède Siria looni"
+ },
+ "SO": {
+ "name": "Orílẹ́ède Somalia"
+ },
+ "SD": {
+ "name": "Orílẹ́ède Sudani"
+ },
+ "SR": {
+ "name": "Orílẹ́ède Surinami"
+ },
+ "SE": {
+ "name": "Orílẹ́ède Swidini"
+ },
+ "CH": {
+ "name": "Orílẹ́ède switiṣilandi"
+ },
+ "TD": {
+ "name": "Orílẹ́ède ṣààdì"
+ },
+ "CN": {
+ "name": "Orílẹ́ède ṣáínà"
+ },
+ "ZM": {
+ "name": "Orílẹ́ède ṣamibia"
+ },
+ "CZ": {
+ "name": "Orílẹ́ède ṣẹ́ẹ́kì"
+ },
+ "NZ": {
+ "name": "Orílẹ́ède ṣilandi Titun"
+ },
+ "CL": {
+ "name": "Orílẹ́ède ṣílè"
+ },
+ "ZW": {
+ "name": "Orílẹ́ède ṣimibabe"
+ },
+ "TH": {
+ "name": "Orílẹ́ède Tailandi"
+ },
+ "TW": {
+ "name": "Orílẹ́ède Taiwani"
+ },
+ "TJ": {
+ "name": "Orílẹ́ède Takisitani"
+ },
+ "TZ": {
+ "name": "Orílẹ́ède Tanṣania"
+ },
+ "TT": {
+ "name": "Orílẹ́ède Tirinida ati Tobaga"
+ },
+ "TG": {
+ "name": "Orílẹ́ède Togo"
+ },
+ "TK": {
+ "name": "Orílẹ́ède Tokelau"
+ },
+ "TO": {
+ "name": "Orílẹ́ède Tonga"
+ },
+ "TR": {
+ "name": "Orílẹ́ède Tọọki"
+ },
+ "TC": {
+ "name": "Orílẹ́ède Tọọki ati Etikun Kakọsi"
+ },
+ "TM": {
+ "name": "Orílẹ́ède Tọọkimenisita"
+ },
+ "TV": {
+ "name": "Orílẹ́ède Tufalu"
+ },
+ "TN": {
+ "name": "Orílẹ́ède Tuniṣia"
+ },
+ "UG": {
+ "name": "Orílẹ́ède Uganda"
+ },
+ "UA": {
+ "name": "Orílẹ́ède Ukarini"
+ },
+ "WF": {
+ "name": "Orílẹ́ède Wali ati futuna"
+ },
+ "YE": {
+ "name": "Orílẹ́ède yemeni"
+ },
+ "AS": {
+ "name": "Sámóánì ti Orílẹ́ède Àméríkà"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zgh.json b/library/intl/resources/country/zgh.json
new file mode 100644
index 000000000..9aa27f8b5
--- /dev/null
+++ b/library/intl/resources/country/zgh.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Åland Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "PS": {
+ "name": "ⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ"
+ },
+ "AZ": {
+ "name": "ⴰⴷⵔⴰⴱⵉⵊⴰⵏ"
+ },
+ "GI": {
+ "name": "ⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇ"
+ },
+ "ZA": {
+ "name": "ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ"
+ },
+ "AF": {
+ "name": "ⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏ"
+ },
+ "AL": {
+ "name": "ⴰⵍⴱⴰⵏⵢⴰ"
+ },
+ "DE": {
+ "name": "ⴰⵍⵎⴰⵏⵢⴰ"
+ },
+ "AI": {
+ "name": "ⴰⵏⴳⵉⵍⴰ"
+ },
+ "AO": {
+ "name": "ⴰⵏⴳⵓⵍⴰ"
+ },
+ "ID": {
+ "name": "ⴰⵏⴷⵓⵏⵉⵙⵢⴰ"
+ },
+ "AD": {
+ "name": "ⴰⵏⴷⵓⵔⴰ"
+ },
+ "AG": {
+ "name": "ⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰ"
+ },
+ "AR": {
+ "name": "ⴰⵔⵊⴰⵏⵜⵉⵏ"
+ },
+ "AM": {
+ "name": "ⴰⵔⵎⵉⵏⵢⴰ"
+ },
+ "AW": {
+ "name": "ⴰⵔⵓⴱⴰ"
+ },
+ "VA": {
+ "name": "ⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏ"
+ },
+ "PG": {
+ "name": "ⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ"
+ },
+ "PK": {
+ "name": "ⴱⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "BS": {
+ "name": "ⴱⴰⵀⴰⵎⴰⵙ"
+ },
+ "PW": {
+ "name": "ⴱⴰⵍⴰⵡ"
+ },
+ "PA": {
+ "name": "ⴱⴰⵏⴰⵎⴰ"
+ },
+ "BD": {
+ "name": "ⴱⴰⵏⴳⵍⴰⴷⵉⵛ"
+ },
+ "PY": {
+ "name": "ⴱⴰⵔⴰⴳⵡⴰⵢ"
+ },
+ "BB": {
+ "name": "ⴱⴰⵔⴱⴰⴷ"
+ },
+ "BT": {
+ "name": "ⴱⵀⵓⵜⴰⵏ"
+ },
+ "BH": {
+ "name": "ⴱⵃⵔⴰⵢⵏ"
+ },
+ "BY": {
+ "name": "ⴱⵉⵍⴰⵔⵓⵙⵢⴰ"
+ },
+ "BZ": {
+ "name": "ⴱⵉⵍⵉⵣ"
+ },
+ "BJ": {
+ "name": "ⴱⵉⵏⵉⵏ"
+ },
+ "PE": {
+ "name": "ⴱⵉⵔⵓ"
+ },
+ "PN": {
+ "name": "ⴱⵉⵜⴽⴰⵢⵔⵏ"
+ },
+ "BE": {
+ "name": "ⴱⵍⵊⵉⴽⴰ"
+ },
+ "BG": {
+ "name": "ⴱⵍⵖⴰⵔⵢⴰ"
+ },
+ "BO": {
+ "name": "ⴱⵓⵍⵉⴱⵢⴰ"
+ },
+ "PF": {
+ "name": "ⴱⵓⵍⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "PL": {
+ "name": "ⴱⵓⵍⵓⵏⵢⴰ"
+ },
+ "BF": {
+ "name": "ⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓ"
+ },
+ "BI": {
+ "name": "ⴱⵓⵔⵓⵏⴷⵉ"
+ },
+ "PR": {
+ "name": "ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ"
+ },
+ "BA": {
+ "name": "ⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽ"
+ },
+ "BW": {
+ "name": "ⴱⵓⵜⵙⵡⴰⵏⴰ"
+ },
+ "BR": {
+ "name": "ⴱⵔⴰⵣⵉⵍ"
+ },
+ "BM": {
+ "name": "ⴱⵔⵎⵓⴷⴰ"
+ },
+ "BN": {
+ "name": "ⴱⵔⵓⵏⵉ"
+ },
+ "PT": {
+ "name": "ⴱⵕⵟⵇⵉⵣ"
+ },
+ "GA": {
+ "name": "ⴳⴰⴱⵓⵏ"
+ },
+ "GM": {
+ "name": "ⴳⴰⵎⴱⵢⴰ"
+ },
+ "GL": {
+ "name": "ⴳⵔⵉⵍⴰⵏⴷ"
+ },
+ "GP": {
+ "name": "ⴳⵡⴰⴷⴰⵍⵓⴱ"
+ },
+ "GU": {
+ "name": "ⴳⵡⴰⵎ"
+ },
+ "GT": {
+ "name": "ⴳⵡⴰⵜⵉⵎⴰⵍⴰ"
+ },
+ "GF": {
+ "name": "ⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "GY": {
+ "name": "ⴳⵡⵉⵢⴰⵏⴰ"
+ },
+ "DK": {
+ "name": "ⴷⴰⵏⵎⴰⵔⴽ"
+ },
+ "DJ": {
+ "name": "ⴷⵊⵉⴱⵓⵜⵉ"
+ },
+ "DM": {
+ "name": "ⴷⵓⵎⵉⵏⵉⴽ"
+ },
+ "DZ": {
+ "name": "ⴷⵣⴰⵢⵔ"
+ },
+ "VU": {
+ "name": "ⴼⴰⵏⵡⴰⵟⵓ"
+ },
+ "FJ": {
+ "name": "ⴼⵉⴷⵊⵉ"
+ },
+ "PH": {
+ "name": "ⴼⵉⵍⵉⴱⴱⵉⵏ"
+ },
+ "FI": {
+ "name": "ⴼⵉⵍⵍⴰⵏⴷⴰ"
+ },
+ "VE": {
+ "name": "ⴼⵉⵏⵣⵡⵉⵍⴰ"
+ },
+ "VN": {
+ "name": "ⴼⵉⵜⵏⴰⵎ"
+ },
+ "FR": {
+ "name": "ⴼⵔⴰⵏⵙⴰ"
+ },
+ "NC": {
+ "name": "ⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ"
+ },
+ "KH": {
+ "name": "ⴽⴰⵎⴱⵓⴷⵢⴰ"
+ },
+ "CM": {
+ "name": "ⴽⴰⵎⵉⵔⵓⵏ"
+ },
+ "CA": {
+ "name": "ⴽⴰⵏⴰⴷⴰ"
+ },
+ "KZ": {
+ "name": "ⴽⴰⵣⴰⵅⵙⵜⴰⵏ"
+ },
+ "KE": {
+ "name": "ⴽⵉⵏⵢⴰ"
+ },
+ "KI": {
+ "name": "ⴽⵉⵔⵉⴱⴰⵜⵉ"
+ },
+ "KG": {
+ "name": "ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏ"
+ },
+ "CU": {
+ "name": "ⴽⵓⴱⴰ"
+ },
+ "CO": {
+ "name": "ⴽⵓⵍⵓⵎⴱⵢⴰ"
+ },
+ "CG": {
+ "name": "ⴽⵓⵏⴳⵓ"
+ },
+ "KR": {
+ "name": "ⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ"
+ },
+ "KP": {
+ "name": "ⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹ"
+ },
+ "CR": {
+ "name": "ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ"
+ },
+ "CI": {
+ "name": "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ"
+ },
+ "HR": {
+ "name": "ⴽⵔⵡⴰⵜⵢⴰ"
+ },
+ "HT": {
+ "name": "ⵀⴰⵢⵜⵉ"
+ },
+ "HU": {
+ "name": "ⵀⵏⵖⴰⵔⵢⴰ"
+ },
+ "NL": {
+ "name": "ⵀⵓⵍⴰⵏⴷⴰ"
+ },
+ "HN": {
+ "name": "ⵀⵓⵏⴷⵓⵔⴰⵙ"
+ },
+ "OM": {
+ "name": "ⵄⵓⵎⴰⵏ"
+ },
+ "QA": {
+ "name": "ⵇⴰⵜⴰⵔ"
+ },
+ "CY": {
+ "name": "ⵇⵓⴱⵔⵓⵙ"
+ },
+ "KM": {
+ "name": "ⵇⵓⵎⵓⵔ"
+ },
+ "EC": {
+ "name": "ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "IR": {
+ "name": "ⵉⵔⴰⵏ"
+ },
+ "ER": {
+ "name": "ⵉⵔⵉⵜⵉⵔⵢⴰ"
+ },
+ "IE": {
+ "name": "ⵉⵔⵍⴰⵏⴷⴰ"
+ },
+ "IS": {
+ "name": "ⵉⵙⵍⴰⵏⴷ"
+ },
+ "IL": {
+ "name": "ⵉⵙⵔⴰⵢⵉⵍ"
+ },
+ "EE": {
+ "name": "ⵉⵙⵜⵓⵏⵢⴰ"
+ },
+ "ET": {
+ "name": "ⵉⵜⵢⵓⴱⵢⴰ"
+ },
+ "IT": {
+ "name": "ⵉⵟⴰⵍⵢⴰ"
+ },
+ "US": {
+ "name": "ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏ"
+ },
+ "JM": {
+ "name": "ⵊⴰⵎⴰⵢⴽⴰ"
+ },
+ "GE": {
+ "name": "ⵊⵓⵔⵊⵢⴰ"
+ },
+ "LV": {
+ "name": "ⵍⴰⵜⴼⵢⴰ"
+ },
+ "LA": {
+ "name": "ⵍⴰⵡⵙ"
+ },
+ "KW": {
+ "name": "ⵍⴽⵡⵉⵜ"
+ },
+ "IN": {
+ "name": "ⵍⵀⵉⵏⴷ"
+ },
+ "IQ": {
+ "name": "ⵍⵄⵉⵔⴰⵇ"
+ },
+ "LR": {
+ "name": "ⵍⵉⴱⵉⵔⵢⴰ"
+ },
+ "LY": {
+ "name": "ⵍⵉⴱⵢⴰ"
+ },
+ "LI": {
+ "name": "ⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏ"
+ },
+ "AE": {
+ "name": "ⵍⵉⵎⴰⵔⴰⵜ"
+ },
+ "LS": {
+ "name": "ⵍⵉⵚⵓⵟⵓ"
+ },
+ "LT": {
+ "name": "ⵍⵉⵜⵡⴰⵏⵢⴰ"
+ },
+ "MA": {
+ "name": "ⵍⵎⵖⵔⵉⴱ"
+ },
+ "LB": {
+ "name": "ⵍⵓⴱⵏⴰⵏ"
+ },
+ "LU": {
+ "name": "ⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳ"
+ },
+ "JO": {
+ "name": "ⵍⵓⵔⴷⵓⵏ"
+ },
+ "JP": {
+ "name": "ⵍⵢⴰⴱⴰⵏ"
+ },
+ "GR": {
+ "name": "ⵍⵢⵓⵏⴰⵏ"
+ },
+ "MG": {
+ "name": "ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"
+ },
+ "MW": {
+ "name": "ⵎⴰⵍⴰⵡⵉ"
+ },
+ "MV": {
+ "name": "ⵎⴰⵍⴷⵉⴼ"
+ },
+ "ML": {
+ "name": "ⵎⴰⵍⵉ"
+ },
+ "MY": {
+ "name": "ⵎⴰⵍⵉⵣⵢⴰ"
+ },
+ "MT": {
+ "name": "ⵎⴰⵍⵟⴰ"
+ },
+ "MQ": {
+ "name": "ⵎⴰⵔⵜⵉⵏⵉⴽ"
+ },
+ "MK": {
+ "name": "ⵎⴰⵙⵉⴷⵓⵏⵢⴰ"
+ },
+ "YT": {
+ "name": "ⵎⴰⵢⵓⵟ"
+ },
+ "FM": {
+ "name": "ⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰ"
+ },
+ "MX": {
+ "name": "ⵎⵉⴽⵙⵉⴽ"
+ },
+ "EG": {
+ "name": "ⵎⵉⵚⵕ"
+ },
+ "MN": {
+ "name": "ⵎⵏⵖⵓⵍⵢⴰ"
+ },
+ "MD": {
+ "name": "ⵎⵓⵍⴷⵓⴼⵢⴰ"
+ },
+ "MC": {
+ "name": "ⵎⵓⵏⴰⴽⵓ"
+ },
+ "MS": {
+ "name": "ⵎⵓⵏⵙⵉⵔⴰⵜ"
+ },
+ "ME": {
+ "name": "ⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓ"
+ },
+ "MU": {
+ "name": "ⵎⵓⵔⵉⵙ"
+ },
+ "MR": {
+ "name": "ⵎⵓⵕⵉⵟⴰⵏⵢⴰ"
+ },
+ "MZ": {
+ "name": "ⵎⵓⵣⵏⴱⵉⵇ"
+ },
+ "MM": {
+ "name": "ⵎⵢⴰⵏⵎⴰⵔ"
+ },
+ "NA": {
+ "name": "ⵏⴰⵎⵉⴱⵢⴰ"
+ },
+ "NR": {
+ "name": "ⵏⴰⵡⵔⵓ"
+ },
+ "NP": {
+ "name": "ⵏⵉⴱⴰⵍ"
+ },
+ "NI": {
+ "name": "ⵏⵉⴽⴰⵔⴰⴳⵡⴰ"
+ },
+ "NG": {
+ "name": "ⵏⵉⵊⵉⵔⵢⴰ"
+ },
+ "NU": {
+ "name": "ⵏⵉⵡⵉ"
+ },
+ "NE": {
+ "name": "ⵏⵏⵉⵊⵉⵔ"
+ },
+ "AT": {
+ "name": "ⵏⵏⵎⵙⴰ"
+ },
+ "NO": {
+ "name": "ⵏⵏⵔⵡⵉⵊ"
+ },
+ "NZ": {
+ "name": "ⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰ"
+ },
+ "UA": {
+ "name": "ⵓⴽⵔⴰⵏⵢⴰ"
+ },
+ "UY": {
+ "name": "ⵓⵔⵓⴳⵡⴰⵢ"
+ },
+ "UG": {
+ "name": "ⵓⵖⴰⵏⴷⴰ"
+ },
+ "AU": {
+ "name": "ⵓⵙⵜⵔⴰⵍⵢⴰ"
+ },
+ "UZ": {
+ "name": "ⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "RE": {
+ "name": "ⵔⵉⵢⵓⵏⵢⵓⵏ"
+ },
+ "RO": {
+ "name": "ⵔⵓⵎⴰⵏⵢⴰ"
+ },
+ "RU": {
+ "name": "ⵔⵓⵙⵢⴰ"
+ },
+ "RW": {
+ "name": "ⵔⵡⴰⵏⴷⴰ"
+ },
+ "GH": {
+ "name": "ⵖⴰⵏⴰ"
+ },
+ "GN": {
+ "name": "ⵖⵉⵏⵢⴰ"
+ },
+ "GW": {
+ "name": "ⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡ"
+ },
+ "GQ": {
+ "name": "ⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "GD": {
+ "name": "ⵖⵔⵏⴰⵟⴰ"
+ },
+ "SV": {
+ "name": "ⵙⴰⵍⴼⴰⴷⵓⵔ"
+ },
+ "WS": {
+ "name": "ⵙⴰⵎⵡⴰ"
+ },
+ "AS": {
+ "name": "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜ"
+ },
+ "PM": {
+ "name": "ⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎⵉⴽⵍⵓⵏ"
+ },
+ "VC": {
+ "name": "ⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏ"
+ },
+ "KN": {
+ "name": "ⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙ"
+ },
+ "SM": {
+ "name": "ⵙⴰⵏⵎⴰⵔⵉⵏⵓ"
+ },
+ "SH": {
+ "name": "ⵙⴰⵏⵜⵉⵍⵉⵏ"
+ },
+ "LC": {
+ "name": "ⵙⴰⵏⵜⵍⵓⵙⵉ"
+ },
+ "ST": {
+ "name": "ⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱ"
+ },
+ "ES": {
+ "name": "ⵙⴱⴰⵏⵢⴰ"
+ },
+ "RS": {
+ "name": "ⵙⵉⵔⴱⵢⴰ"
+ },
+ "SK": {
+ "name": "ⵙⵍⵓⴼⴰⴽⵢⴰ"
+ },
+ "SI": {
+ "name": "ⵙⵍⵓⴼⵉⵏⵢⴰ"
+ },
+ "SG": {
+ "name": "ⵙⵏⵖⴰⴼⵓⵔⴰ"
+ },
+ "SR": {
+ "name": "ⵙⵓⵔⵉⵏⴰⵎ"
+ },
+ "SY": {
+ "name": "ⵙⵓⵔⵢⴰ"
+ },
+ "LK": {
+ "name": "ⵙⵔⵉⵍⴰⵏⴽⴰ"
+ },
+ "SA": {
+ "name": "ⵙⵙⴰⵄⵓⴷⵉⵢⴰ"
+ },
+ "SN": {
+ "name": "ⵙⵙⵉⵏⵉⴳⴰⵍ"
+ },
+ "SL": {
+ "name": "ⵙⵙⵉⵔⴰⵍⵢⵓⵏ"
+ },
+ "SC": {
+ "name": "ⵙⵙⵉⵛⵉⵍ"
+ },
+ "SD": {
+ "name": "ⵙⵙⵓⴷⴰⵏ"
+ },
+ "SS": {
+ "name": "ⵙⵙⵓⴷⴰⵏ ⵏ ⵉⴼⴼⵓⵙ"
+ },
+ "SE": {
+ "name": "ⵙⵙⵡⵉⴷ"
+ },
+ "SZ": {
+ "name": "ⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰ"
+ },
+ "CH": {
+ "name": "ⵙⵡⵉⵙⵔⴰ"
+ },
+ "SO": {
+ "name": "ⵚⵚⵓⵎⴰⵍ"
+ },
+ "CL": {
+ "name": "ⵛⵛⵉⵍⵉ"
+ },
+ "CN": {
+ "name": "ⵛⵛⵉⵏⵡⴰ"
+ },
+ "CD": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓ"
+ },
+ "DO": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜ"
+ },
+ "CF": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰ"
+ },
+ "CZ": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "GB": {
+ "name": "ⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏ"
+ },
+ "TJ": {
+ "name": "ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏ"
+ },
+ "IO": {
+ "name": "ⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉ"
+ },
+ "CV": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ"
+ },
+ "KY": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏ"
+ },
+ "CK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽ"
+ },
+ "FK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉ"
+ },
+ "MH": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ"
+ },
+ "MP": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹ"
+ },
+ "NF": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽ"
+ },
+ "SB": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏ"
+ },
+ "TC": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ"
+ },
+ "VI": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ"
+ },
+ "VG": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣ"
+ },
+ "TL": {
+ "name": "ⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜ"
+ },
+ "TV": {
+ "name": "ⵜⵓⴼⴰⵍⵓ"
+ },
+ "TN": {
+ "name": "ⵜⵓⵏⵙ"
+ },
+ "TM": {
+ "name": "ⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏ"
+ },
+ "TR": {
+ "name": "ⵜⵓⵔⴽⵢⴰ"
+ },
+ "TT": {
+ "name": "ⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓ"
+ },
+ "TD": {
+ "name": "ⵜⵛⴰⴷ"
+ },
+ "TZ": {
+ "name": "ⵟⴰⵏⵥⴰⵏⵢⴰ"
+ },
+ "TH": {
+ "name": "ⵟⴰⵢⵍⴰⵏⴷ"
+ },
+ "TW": {
+ "name": "ⵟⴰⵢⵡⴰⵏ"
+ },
+ "TG": {
+ "name": "ⵟⵓⴳⵓ"
+ },
+ "TK": {
+ "name": "ⵟⵓⴽⵍⴰⵡ"
+ },
+ "TO": {
+ "name": "ⵟⵓⵏⴳⴰ"
+ },
+ "WF": {
+ "name": "ⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰ"
+ },
+ "YE": {
+ "name": "ⵢⴰⵎⴰⵏ"
+ },
+ "ZM": {
+ "name": "ⵣⴰⵎⴱⵢⴰ"
+ },
+ "ZW": {
+ "name": "ⵣⵉⵎⴱⴰⴱⵡⵉ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-HK.json b/library/intl/resources/country/zh-Hans-HK.json
new file mode 100644
index 000000000..b1984d291
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-HK.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔及利亚"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯联合酋长国"
+ },
+ "AW": {
+ "name": "阿鲁巴"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森松岛"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安道尔"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安提瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "巴勒斯坦领土"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "保加利亚"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "贝宁"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "博茨瓦纳"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "朝鲜"
+ },
+ "GQ": {
+ "name": "赤道几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东帝汶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "俄罗斯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属南部领地"
+ },
+ "MF": {
+ "name": "法属圣马丁"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "菲律宾"
+ },
+ "FJ": {
+ "name": "斐济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "福克兰群岛"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "格鲁吉亚"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "GP": {
+ "name": "瓜德罗普岛"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈萨克斯坦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "荷兰"
+ },
+ "BQ": {
+ "name": "荷兰加勒比区"
+ },
+ "SX": {
+ "name": "荷属圣马丁"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "吉布提"
+ },
+ "KG": {
+ "name": "吉尔吉斯斯坦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比绍"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "捷克共和国"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "卡塔尔"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "老挝"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "卢森堡"
+ },
+ "RW": {
+ "name": "卢旺达"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马来西亚"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马绍尔群岛"
+ },
+ "MQ": {
+ "name": "马提尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外小岛屿"
+ },
+ "AS": {
+ "name": "美属萨摩亚"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘鲁"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南极洲"
+ },
+ "GS": {
+ "name": "南乔治亚岛和南桑威齐群岛"
+ },
+ "SS": {
+ "name": "南苏丹"
+ },
+ "NR": {
+ "name": "瑙鲁"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "NF": {
+ "name": "诺福克岛"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯恩群岛"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "萨尔瓦多"
+ },
+ "WS": {
+ "name": "萨摩亚"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣卢西亚"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳丁斯"
+ },
+ "LK": {
+ "name": "斯里兰卡"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "斯威士兰"
+ },
+ "SD": {
+ "name": "苏丹"
+ },
+ "SR": {
+ "name": "苏里南"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "塔吉克斯坦"
+ },
+ "TW": {
+ "name": "台湾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "坦桑尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯坦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "突尼斯"
+ },
+ "TV": {
+ "name": "图瓦卢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯坦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "危地马拉"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯坦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达及梅利利亚"
+ },
+ "SY": {
+ "name": "叙利亚"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "ID": {
+ "name": "印度尼西亚"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属印度洋领地"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中非共和国"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-MO.json b/library/intl/resources/country/zh-Hans-MO.json
new file mode 100644
index 000000000..dac93f65b
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-MO.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔及利亚"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯联合酋长国"
+ },
+ "AW": {
+ "name": "阿鲁巴"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森松岛"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安道尔"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安提瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "巴勒斯坦领土"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "保加利亚"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "贝宁"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "博茨瓦纳"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "朝鲜"
+ },
+ "GQ": {
+ "name": "赤道几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东帝汶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "俄罗斯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属南部领地"
+ },
+ "MF": {
+ "name": "法属圣马丁"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "菲律宾"
+ },
+ "FJ": {
+ "name": "斐济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "福克兰群岛"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "格鲁吉亚"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈萨克斯坦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "荷兰"
+ },
+ "BQ": {
+ "name": "荷兰加勒比区"
+ },
+ "SX": {
+ "name": "荷属圣马丁"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "吉布提"
+ },
+ "KG": {
+ "name": "吉尔吉斯斯坦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比绍"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "捷克共和国"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "卡塔尔"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "老挝"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "卢森堡"
+ },
+ "RW": {
+ "name": "卢旺达"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马来西亚"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马绍尔群岛"
+ },
+ "MQ": {
+ "name": "马提尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外小岛屿"
+ },
+ "AS": {
+ "name": "美属萨摩亚"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘鲁"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南极洲"
+ },
+ "GS": {
+ "name": "南乔治亚岛和南桑威齐群岛"
+ },
+ "SS": {
+ "name": "南苏丹"
+ },
+ "NR": {
+ "name": "瑙鲁"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "NF": {
+ "name": "诺福克岛"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯恩群岛"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "萨尔瓦多"
+ },
+ "WS": {
+ "name": "萨摩亚"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣卢西亚"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳丁斯"
+ },
+ "LK": {
+ "name": "斯里兰卡"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "斯威士兰"
+ },
+ "SD": {
+ "name": "苏丹"
+ },
+ "SR": {
+ "name": "苏里南"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "塔吉克斯坦"
+ },
+ "TW": {
+ "name": "台湾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "坦桑尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯坦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "突尼斯"
+ },
+ "TV": {
+ "name": "图瓦卢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯坦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "危地马拉"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯坦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达及梅利利亚"
+ },
+ "SY": {
+ "name": "叙利亚"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "ID": {
+ "name": "印度尼西亚"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属印度洋领地"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中非共和国"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-SG.json b/library/intl/resources/country/zh-Hans-SG.json
new file mode 100644
index 000000000..dac93f65b
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-SG.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔及利亚"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯联合酋长国"
+ },
+ "AW": {
+ "name": "阿鲁巴"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森松岛"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安道尔"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安提瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "巴勒斯坦领土"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "保加利亚"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "贝宁"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "博茨瓦纳"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "朝鲜"
+ },
+ "GQ": {
+ "name": "赤道几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东帝汶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "俄罗斯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属南部领地"
+ },
+ "MF": {
+ "name": "法属圣马丁"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "菲律宾"
+ },
+ "FJ": {
+ "name": "斐济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "福克兰群岛"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "格鲁吉亚"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈萨克斯坦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "荷兰"
+ },
+ "BQ": {
+ "name": "荷兰加勒比区"
+ },
+ "SX": {
+ "name": "荷属圣马丁"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "吉布提"
+ },
+ "KG": {
+ "name": "吉尔吉斯斯坦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比绍"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "捷克共和国"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "卡塔尔"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "老挝"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "卢森堡"
+ },
+ "RW": {
+ "name": "卢旺达"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马来西亚"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马绍尔群岛"
+ },
+ "MQ": {
+ "name": "马提尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外小岛屿"
+ },
+ "AS": {
+ "name": "美属萨摩亚"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘鲁"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南极洲"
+ },
+ "GS": {
+ "name": "南乔治亚岛和南桑威齐群岛"
+ },
+ "SS": {
+ "name": "南苏丹"
+ },
+ "NR": {
+ "name": "瑙鲁"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "NF": {
+ "name": "诺福克岛"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯恩群岛"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "萨尔瓦多"
+ },
+ "WS": {
+ "name": "萨摩亚"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣卢西亚"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳丁斯"
+ },
+ "LK": {
+ "name": "斯里兰卡"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "斯威士兰"
+ },
+ "SD": {
+ "name": "苏丹"
+ },
+ "SR": {
+ "name": "苏里南"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "塔吉克斯坦"
+ },
+ "TW": {
+ "name": "台湾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "坦桑尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯坦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "突尼斯"
+ },
+ "TV": {
+ "name": "图瓦卢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯坦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "危地马拉"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯坦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达及梅利利亚"
+ },
+ "SY": {
+ "name": "叙利亚"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "ID": {
+ "name": "印度尼西亚"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属印度洋领地"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中非共和国"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant-HK.json b/library/intl/resources/country/zh-Hant-HK.json
new file mode 100644
index 000000000..f0f5ba0cf
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant-HK.json
@@ -0,0 +1,761 @@
+{
+ "YE": {
+ "name": "也門"
+ },
+ "TT": {
+ "name": "千里達和多巴哥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "CF": {
+ "name": "中非共和國"
+ },
+ "CN": {
+ "name": "中華人民共和國"
+ },
+ "HK": {
+ "name": "中華人民共和國香港特別行政區"
+ },
+ "MO": {
+ "name": "中華人民共和國澳門特別行政區"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄立特里亞"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亞新幾內亞"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "巴勒斯坦自治區"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "MR": {
+ "name": "毛里塔尼亞"
+ },
+ "MU": {
+ "name": "毛里裘斯"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加納"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "MP": {
+ "name": "北馬里亞納群島"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "卡塔爾"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "CC": {
+ "name": "可可斯群島"
+ },
+ "TW": {
+ "name": "台灣"
+ },
+ "NG": {
+ "name": "尼日利亞"
+ },
+ "NE": {
+ "name": "尼日爾"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布吉納法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖納群島"
+ },
+ "VU": {
+ "name": "瓦努阿圖"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特凱恩島"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休達與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "印尼"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "GT": {
+ "name": "危地馬拉"
+ },
+ "DJ": {
+ "name": "吉布地"
+ },
+ "KI": {
+ "name": "吉里巴斯"
+ },
+ "KG": {
+ "name": "吉爾吉斯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AG": {
+ "name": "安提瓜及巴布達"
+ },
+ "AD": {
+ "name": "安道爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕達"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "BZ": {
+ "name": "伯利茲"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "HR": {
+ "name": "克羅地亞"
+ },
+ "LR": {
+ "name": "利比里亞"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶萊"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BJ": {
+ "name": "貝寧"
+ },
+ "GQ": {
+ "name": "赤道幾內亞"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "TZ": {
+ "name": "坦桑尼亞"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "GM": {
+ "name": "岡比亞"
+ },
+ "PW": {
+ "name": "帛琉"
+ },
+ "SB": {
+ "name": "所羅門群島"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TL": {
+ "name": "東帝汶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "PF": {
+ "name": "法屬波利尼西亞"
+ },
+ "TF": {
+ "name": "法屬南部地區"
+ },
+ "MF": {
+ "name": "法屬聖馬丁"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "BA": {
+ "name": "波斯尼亞和黑塞哥維那"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯雅"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯聯合酋長國"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森松島"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "DZ": {
+ "name": "阿爾及利亞"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "AW": {
+ "name": "阿魯巴"
+ },
+ "RU": {
+ "name": "俄羅斯"
+ },
+ "BG": {
+ "name": "保加利亞"
+ },
+ "GS": {
+ "name": "南佐治亞島與南桑威奇群島"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南極洲"
+ },
+ "KR": {
+ "name": "南韓"
+ },
+ "SS": {
+ "name": "南蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "ZW": {
+ "name": "津巴布韋"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "KM": {
+ "name": "科摩羅"
+ },
+ "TN": {
+ "name": "突尼西亞"
+ },
+ "JO": {
+ "name": "約旦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外小島嶼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬印度洋領土"
+ },
+ "IM": {
+ "name": "英屬地曼島"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果 - 布拉薩"
+ },
+ "CD": {
+ "name": "剛果 - 金夏沙"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯達黎加"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亞"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GD": {
+ "name": "格林納達"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GE": {
+ "name": "格魯吉亞"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "烏干達"
+ },
+ "UA": {
+ "name": "烏克蘭"
+ },
+ "UY": {
+ "name": "烏拉圭"
+ },
+ "UZ": {
+ "name": "烏茲別克"
+ },
+ "TC": {
+ "name": "特克斯和凱科斯群島"
+ },
+ "TA": {
+ "name": "特里斯坦達庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "納米比亞"
+ },
+ "NZ": {
+ "name": "紐西蘭"
+ },
+ "NU": {
+ "name": "紐埃島"
+ },
+ "SO": {
+ "name": "索馬里"
+ },
+ "MQ": {
+ "name": "馬丁尼克島"
+ },
+ "ML": {
+ "name": "馬里"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉威"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬達加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾代夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "捷克共和國"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "VA": {
+ "name": "梵蒂岡宮城"
+ },
+ "SX": {
+ "name": "荷屬聖馬丁"
+ },
+ "NL": {
+ "name": "荷蘭"
+ },
+ "BQ": {
+ "name": "荷蘭加勒比區"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "BW": {
+ "name": "博茨瓦納"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "斐濟"
+ },
+ "SJ": {
+ "name": "斯瓦爾巴群島及揚馬延島"
+ },
+ "LK": {
+ "name": "斯里蘭卡"
+ },
+ "SZ": {
+ "name": "斯威士蘭"
+ },
+ "SI": {
+ "name": "斯洛文尼亞"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "TO": {
+ "name": "湯加"
+ },
+ "PH": {
+ "name": "菲律賓"
+ },
+ "LS": {
+ "name": "萊索托"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "TJ": {
+ "name": "塔吉克"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞舌爾"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞"
+ },
+ "NR": {
+ "name": "瑙魯"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "BL": {
+ "name": "聖巴泰勒米"
+ },
+ "VC": {
+ "name": "聖文森特和格林納丁斯"
+ },
+ "PM": {
+ "name": "聖皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "聖多美普林西比"
+ },
+ "SM": {
+ "name": "聖馬利諾"
+ },
+ "KN": {
+ "name": "聖基茨和尼維斯"
+ },
+ "SH": {
+ "name": "聖赫勒拿島"
+ },
+ "CX": {
+ "name": "聖誕島"
+ },
+ "LC": {
+ "name": "聖盧西亞"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "TV": {
+ "name": "圖瓦盧"
+ },
+ "FK": {
+ "name": "福克蘭群島"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙塞拉特島"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩納哥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧旺達"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾福克島"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "ZM": {
+ "name": "贊比亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇里南"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant-MO.json b/library/intl/resources/country/zh-Hant-MO.json
new file mode 100644
index 000000000..f0f5ba0cf
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant-MO.json
@@ -0,0 +1,761 @@
+{
+ "YE": {
+ "name": "也門"
+ },
+ "TT": {
+ "name": "千里達和多巴哥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "CF": {
+ "name": "中非共和國"
+ },
+ "CN": {
+ "name": "中華人民共和國"
+ },
+ "HK": {
+ "name": "中華人民共和國香港特別行政區"
+ },
+ "MO": {
+ "name": "中華人民共和國澳門特別行政區"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄立特里亞"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亞新幾內亞"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "巴勒斯坦自治區"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "MR": {
+ "name": "毛里塔尼亞"
+ },
+ "MU": {
+ "name": "毛里裘斯"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加納"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "MP": {
+ "name": "北馬里亞納群島"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "卡塔爾"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "CC": {
+ "name": "可可斯群島"
+ },
+ "TW": {
+ "name": "台灣"
+ },
+ "NG": {
+ "name": "尼日利亞"
+ },
+ "NE": {
+ "name": "尼日爾"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布吉納法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖納群島"
+ },
+ "VU": {
+ "name": "瓦努阿圖"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特凱恩島"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休達與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "印尼"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "GT": {
+ "name": "危地馬拉"
+ },
+ "DJ": {
+ "name": "吉布地"
+ },
+ "KI": {
+ "name": "吉里巴斯"
+ },
+ "KG": {
+ "name": "吉爾吉斯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AG": {
+ "name": "安提瓜及巴布達"
+ },
+ "AD": {
+ "name": "安道爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕達"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "BZ": {
+ "name": "伯利茲"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "HR": {
+ "name": "克羅地亞"
+ },
+ "LR": {
+ "name": "利比里亞"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶萊"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BJ": {
+ "name": "貝寧"
+ },
+ "GQ": {
+ "name": "赤道幾內亞"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "TZ": {
+ "name": "坦桑尼亞"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "GM": {
+ "name": "岡比亞"
+ },
+ "PW": {
+ "name": "帛琉"
+ },
+ "SB": {
+ "name": "所羅門群島"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TL": {
+ "name": "東帝汶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "PF": {
+ "name": "法屬波利尼西亞"
+ },
+ "TF": {
+ "name": "法屬南部地區"
+ },
+ "MF": {
+ "name": "法屬聖馬丁"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "BA": {
+ "name": "波斯尼亞和黑塞哥維那"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯雅"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯聯合酋長國"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森松島"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "DZ": {
+ "name": "阿爾及利亞"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "AW": {
+ "name": "阿魯巴"
+ },
+ "RU": {
+ "name": "俄羅斯"
+ },
+ "BG": {
+ "name": "保加利亞"
+ },
+ "GS": {
+ "name": "南佐治亞島與南桑威奇群島"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南極洲"
+ },
+ "KR": {
+ "name": "南韓"
+ },
+ "SS": {
+ "name": "南蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "ZW": {
+ "name": "津巴布韋"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "KM": {
+ "name": "科摩羅"
+ },
+ "TN": {
+ "name": "突尼西亞"
+ },
+ "JO": {
+ "name": "約旦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外小島嶼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬印度洋領土"
+ },
+ "IM": {
+ "name": "英屬地曼島"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果 - 布拉薩"
+ },
+ "CD": {
+ "name": "剛果 - 金夏沙"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯達黎加"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亞"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GD": {
+ "name": "格林納達"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GE": {
+ "name": "格魯吉亞"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "烏干達"
+ },
+ "UA": {
+ "name": "烏克蘭"
+ },
+ "UY": {
+ "name": "烏拉圭"
+ },
+ "UZ": {
+ "name": "烏茲別克"
+ },
+ "TC": {
+ "name": "特克斯和凱科斯群島"
+ },
+ "TA": {
+ "name": "特里斯坦達庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "納米比亞"
+ },
+ "NZ": {
+ "name": "紐西蘭"
+ },
+ "NU": {
+ "name": "紐埃島"
+ },
+ "SO": {
+ "name": "索馬里"
+ },
+ "MQ": {
+ "name": "馬丁尼克島"
+ },
+ "ML": {
+ "name": "馬里"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉威"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬達加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾代夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "捷克共和國"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "VA": {
+ "name": "梵蒂岡宮城"
+ },
+ "SX": {
+ "name": "荷屬聖馬丁"
+ },
+ "NL": {
+ "name": "荷蘭"
+ },
+ "BQ": {
+ "name": "荷蘭加勒比區"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "BW": {
+ "name": "博茨瓦納"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "斐濟"
+ },
+ "SJ": {
+ "name": "斯瓦爾巴群島及揚馬延島"
+ },
+ "LK": {
+ "name": "斯里蘭卡"
+ },
+ "SZ": {
+ "name": "斯威士蘭"
+ },
+ "SI": {
+ "name": "斯洛文尼亞"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "TO": {
+ "name": "湯加"
+ },
+ "PH": {
+ "name": "菲律賓"
+ },
+ "LS": {
+ "name": "萊索托"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "TJ": {
+ "name": "塔吉克"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞舌爾"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞"
+ },
+ "NR": {
+ "name": "瑙魯"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "BL": {
+ "name": "聖巴泰勒米"
+ },
+ "VC": {
+ "name": "聖文森特和格林納丁斯"
+ },
+ "PM": {
+ "name": "聖皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "聖多美普林西比"
+ },
+ "SM": {
+ "name": "聖馬利諾"
+ },
+ "KN": {
+ "name": "聖基茨和尼維斯"
+ },
+ "SH": {
+ "name": "聖赫勒拿島"
+ },
+ "CX": {
+ "name": "聖誕島"
+ },
+ "LC": {
+ "name": "聖盧西亞"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "TV": {
+ "name": "圖瓦盧"
+ },
+ "FK": {
+ "name": "福克蘭群島"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙塞拉特島"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩納哥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧旺達"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾福克島"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "ZM": {
+ "name": "贊比亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇里南"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant.json b/library/intl/resources/country/zh-Hant.json
new file mode 100644
index 000000000..08638e361
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant.json
@@ -0,0 +1,761 @@
+{
+ "TT": {
+ "name": "千里達及托巴哥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TC": {
+ "name": "土克斯及開科斯群島"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "CF": {
+ "name": "中非共和國"
+ },
+ "CN": {
+ "name": "中華人民共和國"
+ },
+ "HK": {
+ "name": "中華人民共和國香港特別行政區"
+ },
+ "MO": {
+ "name": "中華人民共和國澳門特別行政區"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄利垂亞"
+ },
+ "PG": {
+ "name": "巴布亞紐幾內亞"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BB": {
+ "name": "巴貝多"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "巴勒斯坦自治區"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GA": {
+ "name": "加彭"
+ },
+ "MP": {
+ "name": "北馬里亞納群島"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "卡達"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "CC": {
+ "name": "可可斯群島"
+ },
+ "TW": {
+ "name": "台灣"
+ },
+ "SZ": {
+ "name": "史瓦濟蘭"
+ },
+ "NE": {
+ "name": "尼日"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布吉納法索"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "GT": {
+ "name": "瓜地馬拉"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖納群島"
+ },
+ "GM": {
+ "name": "甘比亞"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特肯群島"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休達與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦斯登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "印尼"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "DJ": {
+ "name": "吉布地"
+ },
+ "KI": {
+ "name": "吉里巴斯"
+ },
+ "KG": {
+ "name": "吉爾吉斯"
+ },
+ "TV": {
+ "name": "吐瓦魯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉島"
+ },
+ "AG": {
+ "name": "安地卡及巴布達"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AD": {
+ "name": "安道爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕達"
+ },
+ "ET": {
+ "name": "衣索比亞"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "HR": {
+ "name": "克羅埃西亞"
+ },
+ "SJ": {
+ "name": "冷岸及央麥恩群島"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "HN": {
+ "name": "宏都拉斯"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶萊"
+ },
+ "SA": {
+ "name": "沙烏地阿拉伯"
+ },
+ "BZ": {
+ "name": "貝里斯"
+ },
+ "BJ": {
+ "name": "貝南"
+ },
+ "GQ": {
+ "name": "赤道幾內亞"
+ },
+ "ZW": {
+ "name": "辛巴威"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "AZ": {
+ "name": "亞塞拜然"
+ },
+ "TZ": {
+ "name": "坦尚尼亞"
+ },
+ "NG": {
+ "name": "奈及利亞"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "ZM": {
+ "name": "尚比亞"
+ },
+ "PW": {
+ "name": "帛琉"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TO": {
+ "name": "東加"
+ },
+ "TL": {
+ "name": "東帝汶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "TF": {
+ "name": "法屬南方屬地"
+ },
+ "PF": {
+ "name": "法屬玻里尼西亞"
+ },
+ "MF": {
+ "name": "法屬聖馬丁"
+ },
+ "BA": {
+ "name": "波士尼亞與赫塞格維納"
+ },
+ "BW": {
+ "name": "波札那"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯亞"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯聯合大公國"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼王國"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森松島"
+ },
+ "AW": {
+ "name": "阿路巴"
+ },
+ "DZ": {
+ "name": "阿爾及利亞"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "RU": {
+ "name": "俄羅斯"
+ },
+ "BG": {
+ "name": "保加利亞"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "GS": {
+ "name": "南喬治亞與南三明治群島"
+ },
+ "AQ": {
+ "name": "南極洲"
+ },
+ "KR": {
+ "name": "南韓"
+ },
+ "SS": {
+ "name": "南蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "TD": {
+ "name": "查德"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "TN": {
+ "name": "突尼西亞"
+ },
+ "JO": {
+ "name": "約旦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外小島嶼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬印度洋領土"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "MR": {
+ "name": "茅利塔尼亞"
+ },
+ "GH": {
+ "name": "迦納"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果(布拉薩)"
+ },
+ "CD": {
+ "name": "剛果(金夏沙)"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯大黎加"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GD": {
+ "name": "格瑞那達"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "烏干達"
+ },
+ "UA": {
+ "name": "烏克蘭"
+ },
+ "UY": {
+ "name": "烏拉圭"
+ },
+ "UZ": {
+ "name": "烏茲別克"
+ },
+ "TA": {
+ "name": "特里斯坦達庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "納米比亞"
+ },
+ "NZ": {
+ "name": "紐西蘭"
+ },
+ "NU": {
+ "name": "紐埃島"
+ },
+ "SO": {
+ "name": "索馬利亞"
+ },
+ "SB": {
+ "name": "索羅門群島"
+ },
+ "MQ": {
+ "name": "馬丁尼克島"
+ },
+ "ML": {
+ "name": "馬利"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉威"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬達加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾地夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "捷克共和國"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "IM": {
+ "name": "曼島"
+ },
+ "VA": {
+ "name": "梵蒂岡"
+ },
+ "SX": {
+ "name": "荷屬聖馬丁"
+ },
+ "NL": {
+ "name": "荷蘭"
+ },
+ "BQ": {
+ "name": "荷蘭加勒比區"
+ },
+ "MZ": {
+ "name": "莫三比克"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GE": {
+ "name": "喬治亞共和國"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "斐濟"
+ },
+ "LK": {
+ "name": "斯里蘭卡"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "SI": {
+ "name": "斯洛維尼亞"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "PH": {
+ "name": "菲律賓"
+ },
+ "CI": {
+ "name": "象牙海岸"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "TJ": {
+ "name": "塔吉克"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞席爾"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞群島"
+ },
+ "SL": {
+ "name": "獅子山"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "VU": {
+ "name": "萬那杜"
+ },
+ "IT": {
+ "name": "義大利"
+ },
+ "BL": {
+ "name": "聖巴瑟米"
+ },
+ "VC": {
+ "name": "聖文森及格瑞那丁"
+ },
+ "PM": {
+ "name": "聖皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "聖多美及普林西比"
+ },
+ "KN": {
+ "name": "聖克里斯多福及尼維斯"
+ },
+ "SM": {
+ "name": "聖馬利諾"
+ },
+ "SH": {
+ "name": "聖赫勒拿島"
+ },
+ "CX": {
+ "name": "聖誕島"
+ },
+ "LC": {
+ "name": "聖露西亞"
+ },
+ "YE": {
+ "name": "葉門"
+ },
+ "KM": {
+ "name": "葛摩"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "FK": {
+ "name": "福克蘭群島"
+ },
+ "CV": {
+ "name": "維德角"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙哲臘"
+ },
+ "ME": {
+ "name": "蒙特內哥羅"
+ },
+ "BI": {
+ "name": "蒲隆地"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩納哥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MU": {
+ "name": "模里西斯"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧安達"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾福克島"
+ },
+ "NR": {
+ "name": "諾魯"
+ },
+ "LR": {
+ "name": "賴比瑞亞"
+ },
+ "LS": {
+ "name": "賴索托"
+ },
+ "CY": {
+ "name": "賽普勒斯"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇利南"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh.json b/library/intl/resources/country/zh.json
new file mode 100644
index 000000000..71061e76a
--- /dev/null
+++ b/library/intl/resources/country/zh.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔及利亚"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯联合酋长国"
+ },
+ "AW": {
+ "name": "阿鲁巴"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森松岛"
+ },
+ "EG": {
+ "name": "埃及"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安道尔"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安提瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯坦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "巴勒斯坦领土"
+ },
+ "BH": {
+ "name": "巴林"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "保加利亚"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "贝宁"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎各"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "博茨瓦纳"
+ },
+ "BT": {
+ "name": "不丹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "朝鲜"
+ },
+ "GQ": {
+ "name": "赤道几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东帝汶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "俄罗斯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属南部领地"
+ },
+ "MF": {
+ "name": "法属圣马丁"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "菲律宾"
+ },
+ "FJ": {
+ "name": "斐济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "福克兰群岛"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "格鲁吉亚"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "古巴"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈萨克斯坦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "荷兰"
+ },
+ "BQ": {
+ "name": "荷兰加勒比区"
+ },
+ "SX": {
+ "name": "荷属圣马丁"
+ },
+ "ME": {
+ "name": "黑山共和国"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "吉布提"
+ },
+ "KG": {
+ "name": "吉尔吉斯斯坦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比绍"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "捷克共和国"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "卡塔尔"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科威特"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "老挝"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "卢森堡"
+ },
+ "RW": {
+ "name": "卢旺达"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马来西亚"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马绍尔群岛"
+ },
+ "MQ": {
+ "name": "马提尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外小岛屿"
+ },
+ "AS": {
+ "name": "美属萨摩亚"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "蒙古"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘鲁"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "南非"
+ },
+ "AQ": {
+ "name": "南极洲"
+ },
+ "GS": {
+ "name": "南乔治亚岛和南桑威齐群岛"
+ },
+ "SS": {
+ "name": "南苏丹"
+ },
+ "NR": {
+ "name": "瑙鲁"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪威"
+ },
+ "NF": {
+ "name": "诺福克岛"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯恩群岛"
+ },
+ "PT": {
+ "name": "葡萄牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "瑞典"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "萨尔瓦多"
+ },
+ "WS": {
+ "name": "萨摩亚"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣卢西亚"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆群岛"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳丁斯"
+ },
+ "LK": {
+ "name": "斯里兰卡"
+ },
+ "SK": {
+ "name": "斯洛伐克"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "斯威士兰"
+ },
+ "SD": {
+ "name": "苏丹"
+ },
+ "SR": {
+ "name": "苏里南"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "塔吉克斯坦"
+ },
+ "TW": {
+ "name": "台湾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "坦桑尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯坦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "突尼斯"
+ },
+ "TV": {
+ "name": "图瓦卢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯坦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "危地马拉"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯坦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西班牙"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加坡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达及梅利利亚"
+ },
+ "SY": {
+ "name": "叙利亚"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "意大利"
+ },
+ "IN": {
+ "name": "印度"
+ },
+ "ID": {
+ "name": "印度尼西亚"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属印度洋领地"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越南"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "乍得"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中非共和国"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zu.json b/library/intl/resources/country/zu.json
new file mode 100644
index 000000000..20b4d0623
--- /dev/null
+++ b/library/intl/resources/country/zu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "i-Afghanistan"
+ },
+ "AX": {
+ "name": "i-Åland Islands"
+ },
+ "AL": {
+ "name": "i-Albania"
+ },
+ "DZ": {
+ "name": "i-Algeria"
+ },
+ "AS": {
+ "name": "i-American Samoa"
+ },
+ "AD": {
+ "name": "i-Andorra"
+ },
+ "AO": {
+ "name": "i-Angola"
+ },
+ "AI": {
+ "name": "i-Anguilla"
+ },
+ "AQ": {
+ "name": "i-Antarctica"
+ },
+ "AG": {
+ "name": "i-Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "i-Argentina"
+ },
+ "AM": {
+ "name": "i-Armenia"
+ },
+ "AW": {
+ "name": "i-Aruba"
+ },
+ "AC": {
+ "name": "i-Ascension Island"
+ },
+ "AU": {
+ "name": "i-Australia"
+ },
+ "AT": {
+ "name": "i-Austria"
+ },
+ "AZ": {
+ "name": "i-Azerbaijan"
+ },
+ "BS": {
+ "name": "i-Bahamas"
+ },
+ "BH": {
+ "name": "i-Bahrain"
+ },
+ "BD": {
+ "name": "i-Bangladesh"
+ },
+ "BB": {
+ "name": "i-Barbados"
+ },
+ "BY": {
+ "name": "i-Belarus"
+ },
+ "BE": {
+ "name": "i-Belgium"
+ },
+ "BZ": {
+ "name": "i-Belize"
+ },
+ "BJ": {
+ "name": "i-Benin"
+ },
+ "BM": {
+ "name": "i-Bermuda"
+ },
+ "BT": {
+ "name": "i-Bhutan"
+ },
+ "BO": {
+ "name": "i-Bolivia"
+ },
+ "BA": {
+ "name": "i-Bosnia ne-Herzegovina"
+ },
+ "BW": {
+ "name": "i-Botswana"
+ },
+ "BR": {
+ "name": "i-Brazil"
+ },
+ "IO": {
+ "name": "i-British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "i-British Virgin Islands"
+ },
+ "BN": {
+ "name": "i-Brunei"
+ },
+ "BG": {
+ "name": "i-Bulgaria"
+ },
+ "BF": {
+ "name": "i-Burkina Faso"
+ },
+ "BI": {
+ "name": "i-Burundi"
+ },
+ "KH": {
+ "name": "i-Cambodia"
+ },
+ "CM": {
+ "name": "i-Cameroon"
+ },
+ "CA": {
+ "name": "i-Canada"
+ },
+ "IC": {
+ "name": "i-Canary Islands"
+ },
+ "CV": {
+ "name": "i-Cape Verde"
+ },
+ "BQ": {
+ "name": "i-Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "i-Cayman Islands"
+ },
+ "CF": {
+ "name": "i-Central African Republic"
+ },
+ "TD": {
+ "name": "i-Chad"
+ },
+ "CL": {
+ "name": "i-Chile"
+ },
+ "CN": {
+ "name": "i-China"
+ },
+ "CX": {
+ "name": "i-Christmas Island"
+ },
+ "CC": {
+ "name": "i-Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "i-Colombia"
+ },
+ "KM": {
+ "name": "i-Comoros"
+ },
+ "CG": {
+ "name": "i-Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "i-Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "i-Cook Islands"
+ },
+ "CR": {
+ "name": "i-Costa Rica"
+ },
+ "CI": {
+ "name": "i-Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "i-Croatia"
+ },
+ "CU": {
+ "name": "i-Cuba"
+ },
+ "EA": {
+ "name": "i-Cueta ne-Melilla"
+ },
+ "CW": {
+ "name": "i-Curaçao"
+ },
+ "CY": {
+ "name": "i-Cyprus"
+ },
+ "CZ": {
+ "name": "i-Czech Republic"
+ },
+ "DK": {
+ "name": "i-Denmark"
+ },
+ "DG": {
+ "name": "i-Diego Garcia"
+ },
+ "DJ": {
+ "name": "i-Djibouti"
+ },
+ "DM": {
+ "name": "i-Dominica"
+ },
+ "DO": {
+ "name": "i-Dominican Republic"
+ },
+ "EC": {
+ "name": "i-Ecuador"
+ },
+ "EG": {
+ "name": "i-Egypt"
+ },
+ "SV": {
+ "name": "i-El Salvador"
+ },
+ "GQ": {
+ "name": "i-Equatorial Guinea"
+ },
+ "ER": {
+ "name": "i-Eritrea"
+ },
+ "EE": {
+ "name": "i-Estonia"
+ },
+ "ET": {
+ "name": "i-Ethiopia"
+ },
+ "FK": {
+ "name": "i-Falkland Islands"
+ },
+ "FO": {
+ "name": "i-Faroe Islands"
+ },
+ "FJ": {
+ "name": "i-Fiji"
+ },
+ "FI": {
+ "name": "i-Finland"
+ },
+ "FR": {
+ "name": "i-France"
+ },
+ "PF": {
+ "name": "i-French Polynesia"
+ },
+ "TF": {
+ "name": "i-French Southern Territories"
+ },
+ "GA": {
+ "name": "i-Gabon"
+ },
+ "GM": {
+ "name": "i-Gambia"
+ },
+ "GE": {
+ "name": "i-Georgia"
+ },
+ "DE": {
+ "name": "i-Germany"
+ },
+ "GH": {
+ "name": "i-Ghana"
+ },
+ "GI": {
+ "name": "i-Gibraltar"
+ },
+ "GR": {
+ "name": "i-Greece"
+ },
+ "GL": {
+ "name": "i-Greenland"
+ },
+ "GD": {
+ "name": "i-Grenada"
+ },
+ "GP": {
+ "name": "i-Guadeloupe"
+ },
+ "GU": {
+ "name": "i-Guam"
+ },
+ "GT": {
+ "name": "i-Guatemala"
+ },
+ "GG": {
+ "name": "i-Guernsey"
+ },
+ "GN": {
+ "name": "i-Guinea"
+ },
+ "GW": {
+ "name": "i-Guinea-Bissau"
+ },
+ "GY": {
+ "name": "i-Guyana"
+ },
+ "HT": {
+ "name": "i-Haiti"
+ },
+ "HN": {
+ "name": "i-Honduras"
+ },
+ "HK": {
+ "name": "i-Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "i-Hungary"
+ },
+ "IS": {
+ "name": "i-Iceland"
+ },
+ "IN": {
+ "name": "i-India"
+ },
+ "ID": {
+ "name": "i-Indonesia"
+ },
+ "IR": {
+ "name": "i-Iran"
+ },
+ "IQ": {
+ "name": "i-Iraq"
+ },
+ "IE": {
+ "name": "i-Ireland"
+ },
+ "IM": {
+ "name": "i-Isle of Man"
+ },
+ "IL": {
+ "name": "i-Israel"
+ },
+ "IT": {
+ "name": "i-Italy"
+ },
+ "JM": {
+ "name": "i-Jamaica"
+ },
+ "JP": {
+ "name": "i-Japan"
+ },
+ "JE": {
+ "name": "i-Jersey"
+ },
+ "JO": {
+ "name": "i-Jordan"
+ },
+ "KZ": {
+ "name": "i-Kazakhstan"
+ },
+ "KE": {
+ "name": "i-Kenya"
+ },
+ "KI": {
+ "name": "i-Kiribati"
+ },
+ "XK": {
+ "name": "i-Kosovo"
+ },
+ "KW": {
+ "name": "i-Kuwait"
+ },
+ "KG": {
+ "name": "i-Kyrgyzstan"
+ },
+ "LA": {
+ "name": "i-Laos"
+ },
+ "LV": {
+ "name": "i-Latvia"
+ },
+ "LB": {
+ "name": "i-Lebanon"
+ },
+ "LS": {
+ "name": "i-Lesotho"
+ },
+ "LR": {
+ "name": "i-Liberia"
+ },
+ "LY": {
+ "name": "i-Libya"
+ },
+ "LI": {
+ "name": "i-Liechtenstein"
+ },
+ "LT": {
+ "name": "i-Lithuania"
+ },
+ "LU": {
+ "name": "i-Luxembourg"
+ },
+ "MO": {
+ "name": "i-Macau SAR China"
+ },
+ "MK": {
+ "name": "i-Macedonia"
+ },
+ "MG": {
+ "name": "i-Madagascar"
+ },
+ "MW": {
+ "name": "i-Malawi"
+ },
+ "MY": {
+ "name": "i-Malaysia"
+ },
+ "MV": {
+ "name": "i-Maldives"
+ },
+ "ML": {
+ "name": "i-Mali"
+ },
+ "MT": {
+ "name": "i-Malta"
+ },
+ "MH": {
+ "name": "i-Marshall Islands"
+ },
+ "MQ": {
+ "name": "i-Martinique"
+ },
+ "MR": {
+ "name": "i-Mauritania"
+ },
+ "MU": {
+ "name": "i-Mauritius"
+ },
+ "YT": {
+ "name": "i-Mayotte"
+ },
+ "MX": {
+ "name": "i-Mexico"
+ },
+ "FM": {
+ "name": "i-Micronesia"
+ },
+ "MD": {
+ "name": "i-Moldova"
+ },
+ "MC": {
+ "name": "i-Monaco"
+ },
+ "MN": {
+ "name": "i-Mongolia"
+ },
+ "ME": {
+ "name": "i-Montenegro"
+ },
+ "MS": {
+ "name": "i-Montserrat"
+ },
+ "MA": {
+ "name": "i-Morocco"
+ },
+ "MZ": {
+ "name": "i-Mozambique"
+ },
+ "MM": {
+ "name": "i-Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "i-Namibia"
+ },
+ "NR": {
+ "name": "i-Nauru"
+ },
+ "NP": {
+ "name": "i-Nepal"
+ },
+ "NL": {
+ "name": "i-Netherlands"
+ },
+ "NC": {
+ "name": "i-New Caledonia"
+ },
+ "NZ": {
+ "name": "i-New Zealand"
+ },
+ "NI": {
+ "name": "i-Nicaragua"
+ },
+ "NE": {
+ "name": "i-Niger"
+ },
+ "NG": {
+ "name": "i-Nigeria"
+ },
+ "NU": {
+ "name": "i-Niue"
+ },
+ "NF": {
+ "name": "i-Norfolk Island"
+ },
+ "KP": {
+ "name": "i-North Korea"
+ },
+ "MP": {
+ "name": "i-Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "i-Norway"
+ },
+ "OM": {
+ "name": "i-Oman"
+ },
+ "PK": {
+ "name": "i-Pakistan"
+ },
+ "PW": {
+ "name": "i-Palau"
+ },
+ "PS": {
+ "name": "i-Palestinian Territories"
+ },
+ "PA": {
+ "name": "i-Panama"
+ },
+ "PG": {
+ "name": "i-Papua New Guinea"
+ },
+ "PY": {
+ "name": "i-Paraguay"
+ },
+ "PE": {
+ "name": "i-Peru"
+ },
+ "PH": {
+ "name": "i-Philippines"
+ },
+ "PN": {
+ "name": "i-Pitcairn Islands"
+ },
+ "PL": {
+ "name": "i-Poland"
+ },
+ "PT": {
+ "name": "i-Portugal"
+ },
+ "PR": {
+ "name": "i-Puerto Rico"
+ },
+ "QA": {
+ "name": "i-Qatar"
+ },
+ "RE": {
+ "name": "i-Réunion"
+ },
+ "RO": {
+ "name": "i-Romania"
+ },
+ "RU": {
+ "name": "i-Russia"
+ },
+ "RW": {
+ "name": "i-Rwanda"
+ },
+ "BL": {
+ "name": "i-Saint Barthélemy"
+ },
+ "SH": {
+ "name": "i-Saint Helena"
+ },
+ "KN": {
+ "name": "i-Saint Kitts ne-Nevis"
+ },
+ "LC": {
+ "name": "i-Saint Lucia"
+ },
+ "MF": {
+ "name": "i-Saint Martin"
+ },
+ "PM": {
+ "name": "i-Saint Pierre kanye ne-Miquelon"
+ },
+ "VC": {
+ "name": "i-Saint Vincent ne-Grenadines"
+ },
+ "WS": {
+ "name": "i-Samoa"
+ },
+ "SM": {
+ "name": "i-San Marino"
+ },
+ "ST": {
+ "name": "i-São Tomé kanye ne-Príncipe"
+ },
+ "SA": {
+ "name": "i-Saudi Arabia"
+ },
+ "SN": {
+ "name": "i-Senegal"
+ },
+ "RS": {
+ "name": "i-Serbia"
+ },
+ "SC": {
+ "name": "i-Seychelles"
+ },
+ "SL": {
+ "name": "i-Sierra Leone"
+ },
+ "SG": {
+ "name": "i-Singapore"
+ },
+ "SX": {
+ "name": "I-Sint Maarten"
+ },
+ "SK": {
+ "name": "i-Slovakia"
+ },
+ "SI": {
+ "name": "i-Slovenia"
+ },
+ "SB": {
+ "name": "i-Solomon Islands"
+ },
+ "SO": {
+ "name": "i-Somalia"
+ },
+ "ZA": {
+ "name": "i-South Africa"
+ },
+ "GS": {
+ "name": "i-South Georgia ne-South Sandwich Islands"
+ },
+ "KR": {
+ "name": "i-South Korea"
+ },
+ "SS": {
+ "name": "i-South Sudan"
+ },
+ "ES": {
+ "name": "i-Spain"
+ },
+ "LK": {
+ "name": "i-Sri Lanka"
+ },
+ "SD": {
+ "name": "i-Sudan"
+ },
+ "SR": {
+ "name": "i-Suriname"
+ },
+ "SJ": {
+ "name": "i-Svalbard ne-Jan Mayen"
+ },
+ "SZ": {
+ "name": "i-Swaziland"
+ },
+ "SE": {
+ "name": "i-Sweden"
+ },
+ "CH": {
+ "name": "i-Switzerland"
+ },
+ "SY": {
+ "name": "i-Syria"
+ },
+ "TW": {
+ "name": "i-Taiwan"
+ },
+ "TJ": {
+ "name": "i-Tajikistan"
+ },
+ "TZ": {
+ "name": "i-Tanzania"
+ },
+ "TH": {
+ "name": "i-Thailand"
+ },
+ "TL": {
+ "name": "i-Timor-Leste"
+ },
+ "TG": {
+ "name": "i-Togo"
+ },
+ "TK": {
+ "name": "i-Tokelau"
+ },
+ "TO": {
+ "name": "i-Tonga"
+ },
+ "TT": {
+ "name": "i-Trinidad ne-Tobago"
+ },
+ "TA": {
+ "name": "i-Tristan da Cunha"
+ },
+ "TN": {
+ "name": "i-Tunisia"
+ },
+ "TR": {
+ "name": "i-Turkey"
+ },
+ "TM": {
+ "name": "i-Turkmenistan"
+ },
+ "TC": {
+ "name": "i-Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "i-Tuvalu"
+ },
+ "UM": {
+ "name": "i-U.S. Minor Outlying Islands"
+ },
+ "VI": {
+ "name": "i-U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "i-Uganda"
+ },
+ "UA": {
+ "name": "i-Ukraine"
+ },
+ "AE": {
+ "name": "i-United Arab Emirates"
+ },
+ "GB": {
+ "name": "i-United Kingdom"
+ },
+ "US": {
+ "name": "i-United States"
+ },
+ "UY": {
+ "name": "i-Uruguay"
+ },
+ "UZ": {
+ "name": "i-Uzbekistan"
+ },
+ "VU": {
+ "name": "i-Vanuatu"
+ },
+ "VA": {
+ "name": "i-Vatican City"
+ },
+ "VE": {
+ "name": "i-Venezuela"
+ },
+ "VN": {
+ "name": "i-Vietnam"
+ },
+ "WF": {
+ "name": "i-Wallis ne-Futuna"
+ },
+ "EH": {
+ "name": "i-Western Sahara"
+ },
+ "YE": {
+ "name": "i-Yemen"
+ },
+ "ZM": {
+ "name": "i-Zambia"
+ },
+ "ZW": {
+ "name": "i-Zimbabwe"
+ },
+ "GF": {
+ "name": "isi-French Guiana"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/af.json b/library/intl/resources/currency/af.json
new file mode 100644
index 000000000..b7e5c4930
--- /dev/null
+++ b/library/intl/resources/currency/af.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgaanse afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algeriese dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanse dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentynse peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanse floryn",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australiese dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbeidjaanse manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamiaanse dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesjiese taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliziese dollar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Belo-Russiese roebel",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhoetanese ngoeltroem",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanse boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnies-Herzegowiniese omskakelbare marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswana pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilliaanse reaal",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britse pond",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Broeneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundiese frank",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Cayman-eilande dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chileense peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Colombiaanse peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comoraanse frank",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Costa Ricaanse colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Deense kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboeti frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanse peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptiese pond",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopiese birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-eilande pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidjiaanse dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippynse peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiese dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgiese lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarese pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalaanse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanese dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanse gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hongaarse florint",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "Indiese roepee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesiese roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranse rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israeliese nuwe sikkel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikaanse dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japannese jen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "Jemenitiese rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaniese dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaap Verdiese escudo",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Kambodjaanse riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadese dollar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarrese rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazakse tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanse sjieling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisiese som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "CDF": {
+ "name": "Kongolese frank",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatiese kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubaanse omskakelbare peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubaanse peso",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laosiaanse kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese pond",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberiese dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libiese dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litause litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaose pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedoniese denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawiese kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Malediviese rufia",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisiese ringgit",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Malgassiese ariary",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "Marokkaanse dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaniese ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanse rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikaanse peso",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mianmese kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldowiese leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolse toegrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambiekse metical",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibiese dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlands-Antilliaanse gulde",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepee",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanse córdoba",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Nieu-Seeland dollar",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "Nigeriese naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Noord-Koreaanse won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noorse kroon",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Nuwe Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "Oekraïnse hriwna",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbekiese som",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanse rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Oos-Karibbiese dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanse roepee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papoea-Nieu-Guinese kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaanse guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanse nuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poolse zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Roemeense leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russiese roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandiese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomonseilande dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoaanse tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé en Príncipe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabiese riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbiese dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellese rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leoniese leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapoer dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint Helena pond",
+ "symbol": "SHP"
+ },
+ "SYP": {
+ "name": "Siriese pond",
+ "symbol": "SYP"
+ },
+ "CNY": {
+ "name": "Sjinese joean renminbi",
+ "symbol": "CN¥"
+ },
+ "SDG": {
+ "name": "Soedannese pond",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somaliese sjieling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanse roepee",
+ "symbol": "LKR"
+ },
+ "ZAR": {
+ "name": "Suid-Afrikaanse rand",
+ "symbol": "R"
+ },
+ "KRW": {
+ "name": "Suid-Koreaanse won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Suid-Soedanese pond",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinaamse dollar",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swazilandse lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Sweedse kroon",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Switserse frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadjikse roebel",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniese sjieling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanse pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjeggiese kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunisiese dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lier",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandese sjieling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruguaanse peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuse vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolaanse bolivar",
+ "symbol": "VEF"
+ },
+ "AED": {
+ "name": "Verenigde Arabiese Emirate dirham",
+ "symbol": "AED"
+ },
+ "VND": {
+ "name": "Viëtnamese dong",
+ "symbol": "₫"
+ },
+ "ISK": {
+ "name": "Yslandse kroon",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "Zambiese kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/agq.json b/library/intl/resources/currency/agq.json
new file mode 100644
index 000000000..3e769825f
--- /dev/null
+++ b/library/intl/resources/currency/agq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Àlǐalè è Màlàgasì",
+ "symbol": "MGA"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bîi è Etyǒkpìa",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "EGP": {
+ "name": "Bɔ̀ŋ è Edzì",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Bɔ̀ŋ è Sɛ̀n Èlenà",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Bɔ̀ŋ è Sùdànê",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Bɔ̀ŋ Sɨ̀telè è Bèletì",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fàlâŋ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fàlâŋ BEAC",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dàlasì è Gambìa",
+ "symbol": "GMD"
+ },
+ "MAD": {
+ "name": "Dilàm è Mòlokò",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dilàm è Yùnaetɛ Alab Emelɛ̀",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dinà è Àdzɛlìa",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinà è Balae",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinà è Lebìa",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinà è Tùwneshìa",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "STD": {
+ "name": "Dɔbàlà è Sàwu Tɔ̀me à Pèlènsipè",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Dɔlà è Kanadà",
+ "symbol": "CA$"
+ },
+ "NAD": {
+ "name": "Dɔlà è Nàmibìa",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dɔlà è US",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dɔlà e Ùsɨ̀tɛ̀lɛlìa",
+ "symbol": "A$"
+ },
+ "LRD": {
+ "name": "Dɔlà Làebɛlìa",
+ "symbol": "LRD"
+ },
+ "BIF": {
+ "name": "Fàlâŋ è Bùlundì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fàlâŋ è Dzìbutì",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fàlâŋ è Komolìa",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fàlâŋ è Kuŋgùlê",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Fàlâŋ è Lùwandà",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fàlâŋ è Sues",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "Ghɨ̂n Dzàkpànê",
+ "symbol": "JP¥"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kàbòvàdianù è Èsùkudò",
+ "symbol": "CVE"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "BWP": {
+ "name": "Kpuwlà è Botɨshǔanà",
+ "symbol": "BWP"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwachà è Màlawè",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwachà è Zambìa",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanzà è Àŋgolà",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "ZAR": {
+ "name": "Lân è Afɨlekà ghɨ Emàm ghò",
+ "symbol": "ZAR"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lèlàŋgenè",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "Leyà è Sàwudì",
+ "symbol": "SAR"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lɔtì Lèsutù",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "INR": {
+ "name": "Lukpì è Endìa",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Lukpìi è Mùleshòs",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Lukpìi è Sɛchɛ̀lɛ̀",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Lyɔ̂ŋ",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naelà è Gɨ̀anyɨ",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakafa è Èletɨ̀làe",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shwɨlà è Sùmalìa",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shwɨlà è Tàanzanyìa",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shwɨlà è Yùgandà",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Shwɨlà tɨ Kenyà",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ùgueya è Mùlètenyìa",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yulù",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yùwân Lèmembi è Chaenî",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ak.json b/library/intl/resources/currency/ak.json
new file mode 100644
index 000000000..6c8a24eaf
--- /dev/null
+++ b/library/intl/resources/currency/ak.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ZAR": {
+ "name": "Afrika Anaafo Rand",
+ "symbol": "ZAR"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Amɛrika Dɔla",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BHD": {
+ "name": "Baren Dina",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswana Pula",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Breten Pɔn",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Frank",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egypt Pɔn",
+ "symbol": "EGP"
+ },
+ "AED": {
+ "name": "Ɛmirete Arab Nkabɔmu Deram",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "Ɛretereya Nakfa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Ɛskudo",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambia Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghana Sidi",
+ "symbol": "GH₵"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "JPY": {
+ "name": "Gyapan Yɛn",
+ "symbol": "JP¥"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "DJF": {
+ "name": "Gyebuti Frank",
+ "symbol": "DJF"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "India Rupi",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "EUR": {
+ "name": "Iro",
+ "symbol": "€"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "ETB": {
+ "name": "Itiopia Bir",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada Dɔla",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Kenya Hyelen",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoro Frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Frank",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LRD": {
+ "name": "Laeberia Dɔla",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Lesoto Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Libya Dina",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagasi Frank",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi Kwacha",
+ "symbol": "MWK"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MAD": {
+ "name": "Moroko Diram",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mɔrehyeɔs Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔretenia Ouguiya",
+ "symbol": "MRO"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naegyeria Naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibia Dɔla",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "DZD": {
+ "name": "Ɔlgyeria Dina",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "Ɔstrelia Dɔla",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Rewanda Frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "STD": {
+ "name": "Sao Tome ne Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "XAF": {
+ "name": "Sefa",
+ "symbol": "FCFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "Seyhyɛls Rupi",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somailia Hyelen",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "St Helena Pɔn",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudan Dina",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzania Hyelen",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisia Dina",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Hyelen",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan",
+ "symbol": "CN¥"
+ },
+ "ZMW": {
+ "name": "Zambia Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/am.json b/library/intl/resources/currency/am.json
new file mode 100644
index 000000000..1b86003b4
--- /dev/null
+++ b/library/intl/resources/currency/am.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "LTL": {
+ "name": "ሊቱዌንያን ሊታስ",
+ "symbol": "LTL"
+ },
+ "MMK": {
+ "name": "ምያንማ ክያት",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "ሞልዶቫን ሊኡ",
+ "symbol": "MDL"
+ },
+ "XPF": {
+ "name": "ሲ ኤፍ ፒ ፍራንክ",
+ "symbol": "CFPF"
+ },
+ "WST": {
+ "name": "ሳሞአን ታላ",
+ "symbol": "WST"
+ },
+ "XOF": {
+ "name": "ሴኤፍአ ፍራንክ ቤሴእአኦ",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ሴኤፍአ ፍራንክ ቤእአሴ",
+ "symbol": "FCFA"
+ },
+ "BTN": {
+ "name": "ብሁታኒዝ ንጉልትረም",
+ "symbol": "BTN"
+ },
+ "TMT": {
+ "name": "ቱርክሜኒስታኒ ማናት",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "ቶንጋን ፓ’አንጋ",
+ "symbol": "TOP"
+ },
+ "CZK": {
+ "name": "ቼክ ሪፐብሊክ ኮሩና",
+ "symbol": "CZK"
+ },
+ "ANG": {
+ "name": "ኔዘርላንድስ አንቲሊአን ጊልደር",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "አሩባን ፍሎሪን",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "የሁንጋሪ ፎሪንት",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "የሃንዱራ ሌምፓአይራ",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "የሃያቲ ጓርዴ",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "የሆንግኮንግ ዶላር",
+ "symbol": "HK$"
+ },
+ "LYD": {
+ "name": "የሊቢያ ዲናር",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "የሊባኖስ ፓውንድ",
+ "symbol": "LBP"
+ },
+ "LAK": {
+ "name": "የላኦቲ ኪፕ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "የላይቤሪያ ዶላር",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "የሌሶቶ ሎቲ",
+ "symbol": "LSL"
+ },
+ "INR": {
+ "name": "የሕንድ ሩፒ",
+ "symbol": "₹"
+ },
+ "MWK": {
+ "name": "የማላዊ ኩዋቻ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "የማሌዥያ ሪንጊት",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "የማልዲቫ ሩፊያ",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "የማካኔዝ ፓታካ",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "የማደጋስካር ማላጋስይ አሪያርይ",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "የሜቆድንያ ዲናር",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "የሜክሲኮ ፔሶ",
+ "symbol": "MX$"
+ },
+ "XCD": {
+ "name": "የምዕራብ ካሪብያን ዶላር",
+ "symbol": "EC$"
+ },
+ "MUR": {
+ "name": "የሞሪሸስ ሩፒ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "የሞሪቴኒያ ኦውጉያ",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "የሞሮኮ ዲርሀም",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "የሞንጎሊያን ቱግሪክ",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "የሞዛምቢክ ሜቲካል",
+ "symbol": "MZN"
+ },
+ "RUB": {
+ "name": "የሩስያ ሩብል",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "የሩዋንዳ ፍራንክ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "የሮማኒያ ለው",
+ "symbol": "RON"
+ },
+ "SBD": {
+ "name": "የሰለሞን ደሴቶች ዶላር",
+ "symbol": "SBD"
+ },
+ "KPW": {
+ "name": "የሰሜን ኮሪያ ዎን",
+ "symbol": "KPW"
+ },
+ "RSD": {
+ "name": "የሰርቢያ ዲናር",
+ "symbol": "RSD"
+ },
+ "SRD": {
+ "name": "የሰርናሜዝ ዶላር",
+ "symbol": "SRD"
+ },
+ "SDG": {
+ "name": "የሱዳን ዲናር",
+ "symbol": "SDG"
+ },
+ "LKR": {
+ "name": "የሲሪላንካ ሩፒ",
+ "symbol": "LKR"
+ },
+ "SYP": {
+ "name": "የሲሪያ ፓውንድ",
+ "symbol": "SYP"
+ },
+ "SCR": {
+ "name": "የሲሼል ሩፒ",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "የሲንጋፖር ዶላር",
+ "symbol": "SGD"
+ },
+ "STD": {
+ "name": "የሳኦ ቶመ እና ፕሪንሲፐ ዶብራ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "የሳውዲ ሪያል",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "የሴራሊዎን ሊዎን",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "የሴይንት ሔሌና ፓውንድ",
+ "symbol": "SHP"
+ },
+ "CHF": {
+ "name": "የስዊስ ፍራንክ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "የስዊድን ክሮና",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "የስዋዚላንድ ሊላንገኒ",
+ "symbol": "SZL"
+ },
+ "SOS": {
+ "name": "የሶማሌ ሺሊንግ",
+ "symbol": "SOS"
+ },
+ "BGN": {
+ "name": "የቡልጋሪያ ሌቭ",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "የባሃማስ ዶላር",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "የባርቤዶስ ዶላር",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "የባንግላዲሽ ታካ",
+ "symbol": "BDT"
+ },
+ "BHD": {
+ "name": "የባኽሬን ዲናር",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "የቤሊዝ ዶላር",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "የቤላሩስያ ሩብል",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "የቤርሙዳ ዶላር",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "የብሩኔ ዶላር",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "የብሩንዲ ፍራንክ",
+ "symbol": "BIF"
+ },
+ "BRL": {
+ "name": "የብራዚል ሪል",
+ "symbol": "R$"
+ },
+ "BOB": {
+ "name": "የቦሊቪያ ቦሊቪያኖ",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "የቦስኒያ ሄርዞጎቪና የሚመነዘር ማርክ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "የቦትስዋና ፑላ",
+ "symbol": "BWP"
+ },
+ "VUV": {
+ "name": "የቫንዋንቱ ቫቱ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "የቬንዝዌላ ቦሊቫር",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "የቭየትናም ዶንግ",
+ "symbol": "₫"
+ },
+ "AED": {
+ "name": "የተባበሩት የአረብ ኤምረትስ ዲርሀም",
+ "symbol": "AED"
+ },
+ "TRY": {
+ "name": "የቱርክ ሊራ",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "የቱኒዚያ ዲናር",
+ "symbol": "TND"
+ },
+ "TZS": {
+ "name": "የታንዛኒያ ሺሊንግ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "የታይላንድ ባህት",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "የታጂክስታን ሶሞኒ",
+ "symbol": "TJS"
+ },
+ "TTD": {
+ "name": "የትሪንዳድ እና ቶቤጎዶላር",
+ "symbol": "TTD"
+ },
+ "CLP": {
+ "name": "የቺሊ ፔሶ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "የቻይና የን",
+ "symbol": "CN¥"
+ },
+ "NIO": {
+ "name": "የኒካራጓ ኮርዶባ",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "የኒውዚላንድ ዶላር",
+ "symbol": "NZ$"
+ },
+ "NAD": {
+ "name": "የናሚቢያ ዶላር",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "የናይጄሪያ ናይራ",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "የኔፓል ሩፒ",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "የኖርዌይ ክሮን",
+ "symbol": "NOK"
+ },
+ "ALL": {
+ "name": "የአልባንያ ሌክ",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "የአልጄሪያ ዲናር",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "የአሜሪካን ዶላር",
+ "symbol": "US$"
+ },
+ "AMD": {
+ "name": "የአርመን ድራም",
+ "symbol": "AMD"
+ },
+ "ARS": {
+ "name": "የአርጀንቲና ፔሶ",
+ "symbol": "ARS"
+ },
+ "AOA": {
+ "name": "የአንጎላ ኩዋንዛ",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "የአውስትራሊያ ዶላር",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "የአዛርባጃን ማናት",
+ "symbol": "AZN"
+ },
+ "ISK": {
+ "name": "የአይስላንድ ክሮና",
+ "symbol": "ISK"
+ },
+ "TWD": {
+ "name": "የአዲሷ ታይዋን ዶላር",
+ "symbol": "NT$"
+ },
+ "AFN": {
+ "name": "የአፍጋን አፍጋኒ",
+ "symbol": "AFN"
+ },
+ "UYU": {
+ "name": "የኡራጓይ ፔሶ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "የኡዝፔኪስታን ሶም",
+ "symbol": "UZS"
+ },
+ "IQD": {
+ "name": "የኢራቅ ዲናር",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "የኢራን ሪአል",
+ "symbol": "IRR"
+ },
+ "ETB": {
+ "name": "የኢትዮጵያ ብር",
+ "symbol": "ብር"
+ },
+ "IDR": {
+ "name": "የኢንዶኔዥያ ሩፒሃ",
+ "symbol": "IDR"
+ },
+ "ERN": {
+ "name": "የኤርትራ ናቅፋ",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "የእስራኤል አዲስ ሽቅል",
+ "symbol": "₪"
+ },
+ "GBP": {
+ "name": "የእንግሊዝ ፓውንድ ስተርሊንግ",
+ "symbol": "£"
+ },
+ "OMR": {
+ "name": "የኦማን ሪአል",
+ "symbol": "OMR"
+ },
+ "CUC": {
+ "name": "የኩባ የሚመነዘር ፔሶ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "የኩባ ፔሶ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "የኩዌት ዲናር",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "የኪርጊስታን ሶም",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "የካምቦዲያ ሬል",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "የካናዳ ዶላር",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "የካዛኪስታን ተንጌ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "የካይማን ደሴቶች ዶላር",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "የኬኒያ ሺሊንግ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "የኬፕ ቫርዲ ኤስኩዶ",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "የክሮሽያ ኩና",
+ "symbol": "HRK"
+ },
+ "COP": {
+ "name": "የኮሎምቢያ ፔሶ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "የኮሞሮ ፍራንክ",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "የኮስታሪካ ኮሎን",
+ "symbol": "CRC"
+ },
+ "CDF": {
+ "name": "የኮንጐ ፍራንክ ኮንጐሌዝ",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "የኳታር ሪአል",
+ "symbol": "QAR"
+ },
+ "ZMW": {
+ "name": "የዛምቢያ ክዋቻ",
+ "symbol": "ZMW"
+ },
+ "YER": {
+ "name": "የየመን ሪአል",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "የዩክሬን ሀሪይቭኒአ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "የዩጋንዳ ሺሊንግ",
+ "symbol": "UGX"
+ },
+ "SSP": {
+ "name": "የደቡብ ሱዳን ፓውንድ",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "የደቡብ አፍሪካ ራንድ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "የደቡብ ኮሪያ ዎን",
+ "symbol": "₩"
+ },
+ "DKK": {
+ "name": "የዴንማርክ ክሮን",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "የዶሚኒክ ፔሶ",
+ "symbol": "DOP"
+ },
+ "JMD": {
+ "name": "የጃማይካ ዶላር",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "የጃፓን የን",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "የጅቡቲ ፍራንክ",
+ "symbol": "DJF"
+ },
+ "JOD": {
+ "name": "የጆርዳን ዲናር",
+ "symbol": "JOD"
+ },
+ "GEL": {
+ "name": "የጆርጅያ ላሪ",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "የጉየና ዶላር",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "የጊኒ ፍራንክ",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "የጋምቢያ ዳላሲ",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "የጋና ሲዲ",
+ "symbol": "GHS"
+ },
+ "EGP": {
+ "name": "የግብጽ ፓውንድ",
+ "symbol": "EGP"
+ },
+ "PHP": {
+ "name": "የፊሊፒንስ ፔሶ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "የፊጂ ዶላር",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "የፎክላንድ ደሴቶች ፓውንድ",
+ "symbol": "FKP"
+ },
+ "PYG": {
+ "name": "የፓራጓይ ጉአራኒ",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "የፓኪስታን ሩፒ",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "የፓፕዋ ኒው ጊኒ ኪና",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "የፔሩቪያ ኑኤቮ ሶል",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "የፖላንድ ዝሎቲ",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "ዩሮ",
+ "symbol": "€"
+ },
+ "GIP": {
+ "name": "ጂብራልተር ፓውንድ",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "ጓቲማላን ኩቲዛል",
+ "symbol": "GTQ"
+ },
+ "PAB": {
+ "name": "ፓናማኒአን ባልቦአ",
+ "symbol": "PAB"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ar.json b/library/intl/resources/currency/ar.json
new file mode 100644
index 000000000..d8d56ee12
--- /dev/null
+++ b/library/intl/resources/currency/ar.json
@@ -0,0 +1,634 @@
+{
+ "MGA": {
+ "name": "أرياري مدغشقر",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "أفغاني",
+ "symbol": "AFN"
+ },
+ "MRO": {
+ "name": "أوقية موريتانية",
+ "symbol": "أ.م.‏"
+ },
+ "CVE": {
+ "name": "اسكودو الرأس الخضراء",
+ "symbol": "CVE"
+ },
+ "MOP": {
+ "name": "باتاكا ماكاوي",
+ "symbol": "MOP"
+ },
+ "THB": {
+ "name": "باخت تايلاندي",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوا بنمي",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "بانغا تونغا",
+ "symbol": "TOP"
+ },
+ "BWP": {
+ "name": "بولا بتسواني",
+ "symbol": "BWP"
+ },
+ "VEF": {
+ "name": "بوليفار فنزويلي",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بوليفيانو بوليفي",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بير أثيوبي",
+ "symbol": "ETB"
+ },
+ "ARS": {
+ "name": "بيزو أرجنتيني",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "بيزو الدومنيكان",
+ "symbol": "DOP"
+ },
+ "UYU": {
+ "name": "بيزو اوروغواي",
+ "symbol": "UYU"
+ },
+ "CLP": {
+ "name": "بيزو شيلي",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "بيزو فلبيني",
+ "symbol": "PHP"
+ },
+ "CUP": {
+ "name": "بيزو كوبي",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "بيزو كوبي قابل للتحويل",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "بيزو كولومبي",
+ "symbol": "COP"
+ },
+ "MXN": {
+ "name": "بيزو مكسيكي",
+ "symbol": "MX$"
+ },
+ "BDT": {
+ "name": "تاكا بنجلاديشي",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالا ساموا",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "توغروغ منغولي",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "تينغ كازاخستاني",
+ "symbol": "KZT"
+ },
+ "LBP": {
+ "name": "جنية لبناني",
+ "symbol": "ل.ل.‏"
+ },
+ "GBP": {
+ "name": "جنيه إسترليني",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "جنيه جبل طارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "جنيه جزر فوكلاند",
+ "symbol": "FKP"
+ },
+ "SSP": {
+ "name": "جنيه جنوب السودان",
+ "symbol": "ج.ج.س."
+ },
+ "SHP": {
+ "name": "جنيه سانت هيلين",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "جنيه سوداني",
+ "symbol": "ج.س."
+ },
+ "EGP": {
+ "name": "جنيه مصري",
+ "symbol": "ج.م.‏"
+ },
+ "PYG": {
+ "name": "جواراني باراجواي",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "جوردى هايتي",
+ "symbol": "HTG"
+ },
+ "AMD": {
+ "name": "درام أرميني",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم إماراتي",
+ "symbol": "د.إ.‏"
+ },
+ "MAD": {
+ "name": "درهم مغربي",
+ "symbol": "د.م.‏"
+ },
+ "GMD": {
+ "name": "دلاسي جامبي",
+ "symbol": "GMD"
+ },
+ "STD": {
+ "name": "دوبرا ساو تومي وبرينسيبي",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "دولار أسترالي",
+ "symbol": "AU$"
+ },
+ "USD": {
+ "name": "دولار أمريكي",
+ "symbol": "US$"
+ },
+ "BSD": {
+ "name": "دولار باهامي",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "دولار بربادوسي",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "دولار برمودي",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "دولار بروناي",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "دولار بليزي",
+ "symbol": "BZD"
+ },
+ "TWD": {
+ "name": "دولار تايواني",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "دولار ترينداد وتوباجو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دولار جامايكي",
+ "symbol": "JMD"
+ },
+ "SBD": {
+ "name": "دولار جزر سليمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دولار جزر كيمن",
+ "symbol": "KYD"
+ },
+ "ZWL": {
+ "name": "دولار زمبابوي 2009",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "دولار سنغافوري",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "دولار سورينامي",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دولار شرق الكاريبي",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "دولار غيانا",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "دولار فيجي",
+ "symbol": "FJD"
+ },
+ "CAD": {
+ "name": "دولار كندي",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "دولار ليبيري",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دولار ناميبي",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "دولار نيوزيلندي",
+ "symbol": "NZ$"
+ },
+ "HKD": {
+ "name": "دولار هونج كونج",
+ "symbol": "HK$"
+ },
+ "VND": {
+ "name": "دونج فيتنامي",
+ "symbol": "₫"
+ },
+ "JOD": {
+ "name": "دينار أردني",
+ "symbol": "د.أ.‏"
+ },
+ "BHD": {
+ "name": "دينار بحريني",
+ "symbol": "د.ب.‏"
+ },
+ "DZD": {
+ "name": "دينار جزائري",
+ "symbol": "د.ج.‏"
+ },
+ "RSD": {
+ "name": "دينار صربي",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دينار عراقي",
+ "symbol": "د.ع.‏"
+ },
+ "KWD": {
+ "name": "دينار كويتي",
+ "symbol": "د.ك.‏"
+ },
+ "LYD": {
+ "name": "دينار ليبي",
+ "symbol": "د.ل.‏"
+ },
+ "MKD": {
+ "name": "دينار مقدوني",
+ "symbol": "MKD"
+ },
+ "TND": {
+ "name": "دينارتونسي",
+ "symbol": "د.ت.‏"
+ },
+ "ZAR": {
+ "name": "راند جنوب أفريقيا",
+ "symbol": "ZAR"
+ },
+ "BYR": {
+ "name": "روبل بيلاروسي",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "روبل روسي",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "روبية إندونيسية",
+ "symbol": "ر.إن."
+ },
+ "PKR": {
+ "name": "روبية باكستاني",
+ "symbol": "ر.ب."
+ },
+ "LKR": {
+ "name": "روبية سريلانكية",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روبية سيشيلية",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "روبية موريشيوسية",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روبية نيبالي",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روبيه هندي",
+ "symbol": "ر.ه.‏"
+ },
+ "MVR": {
+ "name": "روفيه جزر المالديف",
+ "symbol": "MVR"
+ },
+ "IRR": {
+ "name": "ريال إيراني",
+ "symbol": "ر.إ."
+ },
+ "BRL": {
+ "name": "ريال برازيلي",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "ريال سعودي",
+ "symbol": "ر.س.‏"
+ },
+ "OMR": {
+ "name": "ريال عماني",
+ "symbol": "ر.ع.‏"
+ },
+ "QAR": {
+ "name": "ريال قطري",
+ "symbol": "ر.ق.‏"
+ },
+ "YER": {
+ "name": "ريال يمني",
+ "symbol": "ر.ي.‏"
+ },
+ "MYR": {
+ "name": "رينغيت ماليزي",
+ "symbol": "MYR"
+ },
+ "KHR": {
+ "name": "رييال كمبودي",
+ "symbol": "KHR"
+ },
+ "PLN": {
+ "name": "زلوتي بولندي",
+ "symbol": "PLN"
+ },
+ "PEN": {
+ "name": "سول جديد البيرو",
+ "symbol": "PEN"
+ },
+ "UZS": {
+ "name": "سوم أوزبكستاني",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قيرغستاني",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "سوموني طاجيكستاني",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سيدي غانا",
+ "symbol": "GHS"
+ },
+ "UGX": {
+ "name": "شلن أوغندي",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شلن تنزاني",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شلن صومالي",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شلن كينيي",
+ "symbol": "KES"
+ },
+ "ILS": {
+ "name": "شيكل إسرائيلي جديد",
+ "symbol": "₪"
+ },
+ "ANG": {
+ "name": "غيلدر هولندي أنتيلي",
+ "symbol": "ANG"
+ },
+ "VUV": {
+ "name": "فاتو فانواتو",
+ "symbol": "VUV"
+ },
+ "XAF": {
+ "name": "فرنك أفريقي",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "فرنك بروندي",
+ "symbol": "BIF"
+ },
+ "KMF": {
+ "name": "فرنك جزر القمر",
+ "symbol": "ف.ج.ق.‏"
+ },
+ "DJF": {
+ "name": "فرنك جيبوتي",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "فرنك رواندي",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "فرنك سويسري",
+ "symbol": "CHF"
+ },
+ "XOF": {
+ "name": "فرنك سي إف إيه غرب إفريقيا",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "فرنك سي إف بي",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "فرنك غينيا",
+ "symbol": "GNF"
+ },
+ "CDF": {
+ "name": "فرنك كونغولي",
+ "symbol": "CDF"
+ },
+ "AWG": {
+ "name": "فلورن أروبي",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "فورينت مجري",
+ "symbol": "HUF"
+ },
+ "NIO": {
+ "name": "قرطبة نيكاراغوا",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "كرونة تشيكية",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "كرونة دانماركي",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "كرونة سويدية",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "كرونة نرويجية",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "كرونه أيسلندي",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "كواشا زامبي",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "كواشا مالاوي",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "كوانزا أنجولي",
+ "symbol": "AOA"
+ },
+ "GTQ": {
+ "name": "كوتزال جواتيمالا",
+ "symbol": "GTQ"
+ },
+ "CRC": {
+ "name": "كولن كوستا ريكي",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "كولون سلفادوري",
+ "symbol": "SVC"
+ },
+ "HRK": {
+ "name": "كونا كرواتي",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "كيات ميانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "كيب لاوسي",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "كينا بابوا غينيا الجديدة",
+ "symbol": "PGK"
+ },
+ "GEL": {
+ "name": "لارى جورجي",
+ "symbol": "GEL"
+ },
+ "LSL": {
+ "name": "لوتي ليسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "ليتا ليتوانية",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "ليرة تركية",
+ "symbol": "ل.ت."
+ },
+ "SYP": {
+ "name": "ليرة سورية",
+ "symbol": "ل.س.‏"
+ },
+ "BGN": {
+ "name": "ليف بلغاري",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "ليك ألباني",
+ "symbol": "ALL"
+ },
+ "SZL": {
+ "name": "ليلانجيني سوازيلندي",
+ "symbol": "SZL"
+ },
+ "HNL": {
+ "name": "ليمبيرا هنداروس",
+ "symbol": "HNL"
+ },
+ "RON": {
+ "name": "ليو روماني",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "ليو مولدوفي",
+ "symbol": "MDL"
+ },
+ "SLL": {
+ "name": "ليون سيراليوني",
+ "symbol": "SLL"
+ },
+ "BAM": {
+ "name": "مارك البوسنة والهرسك قابل للتحويل",
+ "symbol": "BAM"
+ },
+ "AZN": {
+ "name": "مانات أذربيجان",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "مانات تركمانستان",
+ "symbol": "TMT"
+ },
+ "MZN": {
+ "name": "متكال موزمبيقي",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "ناكفا أريتري",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نايرا نيجيري",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "نولتوم بوتاني",
+ "symbol": "BTN"
+ },
+ "UAH": {
+ "name": "هريفنيا أوكراني",
+ "symbol": "UAH"
+ },
+ "KRW": {
+ "name": "وون كوريا الجنوبية",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "وون كوريا الشمالية",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "ين ياباني",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "يوان صيني",
+ "symbol": "ي.ص"
+ },
+ "EUR": {
+ "name": "يورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/asa.json b/library/intl/resources/currency/asa.json
new file mode 100644
index 000000000..4936fcc9b
--- /dev/null
+++ b/library/intl/resources/currency/asa.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalathi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinari ya Thudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinari ya Tunithia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham ya Falme dha Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra ya Thao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Authtralia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "ethkudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "faranga ya Uthwithi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "ZMW": {
+ "name": "kwacha ya Dhambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwandha ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti ya Lethoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "pauni ya Mithri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Thantahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingeredha",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya Botthwana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "randi ya Afrika Kuthini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "riyal ya Thaudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia ya Morithi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "shilingi ya Tandhania",
+ "symbol": "TSh"
+ },
+ "SOS": {
+ "name": "shilingi ya Thomalia",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "JPY": {
+ "name": "tharafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ast.json b/library/intl/resources/currency/ast.json
new file mode 100644
index 000000000..c36cb7697
--- /dev/null
+++ b/library/intl/resources/currency/ast.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganí afganistanu",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandés",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panamiegu",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolanu",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "bolivianu",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanianu",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costarricanu",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "córdoba nicaraguanu",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi gambianu",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar arxelín",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar baḥreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquín",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "dinar kuwaitianu",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libiu",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbiu",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecín",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "dinar xordanu",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "dirḥam de los Emiratos Árabes Xuníos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirḥam marroquín",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de Santu Tomé y Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australianu",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "dólar bahamés",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadianu",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar belizianu",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dólar bermudianu",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dólar bruneyanu",
+ "symbol": "BND"
+ },
+ "KYD": {
+ "name": "dólar caimanés",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "dólar de los Estaos Xuníos",
+ "symbol": "$"
+ },
+ "TTD": {
+ "name": "dólar de Trinidá y Tobagu",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "dólar fixanu",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HK$"
+ },
+ "LRD": {
+ "name": "dólar liberianu",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibianu",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "dólar nuevu taiwanés",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "dólar salomonés",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapuranu",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "dólar xamaicanu",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "dong vietnamín",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram armeniu",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudu cabuverdianu",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florín arubanu",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "francu burundianu",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "francu CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "francu CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "francu CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "francu comoranu",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "francu congolés",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "francu guineanu",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "francu ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "francu suizu",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "francu xibutianu",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitianu",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayu",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "guilder de les Antilles Neerlandeses",
+ "symbol": "ANG"
+ },
+ "PGK": {
+ "name": "kina papuana",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosianu",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malauianu",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambianu",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolanu",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari xeorxanu",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurana",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierralleonés",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavu",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumanu",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni suazilandés",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "SHP": {
+ "name": "llibra de Santa Lena",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "llibra de Xibraltar",
+ "symbol": "GIP"
+ },
+ "GBP": {
+ "name": "llibra esterlina",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "llibra exipciana",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "llibra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "llibra malviniana",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "llibra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "llibra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "llibra sursudanesa",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "llira turca",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerbaixanu",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomanu",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marcu convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicanu",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nixeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritréu",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanu",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga tonganu",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macáu",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "pesu arxentín",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "pesu chilenu",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "pesu colombianu",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "pesu convertible cubanu",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "pesu cubanu",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "pesu dominicanu",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "pesu filipín",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "pesu mexicanu",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "pesu uruguayu",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botsuaniana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal de Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sudafricanu",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilanu",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranín",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanianu",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatarín",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial yemenín",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel camboyanu",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malasiu",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal saudita",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rublu bielorrusu",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublu rusu",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa maldiviana",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia paquistanina",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seixelesa",
+ "symbol": "SCR"
+ },
+ "IDR": {
+ "name": "rupiah indonesia",
+ "symbol": "IDR"
+ },
+ "KES": {
+ "name": "shilling kenianu",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilling somalín",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanianu",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "shilling ugandés",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "sol nuevu peruanu",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "som kirguistanín",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbequistanín",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni taxiquistanín",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "BDT": {
+ "name": "taka bangladexí",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoanu",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazaquistanín",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuanu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreanu",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreanu",
+ "symbol": "₩"
+ },
+ "ILS": {
+ "name": "xequel nuevu",
+ "symbol": "₪"
+ },
+ "JPY": {
+ "name": "yen xaponés",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "yuan chinu",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/az.json b/library/intl/resources/currency/az.json
new file mode 100644
index 000000000..f238801a8
--- /dev/null
+++ b/library/intl/resources/currency/az.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "ABŞ Dolları",
+ "symbol": "US$"
+ },
+ "ALL": {
+ "name": "Albaniya Leki",
+ "symbol": "ALL"
+ },
+ "AOA": {
+ "name": "Anqola Kvanzası",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentina Pesosu",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba Florini",
+ "symbol": "AWG"
+ },
+ "EUR": {
+ "name": "Avro",
+ "symbol": "€"
+ },
+ "AUD": {
+ "name": "Avstraliya Dolları",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azərbaycan Manatı",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahama Dolları",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Banqladeş Takası",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados Dolları",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarus Rublu",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Beliz Dolları",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda Dolları",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "Bəhreyn Dinarı",
+ "symbol": "BHD"
+ },
+ "AED": {
+ "name": "Birləşmiş Ərəb Əmirlikləri Dirhəmi",
+ "symbol": "AED"
+ },
+ "BOB": {
+ "name": "Boliviya Bolivianosu",
+ "symbol": "BOB"
+ },
+ "BGN": {
+ "name": "Bolqarıstan Levi",
+ "symbol": "BGN"
+ },
+ "BAM": {
+ "name": "Bosniya-Herseqovina Markası",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvana Pulası",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliya Realı",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britaniya Funt Sterlinqi",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruney Dolları",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Burundi Frankı",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butan Nqultrumu",
+ "symbol": "BTN"
+ },
+ "ZAR": {
+ "name": "Cənubi Afrika Randı",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Cənubi Koreya Vonu",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Cənubi Sudan Funtu",
+ "symbol": "SSP"
+ },
+ "DJF": {
+ "name": "Cibuti Frankı",
+ "symbol": "DJF"
+ },
+ "CZK": {
+ "name": "Çexiya Korunası",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Çili Pesosu",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Çin Yuanı",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "Danimarka Kronu",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominika Pesosu",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Efiopiya Bırrı",
+ "symbol": "ETB"
+ },
+ "SVC": {
+ "name": "El Salvador kolonu",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreya Nakfası",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "Ermənistan Dramı",
+ "symbol": "AMD"
+ },
+ "AFN": {
+ "name": "Əfqanıstan Əfqanisi",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "Əlcəzair Dinarı",
+ "symbol": "DZD"
+ },
+ "FJD": {
+ "name": "Fici Dolları",
+ "symbol": "FJD"
+ },
+ "XOF": {
+ "name": "Fil Dişi Sahili Frankı",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "Filippin Pesosu",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklend Adaları Funtu",
+ "symbol": "FKP"
+ },
+ "XPF": {
+ "name": "Fransız Polineziyası Frankı",
+ "symbol": "CFPF"
+ },
+ "GIP": {
+ "name": "Gibraltar Funtu",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gürcüstan Larisi",
+ "symbol": "GEL"
+ },
+ "HTG": {
+ "name": "Haiti Qourdu",
+ "symbol": "HTG"
+ },
+ "INR": {
+ "name": "Hindistan Rupisi",
+ "symbol": "₹"
+ },
+ "HNL": {
+ "name": "Honduras Lempirası",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honq Konq Dolları",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Xorvatiya Kunası",
+ "symbol": "HRK"
+ },
+ "IDR": {
+ "name": "İndoneziya Rupisi",
+ "symbol": "IDR"
+ },
+ "JOD": {
+ "name": "İordaniya Dinarı",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "İraq Dinarı",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "İran Rialı",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "İslandiya Kronu",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "İsrail Yeni Şekeli",
+ "symbol": "₪"
+ },
+ "SEK": {
+ "name": "İsveç Kronu",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "İsveçrə Frankı",
+ "symbol": "CHF"
+ },
+ "KHR": {
+ "name": "Kamboca Rieli",
+ "symbol": "KHR"
+ },
+ "XAF": {
+ "name": "Kamerun Frankı",
+ "symbol": "FCFA"
+ },
+ "CAD": {
+ "name": "Kanada Dolları",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kape Verde Eskudosu",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Kayman Adaları Dolları",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "Keniya Şillinqi",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kırğızıstan Somu",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbiya Pesosu",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komor Frankı",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Konqo Frankı",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kosta Rika Kolonu",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kuba Çevrilən Pesosu",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuba Pesosu",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Küveyt Dinarı",
+ "symbol": "KWD"
+ },
+ "GMD": {
+ "name": "Qambiya Dalasisi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Qana Sedisi",
+ "symbol": "GHS"
+ },
+ "QAR": {
+ "name": "Qatar Rialı",
+ "symbol": "QAR"
+ },
+ "GYD": {
+ "name": "Qayana Dolları",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "Qazaxıstan Tengesi",
+ "symbol": "KZT"
+ },
+ "GTQ": {
+ "name": "Qvatemala Küetzalı",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Qvineya Frankı",
+ "symbol": "GNF"
+ },
+ "LAK": {
+ "name": "Laos Kipi",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto Lotisi",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberiya Dolları",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "Litva Liti",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Livan Funtu",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Liviya Dinarı",
+ "symbol": "LYD"
+ },
+ "HUF": {
+ "name": "Macarıstan Forinti",
+ "symbol": "HUF"
+ },
+ "MGA": {
+ "name": "Madaqaskar Ariarisi",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao Patakası",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedoniya Dinarı",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malavi Kvaçası",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malayziya Ringiti",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldiv Rufiyası",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "Mavriki Rupisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mavritaniya Ugiyası",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksika Pesosu",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "Mərakeş Dirhəmi",
+ "symbol": "MAD"
+ },
+ "EGP": {
+ "name": "Misir Funtu",
+ "symbol": "EGP"
+ },
+ "MDL": {
+ "name": "Moldova Leyi",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Monqoliya Tuqriki",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambik Metikalı",
+ "symbol": "MZN"
+ },
+ "SHP": {
+ "name": "Müqəddəs Yelena Funtu",
+ "symbol": "SHP"
+ },
+ "MMK": {
+ "name": "Myanma Kiyatı",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibiya Dolları",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepal Rupisi",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Niderland Antilyası Gilderi",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigeriya Nairası",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaraqua Kordobası",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveç Kronu",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Oman Rialı",
+ "symbol": "OMR"
+ },
+ "UZS": {
+ "name": "Özbəkistan Somu",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "Pakistan Rupisi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama Balboası",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Yeni Qvineya Kinası",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraqvay Quaranisi",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru Nuevo Solu",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polşa Zlotısı",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruanda Frankı",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumıniya Leyi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rusiya Rublu",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "Samoa Talası",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "San Tom və Prinsip Dobrası",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "Serbiya Dinarı",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seyşel Rupisi",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Səudiyyə Riyalı",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "Sierra Leon Leonu",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Sinqapur Dolları",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Adaları Dolları",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Şillinqi",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Sudan Funtu",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam Dolları",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "Suriya Funtu",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "Svazilend Lilangenini",
+ "symbol": "SZL"
+ },
+ "XCD": {
+ "name": "Şərqi Karib Dolları",
+ "symbol": "EC$"
+ },
+ "KPW": {
+ "name": "Şimali Koreya Vonu",
+ "symbol": "KPW"
+ },
+ "LKR": {
+ "name": "Şri Lanka Rupisi",
+ "symbol": "LKR"
+ },
+ "TJS": {
+ "name": "Tacikistan Somonisi",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniya Şillinqi",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Tayland Batı",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Tayvan Yeni Dolları",
+ "symbol": "NT$"
+ },
+ "TOP": {
+ "name": "Tonqa Panqası",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad və Tobaqo Dolları",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunis Dinarı",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkiyə Lirəsi",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Türkmənistan Manatı",
+ "symbol": "TMT"
+ },
+ "UAH": {
+ "name": "Ukrayna Qrivnası",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uqanda Şillinqi",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruqvay Pesosu",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatusu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesuela Bolivarı",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vyetnam Donqu",
+ "symbol": "₫"
+ },
+ "JMD": {
+ "name": "Yamayka Dolları",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Yaponiya Yeni",
+ "symbol": "JP¥"
+ },
+ "NZD": {
+ "name": "Yeni Zelandiya Dolları",
+ "symbol": "NZ$"
+ },
+ "YER": {
+ "name": "Yəmən Rialı",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambiya Kvaçası",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabve Dolları (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bas.json b/library/intl/resources/currency/bas.json
new file mode 100644
index 000000000..06d2a4a65
--- /dev/null
+++ b/library/intl/resources/currency/bas.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bîr ètìopìà",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasì gambìà",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dìnâr àlgerìà",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinâr Bàraìn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dìnâr libìà",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dìnâr sùdân",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dìnâr tùnîs",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirhàm èmìrâ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dìrham màrôk",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobrà sàotòme",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dɔla àmerkà",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dɔ̀lâr kànadà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dɔ̀lâr lìberìà",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dɔ̀lâr nàmibìà",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dɔ̀lâr òstralìà",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "Èrô",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Èskudò kabwe᷆r",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Frǎŋ bùrundì",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Frǎŋ CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Frǎŋ CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Frǎŋ jìbutì",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Frǎŋ kòmorà",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Frǎŋ kòŋgo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Frǎŋ màlàgasì",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Frǎŋ Rùandà",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Frǎŋ sùwîs",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwaca màlawì",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwàca sàmbià",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwànza àŋgolà",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lèonɛ̀",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lìlàŋgeni swàzì",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lotì lèsòtò",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafkà èrìtrěà",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayrà nìgerìà",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paùnd ègîptò",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paùnd hèlenà",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pùla Bòtswanà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rân àfrǐkàsɔ̀",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rìal sàudì",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rùpi īndìà",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupìɛ̀ mòrîs",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rùpiɛ̀ sèsɛ̂l",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silîŋ kenìà",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silîŋ sòmàli",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silîŋ tànzànià",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silîŋ ùgàndà",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "GBP": {
+ "name": "Stɛrlìŋ ŋgìsì",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ùgwiya mòrìtanìa",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "Yɛ̂n yàpân",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yùan kinà",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/base.json b/library/intl/resources/currency/base.json
new file mode 100644
index 000000000..b99ca7ad0
--- /dev/null
+++ b/library/intl/resources/currency/base.json
@@ -0,0 +1,683 @@
+{
+ "AED": {
+ "code": "AED",
+ "numeric_code": "784"
+ },
+ "AFN": {
+ "code": "AFN",
+ "numeric_code": "971",
+ "fraction_digits": "0"
+ },
+ "ALL": {
+ "code": "ALL",
+ "numeric_code": "008",
+ "fraction_digits": "0"
+ },
+ "AMD": {
+ "code": "AMD",
+ "numeric_code": "051",
+ "fraction_digits": "0"
+ },
+ "ANG": {
+ "code": "ANG",
+ "numeric_code": "532"
+ },
+ "AOA": {
+ "code": "AOA",
+ "numeric_code": "973"
+ },
+ "ARS": {
+ "code": "ARS",
+ "numeric_code": "032"
+ },
+ "AUD": {
+ "code": "AUD",
+ "numeric_code": "036"
+ },
+ "AWG": {
+ "code": "AWG",
+ "numeric_code": "533"
+ },
+ "AZN": {
+ "code": "AZN",
+ "numeric_code": "944"
+ },
+ "BAM": {
+ "code": "BAM",
+ "numeric_code": "977"
+ },
+ "BBD": {
+ "code": "BBD",
+ "numeric_code": "052"
+ },
+ "BDT": {
+ "code": "BDT",
+ "numeric_code": "050"
+ },
+ "BGN": {
+ "code": "BGN",
+ "numeric_code": "975"
+ },
+ "BHD": {
+ "code": "BHD",
+ "numeric_code": "048",
+ "fraction_digits": "3"
+ },
+ "BIF": {
+ "code": "BIF",
+ "numeric_code": "108",
+ "fraction_digits": "0"
+ },
+ "BMD": {
+ "code": "BMD",
+ "numeric_code": "060"
+ },
+ "BND": {
+ "code": "BND",
+ "numeric_code": "096"
+ },
+ "BOB": {
+ "code": "BOB",
+ "numeric_code": "068"
+ },
+ "BRL": {
+ "code": "BRL",
+ "numeric_code": "986"
+ },
+ "BSD": {
+ "code": "BSD",
+ "numeric_code": "044"
+ },
+ "BTN": {
+ "code": "BTN",
+ "numeric_code": "064"
+ },
+ "BWP": {
+ "code": "BWP",
+ "numeric_code": "072"
+ },
+ "BYR": {
+ "code": "BYR",
+ "numeric_code": "974",
+ "fraction_digits": "0"
+ },
+ "BZD": {
+ "code": "BZD",
+ "numeric_code": "084"
+ },
+ "CAD": {
+ "code": "CAD",
+ "numeric_code": "124"
+ },
+ "CDF": {
+ "code": "CDF",
+ "numeric_code": "976"
+ },
+ "CHF": {
+ "code": "CHF",
+ "numeric_code": "756"
+ },
+ "CLP": {
+ "code": "CLP",
+ "numeric_code": "152",
+ "fraction_digits": "0"
+ },
+ "CNY": {
+ "code": "CNY",
+ "numeric_code": "156"
+ },
+ "COP": {
+ "code": "COP",
+ "numeric_code": "170",
+ "fraction_digits": "0"
+ },
+ "CRC": {
+ "code": "CRC",
+ "numeric_code": "188",
+ "fraction_digits": "0"
+ },
+ "CUC": {
+ "code": "CUC",
+ "numeric_code": "931"
+ },
+ "CUP": {
+ "code": "CUP",
+ "numeric_code": "192"
+ },
+ "CVE": {
+ "code": "CVE",
+ "numeric_code": "132"
+ },
+ "CZK": {
+ "code": "CZK",
+ "numeric_code": "203"
+ },
+ "DJF": {
+ "code": "DJF",
+ "numeric_code": "262",
+ "fraction_digits": "0"
+ },
+ "DKK": {
+ "code": "DKK",
+ "numeric_code": "208"
+ },
+ "DOP": {
+ "code": "DOP",
+ "numeric_code": "214"
+ },
+ "DZD": {
+ "code": "DZD",
+ "numeric_code": "012"
+ },
+ "EGP": {
+ "code": "EGP",
+ "numeric_code": "818"
+ },
+ "ERN": {
+ "code": "ERN",
+ "numeric_code": "232"
+ },
+ "ETB": {
+ "code": "ETB",
+ "numeric_code": "230"
+ },
+ "EUR": {
+ "code": "EUR",
+ "numeric_code": "978"
+ },
+ "FJD": {
+ "code": "FJD",
+ "numeric_code": "242"
+ },
+ "FKP": {
+ "code": "FKP",
+ "numeric_code": "238"
+ },
+ "GBP": {
+ "code": "GBP",
+ "numeric_code": "826"
+ },
+ "GEL": {
+ "code": "GEL",
+ "numeric_code": "981"
+ },
+ "GHS": {
+ "code": "GHS",
+ "numeric_code": "936"
+ },
+ "GIP": {
+ "code": "GIP",
+ "numeric_code": "292"
+ },
+ "GMD": {
+ "code": "GMD",
+ "numeric_code": "270"
+ },
+ "GNF": {
+ "code": "GNF",
+ "numeric_code": "324",
+ "fraction_digits": "0"
+ },
+ "GTQ": {
+ "code": "GTQ",
+ "numeric_code": "320"
+ },
+ "GYD": {
+ "code": "GYD",
+ "numeric_code": "328",
+ "fraction_digits": "0"
+ },
+ "HKD": {
+ "code": "HKD",
+ "numeric_code": "344"
+ },
+ "HNL": {
+ "code": "HNL",
+ "numeric_code": "340"
+ },
+ "HRK": {
+ "code": "HRK",
+ "numeric_code": "191"
+ },
+ "HTG": {
+ "code": "HTG",
+ "numeric_code": "332"
+ },
+ "HUF": {
+ "code": "HUF",
+ "numeric_code": "348"
+ },
+ "IDR": {
+ "code": "IDR",
+ "numeric_code": "360",
+ "fraction_digits": "0"
+ },
+ "ILS": {
+ "code": "ILS",
+ "numeric_code": "376"
+ },
+ "INR": {
+ "code": "INR",
+ "numeric_code": "356"
+ },
+ "IQD": {
+ "code": "IQD",
+ "numeric_code": "368",
+ "fraction_digits": "0"
+ },
+ "IRR": {
+ "code": "IRR",
+ "numeric_code": "364",
+ "fraction_digits": "0"
+ },
+ "ISK": {
+ "code": "ISK",
+ "numeric_code": "352",
+ "fraction_digits": "0"
+ },
+ "JMD": {
+ "code": "JMD",
+ "numeric_code": "388"
+ },
+ "JOD": {
+ "code": "JOD",
+ "numeric_code": "400",
+ "fraction_digits": "3"
+ },
+ "JPY": {
+ "code": "JPY",
+ "numeric_code": "392",
+ "fraction_digits": "0"
+ },
+ "KES": {
+ "code": "KES",
+ "numeric_code": "404"
+ },
+ "KGS": {
+ "code": "KGS",
+ "numeric_code": "417"
+ },
+ "KHR": {
+ "code": "KHR",
+ "numeric_code": "116"
+ },
+ "KMF": {
+ "code": "KMF",
+ "numeric_code": "174",
+ "fraction_digits": "0"
+ },
+ "KPW": {
+ "code": "KPW",
+ "numeric_code": "408",
+ "fraction_digits": "0"
+ },
+ "KRW": {
+ "code": "KRW",
+ "numeric_code": "410",
+ "fraction_digits": "0"
+ },
+ "KWD": {
+ "code": "KWD",
+ "numeric_code": "414",
+ "fraction_digits": "3"
+ },
+ "KYD": {
+ "code": "KYD",
+ "numeric_code": "136"
+ },
+ "KZT": {
+ "code": "KZT",
+ "numeric_code": "398"
+ },
+ "LAK": {
+ "code": "LAK",
+ "numeric_code": "418",
+ "fraction_digits": "0"
+ },
+ "LBP": {
+ "code": "LBP",
+ "numeric_code": "422",
+ "fraction_digits": "0"
+ },
+ "LKR": {
+ "code": "LKR",
+ "numeric_code": "144"
+ },
+ "LRD": {
+ "code": "LRD",
+ "numeric_code": "430"
+ },
+ "LSL": {
+ "code": "LSL",
+ "numeric_code": "426"
+ },
+ "LTL": {
+ "code": "LTL",
+ "numeric_code": "440"
+ },
+ "LYD": {
+ "code": "LYD",
+ "numeric_code": "434",
+ "fraction_digits": "3"
+ },
+ "MAD": {
+ "code": "MAD",
+ "numeric_code": "504"
+ },
+ "MDL": {
+ "code": "MDL",
+ "numeric_code": "498"
+ },
+ "MGA": {
+ "code": "MGA",
+ "numeric_code": "969",
+ "fraction_digits": "0"
+ },
+ "MKD": {
+ "code": "MKD",
+ "numeric_code": "807"
+ },
+ "MMK": {
+ "code": "MMK",
+ "numeric_code": "104",
+ "fraction_digits": "0"
+ },
+ "MNT": {
+ "code": "MNT",
+ "numeric_code": "496",
+ "fraction_digits": "0"
+ },
+ "MOP": {
+ "code": "MOP",
+ "numeric_code": "446"
+ },
+ "MRO": {
+ "code": "MRO",
+ "numeric_code": "478",
+ "fraction_digits": "0"
+ },
+ "MUR": {
+ "code": "MUR",
+ "numeric_code": "480",
+ "fraction_digits": "0"
+ },
+ "MVR": {
+ "code": "MVR",
+ "numeric_code": "462"
+ },
+ "MWK": {
+ "code": "MWK",
+ "numeric_code": "454"
+ },
+ "MXN": {
+ "code": "MXN",
+ "numeric_code": "484"
+ },
+ "MYR": {
+ "code": "MYR",
+ "numeric_code": "458"
+ },
+ "MZN": {
+ "code": "MZN",
+ "numeric_code": "943"
+ },
+ "NAD": {
+ "code": "NAD",
+ "numeric_code": "516"
+ },
+ "NGN": {
+ "code": "NGN",
+ "numeric_code": "566"
+ },
+ "NIO": {
+ "code": "NIO",
+ "numeric_code": "558"
+ },
+ "NOK": {
+ "code": "NOK",
+ "numeric_code": "578"
+ },
+ "NPR": {
+ "code": "NPR",
+ "numeric_code": "524"
+ },
+ "NZD": {
+ "code": "NZD",
+ "numeric_code": "554"
+ },
+ "OMR": {
+ "code": "OMR",
+ "numeric_code": "512",
+ "fraction_digits": "3"
+ },
+ "PAB": {
+ "code": "PAB",
+ "numeric_code": "590"
+ },
+ "PEN": {
+ "code": "PEN",
+ "numeric_code": "604"
+ },
+ "PGK": {
+ "code": "PGK",
+ "numeric_code": "598"
+ },
+ "PHP": {
+ "code": "PHP",
+ "numeric_code": "608"
+ },
+ "PKR": {
+ "code": "PKR",
+ "numeric_code": "586",
+ "fraction_digits": "0"
+ },
+ "PLN": {
+ "code": "PLN",
+ "numeric_code": "985"
+ },
+ "PYG": {
+ "code": "PYG",
+ "numeric_code": "600",
+ "fraction_digits": "0"
+ },
+ "QAR": {
+ "code": "QAR",
+ "numeric_code": "634"
+ },
+ "RON": {
+ "code": "RON",
+ "numeric_code": "946"
+ },
+ "RSD": {
+ "code": "RSD",
+ "numeric_code": "941",
+ "fraction_digits": "0"
+ },
+ "RUB": {
+ "code": "RUB",
+ "numeric_code": "643"
+ },
+ "RWF": {
+ "code": "RWF",
+ "numeric_code": "646",
+ "fraction_digits": "0"
+ },
+ "SAR": {
+ "code": "SAR",
+ "numeric_code": "682"
+ },
+ "SBD": {
+ "code": "SBD",
+ "numeric_code": "090"
+ },
+ "SCR": {
+ "code": "SCR",
+ "numeric_code": "690"
+ },
+ "SDG": {
+ "code": "SDG",
+ "numeric_code": "938"
+ },
+ "SEK": {
+ "code": "SEK",
+ "numeric_code": "752"
+ },
+ "SGD": {
+ "code": "SGD",
+ "numeric_code": "702"
+ },
+ "SHP": {
+ "code": "SHP",
+ "numeric_code": "654"
+ },
+ "SLL": {
+ "code": "SLL",
+ "numeric_code": "694",
+ "fraction_digits": "0"
+ },
+ "SOS": {
+ "code": "SOS",
+ "numeric_code": "706",
+ "fraction_digits": "0"
+ },
+ "SRD": {
+ "code": "SRD",
+ "numeric_code": "968"
+ },
+ "SSP": {
+ "code": "SSP",
+ "numeric_code": "728"
+ },
+ "STD": {
+ "code": "STD",
+ "numeric_code": "678",
+ "fraction_digits": "0"
+ },
+ "SVC": {
+ "code": "SVC",
+ "numeric_code": "222"
+ },
+ "SYP": {
+ "code": "SYP",
+ "numeric_code": "760",
+ "fraction_digits": "0"
+ },
+ "SZL": {
+ "code": "SZL",
+ "numeric_code": "748"
+ },
+ "THB": {
+ "code": "THB",
+ "numeric_code": "764"
+ },
+ "TJS": {
+ "code": "TJS",
+ "numeric_code": "972"
+ },
+ "TMT": {
+ "code": "TMT",
+ "numeric_code": "934"
+ },
+ "TND": {
+ "code": "TND",
+ "numeric_code": "788",
+ "fraction_digits": "3"
+ },
+ "TOP": {
+ "code": "TOP",
+ "numeric_code": "776"
+ },
+ "TRY": {
+ "code": "TRY",
+ "numeric_code": "949"
+ },
+ "TTD": {
+ "code": "TTD",
+ "numeric_code": "780"
+ },
+ "TWD": {
+ "code": "TWD",
+ "numeric_code": "901"
+ },
+ "TZS": {
+ "code": "TZS",
+ "numeric_code": "834",
+ "fraction_digits": "0"
+ },
+ "UAH": {
+ "code": "UAH",
+ "numeric_code": "980"
+ },
+ "UGX": {
+ "code": "UGX",
+ "numeric_code": "800",
+ "fraction_digits": "0"
+ },
+ "USD": {
+ "code": "USD",
+ "numeric_code": "840"
+ },
+ "UYU": {
+ "code": "UYU",
+ "numeric_code": "858"
+ },
+ "UZS": {
+ "code": "UZS",
+ "numeric_code": "860",
+ "fraction_digits": "0"
+ },
+ "VEF": {
+ "code": "VEF",
+ "numeric_code": "937"
+ },
+ "VND": {
+ "code": "VND",
+ "numeric_code": "704",
+ "fraction_digits": "0"
+ },
+ "VUV": {
+ "code": "VUV",
+ "numeric_code": "548",
+ "fraction_digits": "0"
+ },
+ "WST": {
+ "code": "WST",
+ "numeric_code": "882"
+ },
+ "XAF": {
+ "code": "XAF",
+ "numeric_code": "950",
+ "fraction_digits": "0"
+ },
+ "XCD": {
+ "code": "XCD",
+ "numeric_code": "951"
+ },
+ "XOF": {
+ "code": "XOF",
+ "numeric_code": "952",
+ "fraction_digits": "0"
+ },
+ "XPF": {
+ "code": "XPF",
+ "numeric_code": "953",
+ "fraction_digits": "0"
+ },
+ "YER": {
+ "code": "YER",
+ "numeric_code": "886",
+ "fraction_digits": "0"
+ },
+ "ZAR": {
+ "code": "ZAR",
+ "numeric_code": "710"
+ },
+ "ZMW": {
+ "code": "ZMW",
+ "numeric_code": "967"
+ },
+ "ZWL": {
+ "code": "ZWL",
+ "numeric_code": "932"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/be.json b/library/intl/resources/currency/be.json
new file mode 100644
index 000000000..fe0d366ca
--- /dev/null
+++ b/library/intl/resources/currency/be.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "GBP": {
+ "name": "англійскі фунт",
+ "symbol": "£"
+ },
+ "AUD": {
+ "name": "аўстралійскі даляр",
+ "symbol": "A$"
+ },
+ "BYR": {
+ "name": "беларускі рубель",
+ "symbol": "р."
+ },
+ "BRL": {
+ "name": "бразільскі рэал",
+ "symbol": "R$"
+ },
+ "USD": {
+ "name": "долар ЗША",
+ "symbol": "$"
+ },
+ "EUR": {
+ "name": "еўра",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "індыйская рупія",
+ "symbol": "₹"
+ },
+ "CNY": {
+ "name": "кітайскі юань",
+ "symbol": "CN¥"
+ },
+ "NOK": {
+ "name": "нарвэская крона",
+ "symbol": "NOK"
+ },
+ "RUB": {
+ "name": "рускі рубель",
+ "symbol": "рас. руб."
+ },
+ "ERN": {
+ "name": "эрытрэйская накфа",
+ "symbol": "ERN"
+ },
+ "JPY": {
+ "name": "японская іена",
+ "symbol": "¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bez.json b/library/intl/resources/currency/bez.json
new file mode 100644
index 000000000..ea896cc8f
--- /dev/null
+++ b/library/intl/resources/currency/bez.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "XOF": {
+ "name": "Lupila lwa CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Lupila lwa CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "JPY": {
+ "name": "Lupila lwa Hijapani",
+ "symbol": "JP¥"
+ },
+ "ZAR": {
+ "name": "Lupila lwa Huafriaka ya Hukusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Lupila lwa Hualjelia",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Lupila lwa Huangola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Lupila lwa Huaustlalia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Lupila lwa Hubahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Lupila lwa Hubotswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Lupila lwa Hubukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Lupila lwa Huburundi",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "Lupila lwa Huchina",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "Lupila lwa Hueritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Lupila lwa Hufalme dza Huhihalabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "Lupila lwa Hugambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Lupila lwa Huindia",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Lupila lwa Hujibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Lupila lwa Hukanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Lupila lwa Hukepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Lupila lwa Hukomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Lupila lwa Hukongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Lupila lwa Hulesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Lupila lwa Hulibelia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Lupila lwa Hulibya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Lupila lwa Humalawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "Lupila lwa Humalekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "Lupila lwa Humisri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Lupila lwa Humolisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Lupila lwa Humolitania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Lupila lwa Humoloko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Lupila lwa Hunamibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Lupila lwa Hunijelia",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Lupila lwa Hurwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Lupila lwa Husantahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Lupila lwa Husaotome na Huprinisipe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Lupila lwa Husaudi",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Lupila lwa Hushelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Lupila lwa Husomalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Lupila lwa Husudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Lupila lwa Hutunisia",
+ "symbol": "TND"
+ },
+ "ETB": {
+ "name": "Lupila lwa Huuhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "Lupila lwa Huuingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "Lupila lwa Huuswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Lupila lwa Huzambia",
+ "symbol": "ZMW"
+ },
+ "SZL": {
+ "name": "Lupila lwa Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lupila lwa Lioni",
+ "symbol": "SLL"
+ },
+ "EUR": {
+ "name": "Lupila lwa Yulo",
+ "symbol": "€"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Hukenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Shilingi ya Hutanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Huuganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bg.json b/library/intl/resources/currency/bg.json
new file mode 100644
index 000000000..b13dddefa
--- /dev/null
+++ b/library/intl/resources/currency/bg.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "Австралийски долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Азербайджански манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албански лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирски динар",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Анголска кванза",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "Антилски гулден",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "Аржентинско песо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Арменски драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Арубски флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "Афганистански афган",
+ "symbol": "AFN"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадоски долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Бахамски долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Бахрейнски динар",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Беларуска рубла",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Белизийски долар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Бермудски долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливийско боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Босненска конвертируема марка",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Ботсванска пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилски реал",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "Британска лира",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Брунейски долар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурундийски франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутански нгултрум",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "Български лев",
+ "symbol": "лв."
+ },
+ "VUV": {
+ "name": "Вануатско вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Венецуелски боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Виетнамски донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "Гамбийско даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ганайско седи",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "Гаянски долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Гватемалски кетцал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвинейски франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтарска лира",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Грузински лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Датска крона",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Джибутски франк",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "Дирхам на Обединените арабски емирства",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Добра на Сао Томе и Принсипи",
+ "symbol": "STD"
+ },
+ "SBD": {
+ "name": "Долар на Соломоновите острови",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "Долар на Тринидад и Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "Доминиканско песо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египетска лира",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Еритрейска накфа",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Ескудо на Кабо Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Етиопски бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "Замбийска куача",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "Западноафрикански франк",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "Зимбабвийски долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "Израелски нов шекел",
+ "symbol": "ILS"
+ },
+ "XCD": {
+ "name": "Източнокарибски долар",
+ "symbol": "XCD"
+ },
+ "INR": {
+ "name": "Индийска рупия",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Индонезийска рупия",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Иракски динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Ирански риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Исландска крона",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йеменски риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Йордански динар",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Казахстанско тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "Кайманов долар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбоджански риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канадски долар",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Катарски риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кенийски шилинг",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Киргизстански сом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Китайски юан",
+ "symbol": "CNY"
+ },
+ "COP": {
+ "name": "Колумбийско песо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморски франк",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конгоански франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костарикански колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Кубинско конвертируемо песо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Кубинско песо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейтски динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаоски кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Лесотско лоти",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Либерийски долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Либийски динар",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "Ливанска лира",
+ "symbol": "LBP"
+ },
+ "SHP": {
+ "name": "Лира на Света Елена",
+ "symbol": "SHP"
+ },
+ "LTL": {
+ "name": "Литовски литас",
+ "symbol": "LTL"
+ },
+ "MRO": {
+ "name": "Мавританска угия",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Маврицийска рупия",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Македонски денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малавийска квача",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Малайзийски рингит",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Малгашко ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "Малдивска руфия",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокански дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Мексиканско песо",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Мианмарски кият",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбикски метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдовско леу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монголски тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Намибийски долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непалска рупия",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигерийска найра",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Никарагуанска кордоба",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Новозеландски долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Норвежка крона",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Омански риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистанска рупия",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамска балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа-новогвинейска кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвайско гуарани",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "Патака на Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "Перуански нов сол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Полска злота",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руандски франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Румънска лея",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Руска рубла",
+ "symbol": "руб."
+ },
+ "SVC": {
+ "name": "Салвадорски колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанска тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Саудитскоарабски риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазилендски лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Севернокорейски вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сейшелска рупия",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сиералеонско леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапурски долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сирийска лира",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Сомалийски шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Сръбски динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Суданска лира",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринамски долар",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "Таджикистански сомони",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Тайвански долар",
+ "symbol": "TWD"
+ },
+ "THB": {
+ "name": "Тайландски бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Танзанийски шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонганска паанга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Тунизийски динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Туркменски манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Турска лира",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Угандски шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекски сум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Украинска хривня",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Унгарски форинт",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Уругвайско песо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "Фиджийски долар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Филипинско песо",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Фолклендска лира",
+ "symbol": "FKP"
+ },
+ "XPF": {
+ "name": "Френскополинезийски франк",
+ "symbol": "CFPF"
+ },
+ "HTG": {
+ "name": "Хаитски гурд",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Хондураска лемпира",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Хонконгски долар",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "Хърватска куна",
+ "symbol": "HRK"
+ },
+ "XAF": {
+ "name": "Централноафрикански франк",
+ "symbol": "FCFA"
+ },
+ "CZK": {
+ "name": "Чешка крона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чилийско песо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "Шведска крона",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Швейцарски франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "Шриланкска рупия",
+ "symbol": "LKR"
+ },
+ "USD": {
+ "name": "Щатски долар",
+ "symbol": "щ.д."
+ },
+ "ZAR": {
+ "name": "Южноафрикански ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Южнокорейски вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Южносуданска лира",
+ "symbol": "SSP"
+ },
+ "JMD": {
+ "name": "Ямайски долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Японска йена",
+ "symbol": "JPY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bm.json b/library/intl/resources/currency/bm.json
new file mode 100644
index 000000000..069cf70b5
--- /dev/null
+++ b/library/intl/resources/currency/bm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "alizeri Dinar",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "ameriki Dolar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "GBP": {
+ "name": "angilɛ Livri Siterlingi",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "angola Kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "arabu mara kafoli Diram",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BHD": {
+ "name": "bareyini Dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "bɔtisiwana Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "capivɛrdi Esekudo",
+ "symbol": "CVE"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "eritere Nafika",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "ero",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "etiopi Bir",
+ "symbol": "ETB"
+ },
+ "EGP": {
+ "name": "eziputi Livri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Ɛlɛni-Senu Livri",
+ "symbol": "SHP"
+ },
+ "INR": {
+ "name": "Ɛndu Rupi",
+ "symbol": "₹"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "DJF": {
+ "name": "jibuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "kanada Dolar",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "keniya Siling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "komɔri Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongole Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "lesoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "liberiya Dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libi Dinar",
+ "symbol": "LYD"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagasikari Fraŋ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "malawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "marɔku Diram",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "morisi Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mɔritani Uguwiya",
+ "symbol": "MRO"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibi Dolar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nizeriya Nɛra",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "ositirali Dolar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ruwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "sawotome Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "sawudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "XOF": {
+ "name": "sefa Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "sefa Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "sesɛli Rupi",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "siniwa Yuwan",
+ "symbol": "CN¥"
+ },
+ "SLL": {
+ "name": "siyeralewɔni Lewɔni",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "somali Siling",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "sudafriki Randi",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "sudani Dinar",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "suwisi Fraŋ",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "swazilandi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "tanzani Siling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "uganda Siling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "JPY": {
+ "name": "zapɔne Yɛn",
+ "symbol": "JP¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bn.json b/library/intl/resources/currency/bn.json
new file mode 100644
index 000000000..2ce66d769
--- /dev/null
+++ b/library/intl/resources/currency/bn.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "অস্ট্রেলিয়ান ডলার",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "আইসল্যান্ড ক্রৌন",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "আজারবাইজান মানাত",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "আফগান আফগানি",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "আরমেনিয়ান দ্রাম",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "আরুবা গিল্ডার",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "আর্জেন্টিনা পেসো",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "আলজেরীয় দিনার",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "আলবেনিয়ান লেক",
+ "symbol": "ALL"
+ },
+ "UAH": {
+ "name": "ইউক্রেইন হৃভনিয়া",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "ইউরো",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "ইথিওপিয়ান বির",
+ "symbol": "ETB"
+ },
+ "IDR": {
+ "name": "ইন্দোনেশিয়ান রুপিয়াহ",
+ "symbol": "IDR"
+ },
+ "YER": {
+ "name": "ইয়েমেনি রিয়াল",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "ইরাকি দিনার",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ইরানিয়ান রিয়াল",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ইস্রাইলি নতুন শেকেল",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "উগান্ডান শিলিং",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "উজবেকিস্তানি সোম",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "উত্তর কোরিয়ার ওন",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "উরুগুয়ে পেসো",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "এরিট্রিয়েন নাকফা",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "এল স্যালভোডোর কোলোন",
+ "symbol": "SVC"
+ },
+ "AOA": {
+ "name": "এ্যাঙ্গোলান কওয়ানজা",
+ "symbol": "AOA"
+ },
+ "OMR": {
+ "name": "ওমানি রিয়াল",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "কঙ্গোলিস ফ্র্যাঙ্ক",
+ "symbol": "CDF"
+ },
+ "KHR": {
+ "name": "কম্বোডিয়ান রিয়েল",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "কম্বোরো ফ্রাঙ্ক",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "কলোম্বিয়ান পেসো",
+ "symbol": "COP"
+ },
+ "KZT": {
+ "name": "কাজাক্সটান টেঙ্গে",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "কাতার রিয়্যাল",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "কানাডিয়ান ডলার",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "কিউবান পেসো",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "কিউবান রূপান্তরযোগ্য পেসো",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "কিরগিজস্তান সোম",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "কুয়েতি দিনার",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "কেনিয়ান শিলিং",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "কেপ ভার্দে এসকুডো",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "কেম্যান দ্বীপপুঞ্জের ডলার",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "কোস্টা রিকা কোলোন",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "ক্রোয়েশিয়ান কুনা",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "গাইয়েনা ডলার",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "গাম্বিয়া ডালাসি",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "গিনি ফ্রাঙ্ক",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "গুয়াতেমালা কুয়েৎজাল",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ঘানা সেডি",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "চিলি পেসো",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "চীনা য়ুয়ান",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "চেকোস্লোভাক কোরুনা",
+ "symbol": "CZK"
+ },
+ "GEL": {
+ "name": "জর্জিয়ান লারি",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "জর্ডানিয়ান দিনার",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "জাপানি ইয়েন",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "জাম্বিয়ান কওয়াচা",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "জিবুতি ফ্রাঙ্ক",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "জিব্রাল্টার পাউন্ড",
+ "symbol": "GIP"
+ },
+ "ZWL": {
+ "name": "জিম্বাবুয়ে ডলার (২০০৯)",
+ "symbol": "ZWL"
+ },
+ "JMD": {
+ "name": "জ্যামাইকান ডলার",
+ "symbol": "JMD"
+ },
+ "TOP": {
+ "name": "টোঙ্গা পা’আঙ্গা",
+ "symbol": "TOP"
+ },
+ "DOP": {
+ "name": "ডোমিনিকান পেসো",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ড্যানিশ ক্রৌন",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "তাজিকিস্তান সোমোনি",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "তাঞ্জনিয়া শিলিং",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "তিউনেশিয়ান দিনার",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "তুর্কমেনিস্তান নতুন মানত",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "তুর্কি লিরা",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ত্রিনিদাদ এবং টোবাগো ডলার",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "থাই বাত",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "দক্ষিণ আফ্রিকান রেন্ড",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "দক্ষিণ কোরিয়ান ওন",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "দক্ষিণ সুদানি পাউন্ড",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "নতুন তাইওয়ান ডলার",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "নরওয়ে ক্রৌন",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "নাইজেরিয়ান নায়রা",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "নামিবিয়া ডলার",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "নিউজিল্যান্ড ডলার",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "নিকারাগুয়ান কর্ডোবা",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "নেদারল্যান্ড এ্যান্টিলিয়ান গুল্ডের",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "নেপালি রুপি",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "পাকিস্তানি রুপি",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "পানামা বেলবোয়া",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "পাপুয়া নিউ গিনিয়ান কিনা",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "পূর্ব ক্যারাবিয়ান ডলার",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "পেরুভিয়ান সোল নুয়েভো",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "পোলিশ জ্লোটি",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "প্যারগুয়ান",
+ "symbol": "PYG"
+ },
+ "FKP": {
+ "name": "ফকল্যান্ড দ্বীপপুঞ্জ পাউন্ড",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ফিজি ডলার",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ফিলিপাইন পেসো",
+ "symbol": "PHP"
+ },
+ "BWP": {
+ "name": "বতসোয়ানা পুলা",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "বলিভিয়ানো",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "বসনিয়া এবং হার্জেগোভিনা মার্ক",
+ "symbol": "BAM"
+ },
+ "BDT": {
+ "name": "বাংলাদেশী টাকা",
+ "symbol": "৳"
+ },
+ "BMD": {
+ "name": "বারমিউডান ডলার",
+ "symbol": "BMD"
+ },
+ "BBD": {
+ "name": "বার্বেডোজ ডলার",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "বাহরাইনি দিনার",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "বাহামিয়ান ডলার",
+ "symbol": "BSD"
+ },
+ "BIF": {
+ "name": "বুরুন্ডি ফ্রাঙ্ক",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "বুলগেরীয় নিউ লেভ",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "বেলারুশিয়ান রুবেল",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "বেলিজ ডলার",
+ "symbol": "BZD"
+ },
+ "BRL": {
+ "name": "ব্রাজিলিয়ান রিয়েল",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ব্রিটিশ পাউন্ড স্টার্লিং",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ব্রুনেই ডলার",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "ভানুয়াতু ভাতু",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "ভারতীয় রুপি",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "ভিয়েতনামি ডঙ্গ",
+ "symbol": "₫"
+ },
+ "BTN": {
+ "name": "ভুটানি এনগুল্ট্রুম",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "ভেনিজুয়েলীয় বলিভার",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "মঙ্গোলিয়ান তুগরিক",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "মাদাগাস্কার আরিয়ারি",
+ "symbol": "MGA"
+ },
+ "MMK": {
+ "name": "মায়ানমার কিয়াত",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "মার্কিন ডলার",
+ "symbol": "US$"
+ },
+ "MVR": {
+ "name": "মালদিভিয়ান রুফিয়া",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "মালয়েশিয়ান রিঙ্গিৎ",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "মালাউইয়ান কওয়াচ",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "মিশরীয় পাউন্ড",
+ "symbol": "EGP"
+ },
+ "MZN": {
+ "name": "মোজাম্বিক মেটিকেল",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "মোরোক্কান দিরহাম",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "মোল্ডোভান লেয়ু",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "মৌরিতানিয়ান ওউগুইয়া",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "মৌরিতানিয়ান রুপি",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "ম্যাক্যাও পাটাকা",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "ম্যাক্সিকান পেসো",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "ম্যাসেডোনিয়ান দিনার",
+ "symbol": "MKD"
+ },
+ "RUB": {
+ "name": "রাশিয়ান রুবেল",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "রুমানিয়া লেয়ু",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "রুয়ান্ডান ফ্রাঙ্ক",
+ "symbol": "RWF"
+ },
+ "LRD": {
+ "name": "লাইবেরিয়ান ডলার",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "লিথুইনিয়ান লিটা",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "লিবিয়ান ডলার",
+ "symbol": "LYD"
+ },
+ "LAK": {
+ "name": "লেউশান কিপ",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "লেবানিজ পাউন্ড",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "লেসুটু লোটি",
+ "symbol": "LSL"
+ },
+ "LKR": {
+ "name": "শ্রীলঙ্কান রুপি",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "সংযুক্ত আরব আমিরাত দিরহাম",
+ "symbol": "AED"
+ },
+ "SBD": {
+ "name": "সলোমন দ্বীপপুঞ্জ ডলার",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "সাও টোমে এবং প্রিন্সিপে ডোবরা",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "সামোয়ান টালা",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "সারবিয়ান দিনার",
+ "symbol": "RSD"
+ },
+ "XAF": {
+ "name": "সিএফএ ফ্র্যাঙ্ক বিইএসি",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "সিএফএ ফ্র্যাঙ্ক বিসিইএও",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "সিএফপি ফ্র্যাঙ্ক",
+ "symbol": "CFPF"
+ },
+ "SGD": {
+ "name": "সিঙ্গাপুর ডলার",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "সিয়েরালিয়ন লিয়ন",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "সিরিয়ান পাউন্ড",
+ "symbol": "SYP"
+ },
+ "SEK": {
+ "name": "সুইডিশ ক্রোনা",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "সুইস ফ্রাঙ্ক",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "সুদানি পাউন্ড",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "সুরিনাম ডলার",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "সেন্ট হেলেনা পাউন্ড",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "সেয়চেল্লোইস রুপি",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "সোমালি শিলিং",
+ "symbol": "SOS"
+ },
+ "SZL": {
+ "name": "সোয়াজিল্যান্ড লিলাঙ্গেনি",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "সৌদি রিয়্যাল",
+ "symbol": "SAR"
+ },
+ "HKD": {
+ "name": "হংকং ডলার",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "হন্ডুরাস লেম্পিরা",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "হাইতি গৌর্দে",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "হাঙ্গেরিয়ান ফোরিন্ট",
+ "symbol": "HUF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bo.json b/library/intl/resources/currency/bo.json
new file mode 100644
index 000000000..46970dd56
--- /dev/null
+++ b/library/intl/resources/currency/bo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CNY": {
+ "name": "ཡུ་ཨན་",
+ "symbol": "¥"
+ },
+ "INR": {
+ "name": "རྒྱ་གར་སྒོར་མོ་",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "ཨ་རིའི་སྒོར་མོ།",
+ "symbol": "US$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/br.json b/library/intl/resources/currency/br.json
new file mode 100644
index 000000000..556fd5444
--- /dev/null
+++ b/library/intl/resources/currency/br.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary Madagaskar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht Thailand",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr Etiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón Salvador",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar Makedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar Bahrein",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar Iraq",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar Jordania",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar Koweit",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar Libia",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar Tunizia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham EAU",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham Maroko",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra São Tomé ha Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar Aostralia",
+ "symbol": "$A"
+ },
+ "BSD": {
+ "name": "dollar Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dollar Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dollar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dollar Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dollar Fidji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dollar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dollar Hong Kong",
+ "symbol": "$ HK"
+ },
+ "KYD": {
+ "name": "dollar Inizi Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar Inizi Salomon",
+ "symbol": "SBD"
+ },
+ "JMD": {
+ "name": "dollar Jamaika",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "dollar Kanada",
+ "symbol": "$CA"
+ },
+ "XCD": {
+ "name": "dollar Karib ar reter",
+ "symbol": "EC$"
+ },
+ "LRD": {
+ "name": "dollar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "dollar nevez Taiwan",
+ "symbol": "NT$"
+ },
+ "SGD": {
+ "name": "dollar Singapour",
+ "symbol": "SGD"
+ },
+ "USD": {
+ "name": "dollar SU",
+ "symbol": "$ SU"
+ },
+ "SRD": {
+ "name": "dollar Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dollar Trinidad ha Tobago",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "dollar Zeland-Nevez",
+ "symbol": "$ ZN"
+ },
+ "ZWL": {
+ "name": "dollar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong Viêt Nam",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo Kab Glas",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin Antilhez nederlandat",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint Hungaria",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia Ukraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina Papoua Ginea-Nevez",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna Kroatia",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "kurunenn Danmark",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "kurunenn Island",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "kurunenn Norvegia",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "kurunenn Sveden",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "kurunenn Tchek",
+ "symbol": "CZK"
+ },
+ "MWK": {
+ "name": "kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari Jorjia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu Roumania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas Lituania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti Lesotho",
+ "symbol": "LSL"
+ },
+ "BIF": {
+ "name": "lur Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "lur CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "lur CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "lur CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "lur Djibouti",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "lur Egipt",
+ "symbol": "EGP"
+ },
+ "GNF": {
+ "name": "lur Ginea",
+ "symbol": "GNF"
+ },
+ "FKP": {
+ "name": "lur Inizi Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "lur Jibraltar",
+ "symbol": "GIP"
+ },
+ "KMF": {
+ "name": "lur Komorez",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "lur Kongo",
+ "symbol": "CDF"
+ },
+ "LBP": {
+ "name": "lur Liban",
+ "symbol": "LBP"
+ },
+ "RWF": {
+ "name": "lur Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "lur Saint-Helena",
+ "symbol": "SHP"
+ },
+ "SYP": {
+ "name": "lur Siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "lur Soudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "lur sterling Breizh-Veur",
+ "symbol": "£ RU"
+ },
+ "CHF": {
+ "name": "lur Suis",
+ "symbol": "CHF"
+ },
+ "SSP": {
+ "name": "lur Susoudan",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "lur Turkia",
+ "symbol": "TRY"
+ },
+ "AZN": {
+ "name": "manat Azerbaidjan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "mark kemmadus Bosnia ha Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical Mozambik",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum Bhoutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "nuevo sol Perou",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya Maouritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso Arcʼhantina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso Chile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "peso Dominikan",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso Filipinez",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "peso kemmadus Kuba",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "peso Kolombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "peso Mecʼhiko",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "peso Uruguay",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand Suafrika",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel Kambodja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal Arabia Saoudat",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "roubl Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "roubl Rusia",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "roupi India",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "roupi Indonezia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupi Moris",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupi Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupi Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "roupi Sechelez",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "roupi Sri Lanka",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa Maldivez",
+ "symbol": "MVR"
+ },
+ "ILS": {
+ "name": "shekel nevez Israel",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "shilling Kenya",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling Ouganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som Ouzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni Tadjikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won Korea an Norzh",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won Korea ar Su",
+ "symbol": "₩"
+ },
+ "JPY": {
+ "name": "yen Japan",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "yuan Sina",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty Polonia",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/brx.json b/library/intl/resources/currency/brx.json
new file mode 100644
index 000000000..f391c009c
--- /dev/null
+++ b/library/intl/resources/currency/brx.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "(सीएफ़ए) फ्रानसीसी फेदरेशनी फ्राँ",
+ "symbol": "FCFA"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "अफ़ग़ानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमरिकी डॉलर",
+ "symbol": "US$"
+ },
+ "AWG": {
+ "name": "अरुबा गील्डर",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अर्जेण्टीनी पेसो",
+ "symbol": "ARS"
+ },
+ "ISK": {
+ "name": "आईसलैण्ड क्रोना",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "आज़रबैजानी मनात",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "आरमिनियाई दिर्हाम",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "आल्जीरी दीनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "आल्बेनिया का लेक",
+ "symbol": "ALL"
+ },
+ "IDR": {
+ "name": "इण्डोनेशियाई रुपिया",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "इस्राइली शेकेल",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "ईथिओपिया का बीर्र",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ईराक़ी दीनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ईरानी रीयाल",
+ "symbol": "IRR"
+ },
+ "XCD": {
+ "name": "ईस्ट करिबियन डॉलर",
+ "symbol": "EC$"
+ },
+ "UZS": {
+ "name": "ऊज़बेक सुम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ऊत्तर कोरियाई वोन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ऊरुगुए का ऊरुगुआयो पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "एंगोला क्वानज़ा",
+ "symbol": "AOA"
+ },
+ "SVC": {
+ "name": "एल सालवादर कोलोन",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "ऐरित्रीया का नाफ़का",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ऑस्ट्रेलियन डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "क़तारी रीयाल",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "कनेडियन डॉलर",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "कंबोडिया का रिएल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "क़ाज़ाख़स्तान तेंगे",
+ "symbol": "KZT"
+ },
+ "CVE": {
+ "name": "काप वेर्दे का एस्कुदो",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "किनियाई शीलींग",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "क़ीर्ग़ीज़स्तानी सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "क़ुवैती दीनार",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "कैमान द्वीप का डॉलर",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "कॉंगोलीज़ फ्राँ",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "कॉस्टा रीका का कोलोन",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "कोमोरो का फ्राँ",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलम्बियाई पेसो",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "क्युबा का पेसो",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "क्रोएशियाई कुना",
+ "symbol": "HRK"
+ },
+ "GMD": {
+ "name": "गाँबिया का दलासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गीनी फ्राँ",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "गुयाना डॉलर",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "ग्वातेमाला क़्वेत्ज़ाल",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घाना चेदी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पेसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी युआन रेनमीनबी",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "चेक गनतंत्र का कोरुना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाईका का डॉलर",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "ज़ाम्बियाई क्वाचा",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जीबुती फ्राँ",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जीब्रालटर का पौण्ड",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉर्जिया का लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जोर्डनी दीनार",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टॉंगा पाईंगा",
+ "symbol": "TOP"
+ },
+ "DKK": {
+ "name": "डेनमार्क का क्रोन",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डॉमीनीकन पेसो",
+ "symbol": "DOP"
+ },
+ "TWD": {
+ "name": "ताईवानी नया डॉलर",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "ताजीक़ीस्तानी सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "तान्ज़ेनियाई शीलींग",
+ "symbol": "TZS"
+ },
+ "TRY": {
+ "name": "तुर्की नया लीरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "त्युनीसी दीनर",
+ "symbol": "TND"
+ },
+ "TTD": {
+ "name": "त्रीनीदाद एवं टोबागो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बाह्ट",
+ "symbol": "THB"
+ },
+ "ZAR": {
+ "name": "दक्षिण अफ़्रीकी रॅण्ड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दक्षिण कोरियाई वोन",
+ "symbol": "₩"
+ },
+ "NAD": {
+ "name": "नमीबिया डॉलर",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "नाईजीरीयाई नाईरा",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "नीकारागुआई सुवर्ण कोर्दोबा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलैण्ड एन्टीलीज़ का गील्डर",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रुपी",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉर्वे का क्रोन",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "न्यूज़ीलैंड डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामा का बालबोआ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "पाकिस्तानी रुपया",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापुआ न्यु गीनी का कीना",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "पारागुऐई गुआरानी",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "पेरुवाई नया सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश ज़्लॉटी",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फाल्कलैण्ड द्वीप पौण्ड",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फ़िजी का डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फ़िलिपीन का पेसो",
+ "symbol": "PHP"
+ },
+ "XPF": {
+ "name": "फ्रानसीसी फेदेरेशनी फ्राँ",
+ "symbol": "CFPF"
+ },
+ "XOF": {
+ "name": "फ्रानसीसी फेदेरेशनी बीसीएआओ फ्राँ",
+ "symbol": "CFA"
+ },
+ "BMD": {
+ "name": "बरमुडी डॉलर",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "बल्गेरियाई लेव",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "बहामा डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांगलादेश टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बारबादोस डॉलर",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "बाहरैनी दीनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बुरुंदी फ्राँ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "बेलारुसी रूबल",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीज़ डॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोट्सवाना का पुलाट",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिवियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसनिया हेर्ज़ेगोविना कनवर्टीबल मार्क",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ब्रज़ीली रेयाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ब्रितन का पौण्ड स्टर्लिग",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ब्रुनई डॉलर",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "भुतान का नगुलत्रुम",
+ "symbol": "BTN"
+ },
+ "MYR": {
+ "name": "मलेशियन रिंगित",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "मसेदोनियाई दीनार",
+ "symbol": "MKD"
+ },
+ "MOP": {
+ "name": "माकाव पाताचा",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "मादागास्करी आरिआरी",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "मालदीव द्वीप का रूफिया",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "मालवी क्वाचा",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "मिस्री पाउण्ड",
+ "symbol": "EGP"
+ },
+ "MXN": {
+ "name": "मेक्सिकन पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोज़ांबीक मेतीकाल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरक्किय दिर्हाम",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "मोरिशियस का रूपी",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "मोल्डोवियाई ल",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "मौंगोलीयाई तुग्रीक",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "मौरिटानी ऊगुया",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "म्यानमारी क्याट",
+ "symbol": "MMK"
+ },
+ "YER": {
+ "name": "यमनी रीयाल",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "युक्रेनी ह्रीवनिया",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "युगाँडाई शीलींग",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "युरो",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "रां",
+ "symbol": "₹"
+ },
+ "RWF": {
+ "name": "रुआँदा फ्राँ",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाई ल",
+ "symbol": "RON"
+ },
+ "LSL": {
+ "name": "लसोथो का लोटी",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "लाओस का कीप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथुआनियाई लिता",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लिबियाई दीनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लीबानी पौंड",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "लीबेरियाई डॉलर",
+ "symbol": "LRD"
+ },
+ "VUV": {
+ "name": "वनुआटु वटु",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "वीयतनामी डॉंग",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "वेनेज़ुएलाई बोलिवार",
+ "symbol": "VEF"
+ },
+ "WST": {
+ "name": "वेस्टर्न समोआ ताला",
+ "symbol": "WST"
+ },
+ "LKR": {
+ "name": "श्री लंका रूपी",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयुक्त अरब अमीरात का दिर्हाम",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सर्बियाई दिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियाल",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साँव तोमे एवं प्रीन्सीपे का डोब्रा",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "सिंगापुर डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सीयेरा लीयोनेई लीयोने",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियाई पौंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सुदानी पौंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सुरीनाम डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलीना पौंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेल रूपी",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शीलींग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन द्वीप का डॉलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "स्वाज़ीलैण्ड लीलांगेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "स्विस फ़्रैंक",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "स्वीडन क्रोना",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियाई फ़ोरिण्ट",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हाईती गुर्द",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "हाँग काँग डॉलर",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "हॉंडुरास लेंपीरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bs-Cyrl.json b/library/intl/resources/currency/bs-Cyrl.json
new file mode 100644
index 000000000..87889b7e6
--- /dev/null
+++ b/library/intl/resources/currency/bs-Cyrl.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA франак BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "AFN": {
+ "name": "Авганистански авган",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Азербејџански манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албански лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирски динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Амерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "анголска кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентински пезо",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Арубански флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Аустралијски долар",
+ "symbol": "A$"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Бахамски долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Бахреински динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белизе долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Белоруска рубља",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "Бермудски долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливијски Боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Боцванска пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилски Реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Британска фунта стерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Брунејски долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Бугарски лев",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Бурундски франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутански нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануатски вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Венецуелански боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вијетнамски донг",
+ "symbol": "₫"
+ },
+ "GMD": {
+ "name": "Гамбијски даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гански цеди",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Гватемалски квецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвинејски франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралташка фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Грузијски лари",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "Гујански долар",
+ "symbol": "GYD"
+ },
+ "DKK": {
+ "name": "Данска круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Доминикански пезо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египатска фунта",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Еритреанска накфа",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "етиопијски бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "Замбијска квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Зеленортски ескудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Зимбабвеански долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "Израелски нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Индијски Рупи",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Индонезијска рупиа",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Ирански риал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "Исландска круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Источно-карибски долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Јамајски долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Јапански јен",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Јеменски риал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Јерменски драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Јордански динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Јужнокорејски Вон",
+ "symbol": "₩"
+ },
+ "KZT": {
+ "name": "Казахстански тенџ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "Кајманска острва долар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбоџијски риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канадски долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катаршки ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кенијски шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Кинески јуан ренминби",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Киргистански сом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Колумбијски пезо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморски франак",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "Конвертибилна марка",
+ "symbol": "КМ"
+ },
+ "CDF": {
+ "name": "Конголски франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костарикански колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "кубански конвертибилни песо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Кубански пезо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувајтски динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Лебанска фунта",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Лесото лоти",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Либеријски долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Либијски динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литвански литас",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Мађарска форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Македонски денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малавијска квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагасијски ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "Малдивијска руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Малезијски ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Марокански дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Мауританијска угвија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Маурицијски рупи",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Мексички пезо",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Мјанмашки кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбијски метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдовски љу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монголски тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "намбијски долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непалски рупи",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигеријска наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Никарагванска златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Нови тајвански долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Новозеландски долар",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "Норвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Омански ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистански рупи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамска балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа ново-гвинејшка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвајски гуарни",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перуански нуево сол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Пољски злот",
+ "symbol": "зл"
+ },
+ "RWF": {
+ "name": "Руандански франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Румунски леу",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Руска рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Салвадорски колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанска тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Саудијски ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленска фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Севернокорејски вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сејшелска рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапурски долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сиријска фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломонско-острвски долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "СОмалијски шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Српски динар",
+ "symbol": "дин."
+ },
+ "SDG": {
+ "name": "Суданска фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СУринамски долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Таи бахт",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "Таљихистански сомони",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Танзанијски шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Тунизијски долар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Туркменистански манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Турска лира",
+ "symbol": "Тл"
+ },
+ "UGX": {
+ "name": "Угандски шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекистански сом",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "Уједињени арапски емирати дирхам",
+ "symbol": "AED"
+ },
+ "UAH": {
+ "name": "Украјинска хривња",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Уругвајски пезо",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Филипински пезо",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Фиџи долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Фокландска острва фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "Хаићански гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Холандски антили гилдер",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "Хрватска куна",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "Кч"
+ },
+ "CLP": {
+ "name": "Чилеански пезо",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "Џибутански франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Швајцарски франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Шведска круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шриланкански рупи",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bs.json b/library/intl/resources/currency/bs.json
new file mode 100644
index 000000000..e86f73e94
--- /dev/null
+++ b/library/intl/resources/currency/bs.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistanski afgan",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Američki dolar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizeanski dolar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "Bjeloruska rublja",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosansko-Hercegovačka konvertibilna marka",
+ "symbol": "KM"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "Dirham Ujedinjenih Arapskih Emirata",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra Sao Toma i Principa",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidži dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "ANG": {
+ "name": "Gulden Holandskih Antila",
+ "symbol": "ANG"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkonški dolar",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "kn"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irački dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Istočnokaripski dolar",
+ "symbol": "XCD"
+ },
+ "ILS": {
+ "name": "Izraelski novi šekel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "Jamajski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Južnoafrički rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski von",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski šiling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoski kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotski loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaonska pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagaski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavska kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ugvija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksički pezos",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mijanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lev",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lev",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sijeraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "Sjevernokorejski von",
+ "symbol": "KPW"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalski šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "din."
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svazilendski lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "Svetohelenska funta",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "Šrilankanska rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "Švedska kruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Švicarski franak",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski baht",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Tanzanski šiling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tonganska panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadtobaški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "Zambijska kvača",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabvejski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ca.json b/library/intl/resources/currency/ca.json
new file mode 100644
index 000000000..ec73887e6
--- /dev/null
+++ b/library/intl/resources/currency/ca.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afganès",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaix",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandès",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panameny",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíop",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar veneçolà",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "bolivià",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanès",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costa-riqueny",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorenc",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaragüenca",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "corona txeca",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambià",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macedoni",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algerià",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar de Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquià",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordà",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaitià",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libi",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbi",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisià",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de la UEA",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de São Tomé i Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dòlar australià",
+ "symbol": "AU$"
+ },
+ "CAD": {
+ "name": "dòlar canadenc",
+ "symbol": "CAD"
+ },
+ "BBD": {
+ "name": "dòlar de Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dòlar de Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dòlar de Brunei",
+ "symbol": "BND"
+ },
+ "GYD": {
+ "name": "dòlar de Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dòlar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "BSD": {
+ "name": "dòlar de les Bahames",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "dòlar de les Bermudes",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dòlar de les illes Caiman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dòlar de les illes Salomó",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dòlar de Singapur",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dòlar de Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dòlar de Trinitat i Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dòlar del Carib Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dòlar dels Estats Units",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dòlar fijià",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "dòlar jamaicà",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dòlar liberià",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dòlar namibià",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dòlar neozelandès",
+ "symbol": "NZ$"
+ },
+ "ZWL": {
+ "name": "dòlar zimbabuès (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram armeni",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escut de Cap Verd",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florí d’Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florí de les Antilles Neerlandeses",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "fòrint hongarès",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "CDF": {
+ "name": "franc congolès",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "franc de Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "franc de Djibouti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "franc de les Comores",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "franc de Ruanda",
+ "symbol": "RWF"
+ },
+ "GNF": {
+ "name": "franc guineà",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "franc suís",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haitià",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguaià",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hrívnia ucraïnesa",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "ien japonès",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "iuan xinès",
+ "symbol": "¥"
+ },
+ "PGK": {
+ "name": "kina de Papua Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosià",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawià",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambià",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolès",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgià",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanès",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurenya",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone de Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldau",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu romanès",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev búlgar",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas lituà",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "lliura de Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "lliura de les illes Malvines",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "lliura de Santa Helena",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "lliura del Sudan del Sud",
+ "symbol": "SSP"
+ },
+ "EGP": {
+ "name": "lliura egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "lliura esterlina britànica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "lliura libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "lliura síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "lliura sudanesa",
+ "symbol": "SDG"
+ },
+ "LSL": {
+ "name": "loti de Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerbaidjanès",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcman",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marc convertible de Bòsnia i Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical moçambiquès",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigerià",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreu",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum de Bhutan",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nou dòlar de Taiwan",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "nou sol peruà",
+ "symbol": "PEN"
+ },
+ "ILS": {
+ "name": "nou xéquel israelià",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "ouguiya maurità",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa‘anga tongà",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentí",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "peso colombià",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "peso convertible cubà",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "peso cubà",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "peso dominicà",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipí",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicà",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguaià",
+ "symbol": "UYU"
+ },
+ "CLP": {
+ "name": "peso xilè",
+ "symbol": "CLP"
+ },
+ "BWP": {
+ "name": "pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalenc",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africà",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasiler",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial de Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "rial iranià",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanita",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "riel cambodjà",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit de Malàisia",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "ruble bielorús",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "ruble rus",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rupia de les Maldives",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupia de les Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia índia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "rupia indonèsia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistanesa",
+ "symbol": "PKR"
+ },
+ "KGS": {
+ "name": "som kirguís",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbek",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka de Bangla Desh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoà",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tögrög mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coreà",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coreà",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "xíling kenyà",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "xíling somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "xíling tanzà",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "xíling ugandès",
+ "symbol": "UGX"
+ },
+ "PLN": {
+ "name": "zloty polonès",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cgg.json b/library/intl/resources/currency/cgg.json
new file mode 100644
index 000000000..351a9d9bf
--- /dev/null
+++ b/library/intl/resources/currency/cgg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari ya Maragariita",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr ya Ethiopiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Arigyeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham za Buharabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirram ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Purinsipo",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doora ya America",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doora ya Austureeriya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doora ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doora ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doora ya Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "SOS": {
+ "name": "Eshiringi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Eshiringi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Eshiringi ya Uganda",
+ "symbol": "USh"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faranga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faranga ya Gyibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwaca ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angora",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Naigyeriya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritireya",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougwiya ya Mouriteeniya",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Paundi ya Bungyereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paundi ya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi ya Senti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Sausi Afirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riya ya Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiiha ya Mauritiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiiha ya Sherisheri",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya India",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shiringi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japaani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/chr.json b/library/intl/resources/currency/chr.json
new file mode 100644
index 000000000..0360e743d
--- /dev/null
+++ b/library/intl/resources/currency/chr.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "INR": {
+ "name": "ᎢᏅᏗᎾ ᎠᏕᎳ",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "ᎤᏃᏍᏗ",
+ "symbol": "$"
+ },
+ "CAD": {
+ "name": "ᎧᎾᏓ ᎠᏕᎳ",
+ "symbol": "CA$"
+ },
+ "GBP": {
+ "name": "ᎩᎵᏏᏲ ᎠᏕᎳ",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "ᏆᏏᎵᎢ ᎠᏕᎳ",
+ "symbol": "R$"
+ },
+ "MXN": {
+ "name": "ᏍᏆᏂ ᎠᏕᎳ",
+ "symbol": "MX$"
+ },
+ "CNY": {
+ "name": "ᏓᎶᏂᎨ ᎠᏕᎳ",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ᏣᏩᏂᏏ ᎠᏕᎳ",
+ "symbol": "JP¥"
+ },
+ "RUB": {
+ "name": "ᏲᏂᎢ ᎠᏕᎳ",
+ "symbol": "RUB"
+ },
+ "EUR": {
+ "name": "ᏳᎳᏛ",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cs.json b/library/intl/resources/currency/cs.json
new file mode 100644
index 000000000..274a38487
--- /dev/null
+++ b/library/intl/resources/currency/cs.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghánský afghán",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albánský lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžírský dinár",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "americký dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angolská kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinské peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "arménský dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubský zlatý",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australský dolar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "ázerbájdžánský manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamský dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrajnský dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladéšská taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoský dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizský dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běloruský rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudský dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhútánský ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "bolivijský boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosenská konvertibilní marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanská pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilský real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britská libra",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "brunejský dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulharský lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundský frank",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA\/BCEAO frank",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA\/BEAC frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "česká koruna",
+ "symbol": "Kč"
+ },
+ "CNY": {
+ "name": "čínský jüan",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "dánská koruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikánské peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutský frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptská libra",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejská nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopský birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandská libra",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijský dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipínské peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijský dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghanský cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarská libra",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzínské lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalský quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guinejský frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanský dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitský gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraská lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongský dolar",
+ "symbol": "HK$"
+ },
+ "CLP": {
+ "name": "chilské peso",
+ "symbol": "CLP"
+ },
+ "HRK": {
+ "name": "chorvatská kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indická rupie",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonéská rupie",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irácký dinár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "íránský rijál",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandská koruna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelský nový šekel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "jamajský dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonský jen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "jemenský rijál",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "jihoafrický rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "jihokorejský won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "jihosúdánská libra",
+ "symbol": "SSP"
+ },
+ "JOD": {
+ "name": "jordánský dinár",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmanský dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžský riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadský dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdské escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarský rijál",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazašské tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keňský šilink",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "kolumbijské peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorský frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "konžský frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostarický colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubánské konvertibilní peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubánské peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtský dinár",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "kyrgyzský som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "laoský kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothský loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonská libra",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijský dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyjský dinár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litevský litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macajská pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarský ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "maďarský forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedonský denár",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajsijský ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawijská kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maledivská rupie",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marocký dinár",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauricijská rupie",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritánská ouguiya",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexické peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldavský leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolský tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambický metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarský kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibijský dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepálská rupie",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijská naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragujská córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemskoantilský gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norská koruna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "novozélandský dolar",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "ománský rijál",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pákistánská rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamská balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuánská nová kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguajské guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruánský nový sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polský zlotý",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "rumunské leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruský rubl",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandský frank",
+ "symbol": "RWF"
+ },
+ "AED": {
+ "name": "SAE dirham",
+ "symbol": "AED"
+ },
+ "SVC": {
+ "name": "salvadorský colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samojská tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saúdský rijál",
+ "symbol": "SAR"
+ },
+ "KPW": {
+ "name": "severokorejský won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychelská rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierro-leonský leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurský dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somálský šilink",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbský dinár",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "srílanská rupie",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "súdánská libra",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamský dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "svatohelenská libra",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "svatotomášská dobra",
+ "symbol": "STD"
+ },
+ "SZL": {
+ "name": "svazijský lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syrská libra",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "šalamounský dolar",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "švédská koruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "švýcarský frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tádžické somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzanský šilink",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thajský baht",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "tchajwanský dolar",
+ "symbol": "NT$"
+ },
+ "TOP": {
+ "name": "tonžská paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadský dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniský dinár",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turecká lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkmenský manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandský šilink",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinská hřivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayské peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbecký sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatský vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelský bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamský dong",
+ "symbol": "VND"
+ },
+ "XCD": {
+ "name": "východokaribský dolar",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijská kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwský dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cy.json b/library/intl/resources/currency/cy.json
new file mode 100644
index 000000000..33ad977af
--- /dev/null
+++ b/library/intl/resources/currency/cy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagascar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Gwlad Thai",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolifia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "Dinar Gwlad yr Iorddonen",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Dinar Irac",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Moroco",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Yr Emiradau Arabaidd Unedig",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé a Príncipe",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Dong Fietnam",
+ "symbol": "₫"
+ },
+ "AUD": {
+ "name": "Doler Awstralia",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Doler Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Doler Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Doler Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Doler Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Doler Canada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Doler Dwyrain y Caribî",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Doler Ffiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Doler Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Doler Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Doler Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Doler Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doler Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Doler Newydd Taiwan",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Doler Seland Newydd",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Doler Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Doler Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Doler Trinidad a Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Doler UDA",
+ "symbol": "US$"
+ },
+ "BSD": {
+ "name": "Doler y Bahamas",
+ "symbol": "BSD"
+ },
+ "KYD": {
+ "name": "Doler Ynysoedd Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Doler Ynysoedd Solomon",
+ "symbol": "SBD"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Esgwdo Cabo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Ewro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Fflorin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Fforint Hwngari",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Ffranc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ffranc CFA y BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ffranc CFA y BEAC",
+ "symbol": "FCFA"
+ },
+ "CDF": {
+ "name": "Ffranc Congo",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Ffranc Comoros",
+ "symbol": "KMF"
+ },
+ "XPF": {
+ "name": "Ffranc CPF",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Ffranc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Ffranc Guinée",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Ffranc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Ffranc y Swistir",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antilles yr Iseldiroedd",
+ "symbol": "ANG"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "UAH": {
+ "name": "Hryvnia Wcráin",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua Guinea Newydd",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Tsiec",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Gwlad yr Iâ",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Sweden",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmarc",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norwy",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldofa",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rwmania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bwlgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Gwlad Swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Twrci",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lithwania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marc Trosadwy Bosnia a Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Periw",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Macau",
+ "symbol": "MOP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "Peso Gweriniaeth Dominica",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso México",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso Pilipinas",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "Peso Trosadwy Cuba",
+ "symbol": "CUC"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "UYU"
+ },
+ "ARS": {
+ "name": "Peso yr Ariannin",
+ "symbol": "ARS"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "SSP": {
+ "name": "Punt De Sudan",
+ "symbol": "SSP"
+ },
+ "GIP": {
+ "name": "Punt Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Punt Libanus",
+ "symbol": "LBP"
+ },
+ "SHP": {
+ "name": "Punt Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Punt Sterling Prydain",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Punt Sudan",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "Punt Syria",
+ "symbol": "SYP"
+ },
+ "FKP": {
+ "name": "Punt Ynysoedd Falkland\/Malvinas",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "Punt Yr Aifft",
+ "symbol": "EGP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand De Affrica",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Cambodia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Saudi Arabia",
+ "symbol": "SAR"
+ },
+ "MVR": {
+ "name": "Rufiyaa’r Maldives",
+ "symbol": "MVR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "BYR": {
+ "name": "Rwbl Belarws",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rwbl Rwsia",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rwpî India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rwpî Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rwpî Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rwpî Pacistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rwpî Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rwpî Sri Lanka",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "Shegel Newydd Israel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "KES": {
+ "name": "Swllt Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Swllt Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Swllt Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Swllt Uganda",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won De Korea",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won Gogledd Corea",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Japan",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yuan Tsieina",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloty Gwlad Pwyl",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/da.json b/library/intl/resources/currency/da.json
new file mode 100644
index 000000000..dd9d1d3c1
--- /dev/null
+++ b/library/intl/resources/currency/da.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerisk dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikansk dollar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Angolansk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armensk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubansk florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbajdsjansk manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Australsk dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamansk dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadisk dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizisk dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudansk dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutansk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviansk boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien-Hercegovinsk konvertibel mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasiliansk real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisk pund",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarsk lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundisk franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadisk dollar",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Caymansk dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "CFA-franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Colombiansk peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolesisk franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costaricansk colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Cubansk konvertibel peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cubansk peso",
+ "symbol": "CUP"
+ },
+ "DKK": {
+ "name": "Dansk krone",
+ "symbol": "kr."
+ },
+ "AED": {
+ "name": "Dirham fra de Forenede Arabiske Emirater",
+ "symbol": "AED"
+ },
+ "DJF": {
+ "name": "Djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "STD": {
+ "name": "Dobra fra Sao Tome og Principe",
+ "symbol": "STD"
+ },
+ "TTD": {
+ "name": "Dollar fra Trinidad og Tobago",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "Dominikansk peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptisk pund",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreisk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fijiansk dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippinsk peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanesisk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarisk pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong dollar",
+ "symbol": "HK$"
+ },
+ "BYR": {
+ "name": "Hviderussisk rubel",
+ "symbol": "BYR"
+ },
+ "INR": {
+ "name": "Indisk rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesisk rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakisk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islansk krone",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaicansk dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japansk yen",
+ "symbol": "JP¥"
+ },
+ "JOD": {
+ "name": "Jordansk dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kapverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasakhisk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kinesisk yuan renminbi",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Kirgisisk som",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "Kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "Kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanesisk pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberisk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauisk litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaosk pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskisk ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedonsk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritansk ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritisk rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexicansk peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovisk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolsk tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambiquisk metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarsk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlandske Antiller-gylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalesisk rupee",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "New Zealandsk dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguansk cordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norsk krone",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "Ny israelsk shekel",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Ny taiwansk dollar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "Omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistansk rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaysk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruviansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polsk zloty",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "Pund fra Falklandsøerne",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Pund fra Saint Helena",
+ "symbol": "SHP"
+ },
+ "QAR": {
+ "name": "Qatarsk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Rumænsk leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russisk rubel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandisk franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomonsk dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadoransk colon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoansk tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Saudiarabisk riyal",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "Schweizisk franc",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellisk rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporeansk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Srilankansk rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudansk pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamsk dollar",
+ "symbol": "SRD"
+ },
+ "SEK": {
+ "name": "Svensk krone",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "Swazilandsk lilangeni",
+ "symbol": "SZL"
+ },
+ "ZAR": {
+ "name": "Sydafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sydkoreansk won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Sydsudanske pund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Syrisk pund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadsjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanisk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailandsk baht",
+ "symbol": "฿"
+ },
+ "CZK": {
+ "name": "Tjekkisk koruna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "Tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Tunesisk dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmensk manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Tyrkisk lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainsk grynia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarsk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Usbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuaisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelansk bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesisk dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemenitisk rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwisk dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "Østkaribisk dollar",
+ "symbol": "EC$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dav.json b/library/intl/resources/currency/dav.json
new file mode 100644
index 000000000..4401f9af7
--- /dev/null
+++ b/library/intl/resources/currency/dav.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/de-CH.json b/library/intl/resources/currency/de-CH.json
new file mode 100644
index 000000000..3518b82a8
--- /dev/null
+++ b/library/intl/resources/currency/de-CH.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanischer Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägyptisches Pfund",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "Albanischer Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerischer Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanischer Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinischer Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenischer Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopischer Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Australischer Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamas-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivanischer Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien und Herzegowina Konvertierbare Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanischer Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianischer Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisches Pfund Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarischer Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Franc (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenischer Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänische Krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanischer Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreischer Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgischer Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaischer Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekischer Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianische Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indische Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakischer Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranischer Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Isländische Krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelischer Neuer Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanischer Yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanischer Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanischer Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadischer Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasachischer Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisischer Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianischer Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoren-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatischer Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanischer Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanischer Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laotischer Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesisches Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianischer Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyscher Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauischer Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macao-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysischer Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Malediven-Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkanischer Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretanischer Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedonischer Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanischer Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolischer Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanischer Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarischer Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalesische Rupie",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "Neuer Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niederländische-Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigerianischer Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanischer Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegische Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanischer Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribischer Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanische Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaischer Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neuguineischer Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayischer Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanischer Neuer Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinischer Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polnischer Złoty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CN¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänischer Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russischer Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoanischer Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméischer Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "SEK": {
+ "name": "Schwedische Krone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schweizer Franken",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbischer Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonischer Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanischer Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesisches Pfund",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanischer Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Südsudanesisches Pfund",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Suriname-Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasiländischer Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisches Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailändischer Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaischer Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad und Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechische Krone",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesischer Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkische Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainische Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarischer Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayischer Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanischer Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesischer Dong",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "Weissrussischer Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/de.json b/library/intl/resources/currency/de.json
new file mode 100644
index 000000000..b8b1b90d9
--- /dev/null
+++ b/library/intl/resources/currency/de.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanischer Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägyptisches Pfund",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "Albanischer Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerischer Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanischer Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinischer Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenischer Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopischer Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Australischer Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamas-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivanischer Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien und Herzegowina Konvertierbare Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanischer Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianischer Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisches Pfund Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarischer Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Franc (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenischer Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänische Krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanischer Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreischer Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgischer Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaischer Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekischer Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianische Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indische Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakischer Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranischer Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Isländische Krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelischer Neuer Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanischer Yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanischer Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanischer Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadischer Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasachischer Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisischer Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianischer Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoren-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatischer Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanischer Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanischer Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laotischer Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesisches Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianischer Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyscher Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauischer Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macao-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysischer Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Malediven-Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkanischer Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretanischer Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedonischer Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanischer Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolischer Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanischer Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarischer Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalesische Rupie",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "Neuer Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niederländische-Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigerianischer Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanischer Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegische Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanischer Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribischer Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanische Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaischer Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neuguineischer Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayischer Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanischer Neuer Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinischer Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polnischer Złoty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CN¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänischer Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russischer Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoanischer Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméischer Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "SEK": {
+ "name": "Schwedische Krone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schweizer Franken",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbischer Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonischer Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanischer Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesisches Pfund",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanischer Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Südsudanesisches Pfund",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Suriname-Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasiländischer Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisches Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailändischer Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaischer Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad und Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechische Krone",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesischer Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkische Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainische Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarischer Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayischer Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanischer Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesischer Dong",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "Weißrussischer Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dje.json b/library/intl/resources/currency/dje.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/dje.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dsb.json b/library/intl/resources/currency/dsb.json
new file mode 100644
index 000000000..4fc931fa3
--- /dev/null
+++ b/library/intl/resources/currency/dsb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghaniski afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albański lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriski dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armeński dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "aruba-florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "awstralski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžaniski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamaski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladešska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běłoruski rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudaski dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutański ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliwiski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosniska konwertibelna marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswaniska pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britiski punt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarski lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiski frank",
+ "symbol": "BIF"
+ },
+ "CZK": {
+ "name": "česka krona",
+ "symbol": "CZK"
+ },
+ "XOF": {
+ "name": "CFA-frank (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilski peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "chinski yuan",
+ "symbol": "CN¥"
+ },
+ "HRK": {
+ "name": "chorwatska kuna",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "dańska krona",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikański peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dźibutiski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptojski punt",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "el-salvadorski colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiski birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski punt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidźiski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiski dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiski lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanaski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltiski punt",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalski quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineski frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyański dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiska gourda",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongski dolar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indiska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakski dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "irański rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelski nowy šekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaiski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japański yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "jemeński rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordaniski dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmaniski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžaski riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiski dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdski escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazachski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keniaski šiling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoski frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta-rikański colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubański konwertibelny peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubański peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "libanoński punt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litawski litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "macaoska pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "madźarski forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedoński denar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajziski ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawiski kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "malediwiska rupija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkoski dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretański ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauriciska rupija",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexiski peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldawiski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikski metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarski kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigeriska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraguaska cordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nižozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norwegska krona",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "nowoseelandski dolar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "nowy taiwański dolar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "omański rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistańska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaski balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua-neuguinejska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayski guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruski nowy sol",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "pódpołdnjowoafriski rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "pódpołdnjowokorejski won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "pódpołdnjowosudański punt",
+ "symbol": "SSP"
+ },
+ "KPW": {
+ "name": "pódpołnocnokorejski won",
+ "symbol": "KPW"
+ },
+ "XCD": {
+ "name": "pódzajtšnokaribiski dolar",
+ "symbol": "EC$"
+ },
+ "PLN": {
+ "name": "pólski złoty",
+ "symbol": "zł"
+ },
+ "RWF": {
+ "name": "ruandiski frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumuński leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruski rubl",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "salomoński dolar",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "sambiska kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samoaska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são-tomeska dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudi-arabiski rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiski dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra-leoneski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliski šiling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri-lankaska rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena punt",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "sudański punt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swasiski lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "šwedska krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "šwicarski frank",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriski punt",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadźikiski somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tansaniski šiling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thaiski baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tongaski paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad-tobagoski dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuneziski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmeniski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turkojska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandaski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainska griwna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekiski sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamski dong",
+ "symbol": "₫"
+ },
+ "AED": {
+ "name": "ZAE dirham",
+ "symbol": "AED"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dyo.json b/library/intl/resources/currency/dyo.json
new file mode 100644
index 000000000..4b6fd80af
--- /dev/null
+++ b/library/intl/resources/currency/dyo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "ariari yati Madagaskaar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "birr yati Ecoopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi yati Gambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinaar yati Alseri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinaar yati Bahrayn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinaar yati Libia",
+ "symbol": "LYD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "CAD": {
+ "name": "dolaar yati Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolaar yati Liberia",
+ "symbol": "LRD"
+ },
+ "AUD": {
+ "name": "dolaar yati Ostraalia",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskuudo yati Kap Ver",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "fraaŋ yati Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "fraaŋ yati Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "fraaŋ yati Komor",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "fraaŋ yati Kongo",
+ "symbol": "CDF"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "kwacha yati Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza yati Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "liiverey yati Esípt",
+ "symbol": "EGP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "nafka yati Eritree",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula yati Boswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupii yati End",
+ "symbol": "₹"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "XAF": {
+ "name": "seefa BEAC",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "seefa yati BCEAO",
+ "symbol": "CFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "KES": {
+ "name": "silliŋ yati Keniya",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugiiya yati Mooritanii",
+ "symbol": "MRO"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen yati Sapoŋ",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan yati Siin",
+ "symbol": "CN¥"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dz.json b/library/intl/resources/currency/dz.json
new file mode 100644
index 000000000..00a136c7c
--- /dev/null
+++ b/library/intl/resources/currency/dz.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "XAF"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "ཀ་ཊར་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "ཀ་ཛགས་ཏཱན་གྱི་དངུལ་ ཏེང་གེ",
+ "symbol": "KZT"
+ },
+ "CUP": {
+ "name": "ཀིའུ་བྷ་གི་དངུལ་ པེ་སོ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "ཀུ་ཝེཊ་གི་དངུལ་ ཌི་ན",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ཀེ་ན་ཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "ཀེན་ཡ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "KES"
+ },
+ "KHR": {
+ "name": "ཀེམ་བྷོ་ཌི་ཡ་གི་དངུལ་ རི་ཨཱལ",
+ "symbol": "KHR"
+ },
+ "COP": {
+ "name": "ཀོ་ལོམ་བྷི་ཡ་གི་དངུལ་ པེ་སོ",
+ "symbol": "COP"
+ },
+ "CLP": {
+ "name": "ཅི་ལི་གི་དངུལ་ པེ་སོ",
+ "symbol": "CLP"
+ },
+ "JPY": {
+ "name": "ཇཱ་པཱན་གྱི་དངུལ་ ཡེན",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "ཇཱ་མཻ་ཀ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "ཇོར་ཌན་གྱི་དངུལ་ ཌི་ན",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "ཊཱན་ཛཱ་ནི་ཡ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "TZS"
+ },
+ "TWD": {
+ "name": "ཊཱའི་ཝཱན་གི་དངུལ ཌོ་ལར",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "ཊཱར་ཀི་གི་དངུལ་ ལི་ར",
+ "symbol": "TRY"
+ },
+ "DKK": {
+ "name": "ཌེན་མཱཀ་གི་དངུལ་ ཀྲོན",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ཏ་ཇི་ཀིས་ཏཱན་གྱི་དངུལ་ སོ་མོ་ནི",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "ཐཱའི་ལེནཌ་གི་དངུལ་ བཱཏ",
+ "symbol": "TH฿"
+ },
+ "BTN": {
+ "name": "དངུལ་ཀྲམ",
+ "symbol": "Nu."
+ },
+ "NZD": {
+ "name": "ནིའུ་ཛི་ལེནཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "ནོར་ཝེ་གི་དངུལ་ ཀྲོ་ན",
+ "symbol": "NOK"
+ },
+ "KPW": {
+ "name": "ནོརཐ་ ཀོ་རི་ཡ་གི་དངུལ་ ཝོན",
+ "symbol": "KPW"
+ },
+ "PKR": {
+ "name": "པ་ཀིས་ཏཱན་གྱི་དངུལ་ རུ་པི",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "པ་ན་མ་གི་དངུལ་ བཱལ་བོ་ཝ",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "པ་རུ་གི་དངུལ་ ནུ་བོ་ སཱོལ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "པོ་ལེནཌ་ཀྱི་དངུལ ཛ྄ལོ་ཊི",
+ "symbol": "PLN"
+ },
+ "PHP": {
+ "name": "ཕི་ལི་པིནས་གྱི་དངུལ་ པེ་སོ",
+ "symbol": "PHP"
+ },
+ "BMD": {
+ "name": "བར་མུ་ཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "BMD"
+ },
+ "BRL": {
+ "name": "བྲ་ཛིལ་གྱི་དངུལ་ རེ་ཡལ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "བྲི་ཊིཤ་ པ་འུནཌ་ ཨིས་ཊར་ལིང",
+ "symbol": "£"
+ },
+ "NPR": {
+ "name": "བལ་པོའི་དངུལ་ རུ་པི",
+ "symbol": "NPR"
+ },
+ "BDT": {
+ "name": "བྷང་ལ་དེཤ་གི་དངུལ་ ཏ་ཀ",
+ "symbol": "BDT"
+ },
+ "VEF": {
+ "name": "བེ་ནི་ཛུ་ཝེ་ལ་གི་དངུལ་ བོ་ལི་བར",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "བེཊ་ནཱམ་གྱི་དངུལ་ ཌོང",
+ "symbol": "₫"
+ },
+ "MYR": {
+ "name": "མ་ལེ་ཤི་ཡ་གི་དངུལ་ རིང་གིཊ",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "མཱལ་དིབས་ཀྱི་དངུལ་ རུ་ཕི་ཡ",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "མི་ཡཱན་མར་གྱི་དངུལ་ ཅཱཏ",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "མེཀ་སི་ཀོ་གི་དངུལ་ པེ་སོ",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "མོ་རོ་ཀོ་གི་དངུལ་ ཌིར་ཧཱམ",
+ "symbol": "MAD"
+ },
+ "UGX": {
+ "name": "ཡུ་གྷེན་ཌ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས་ཀྱི་དངུལ་ ཌིར་ཧཱམ",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "ཡུ་རུ་གུ་ཝའི་གི་དངུལ་ པེ་སོ",
+ "symbol": "UYU"
+ },
+ "EUR": {
+ "name": "ཡུ་རོ༌དངུལ་",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "ཡུ་ཨེས་ ཌོ་ལར",
+ "symbol": "US$"
+ },
+ "INR": {
+ "name": "རྒྱ་གར་གྱི་དངུལ་ རུ་པི",
+ "symbol": "₹"
+ },
+ "CNY": {
+ "name": "རྒྱ་ནག་གི་དངུལ་ ཡུ་ཝཱན",
+ "symbol": "CN¥"
+ },
+ "LAK": {
+ "name": "ལཱ་ཝོས་ཀྱི་དངུལ་ ཀིཔ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "ལཱའི་བེ་རི་ཡ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ལི་བི་ཡ་གི་དངུལ་ ཌི་ན",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ལེ་བ་ནོན་གྱི་དངུལ་ པ་འུནཌ",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "ཤྲི་ ལང་ཀ་གི་དངུལ་ རུ་པི",
+ "symbol": "LKR"
+ },
+ "SAR": {
+ "name": "སཱཝ་དིའི་དངུལ་ རི་ཡཱལ",
+ "symbol": "SAR"
+ },
+ "KRW": {
+ "name": "སཱའུཐ་ ཀོ་རི་ཡ་གི་དངུལ་ ཝོན",
+ "symbol": "KR₩"
+ },
+ "ZAR": {
+ "name": "སཱའུཐ་ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད",
+ "symbol": "ZAR"
+ },
+ "SYP": {
+ "name": "སི་རི་ཡ་གི་དངུལ་ པ་འུནཌ",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "སིང་ག་པོར་གྱི་དངུལ་ ཌོ་ལར",
+ "symbol": "SGD"
+ },
+ "CHF": {
+ "name": "སུ་ཡིས་ཀྱི་དངུལ་ ཕྲངཀ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "སུའི་ཌེན་གྱི་དངུལ་ ཀྲོ་ན",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "སེ་ཤཱལས་ཀྱི་དངུལ་ རུ་པི",
+ "symbol": "SCR"
+ },
+ "MNT": {
+ "name": "སོག་པོའི་དངུལ་ ཏུ་གྲིཀ",
+ "symbol": "MNT"
+ },
+ "HKD": {
+ "name": "ཧོང་ཀོང་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "HK$"
+ },
+ "AFN": {
+ "name": "ཨཕ་གཱན་གྱི་དངུལ་ ཨཕ་ག་ནི",
+ "symbol": "AFN"
+ },
+ "ISK": {
+ "name": "ཨཱཡིས་ལེནཌ་གི་དངུལ་ ཀྲོ་ན",
+ "symbol": "ISK"
+ },
+ "DZD": {
+ "name": "ཨཱལ་ཇི་རི་ཡ་གི་དངུལ་ ཌའི་ནར",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "ཨཱོས་ཊྲེ་ལི་ཡ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "AU$"
+ },
+ "EGP": {
+ "name": "ཨི་ཇིབཊ་གི་དངུལ་ པ་འུནཌ",
+ "symbol": "EGP"
+ },
+ "IQD": {
+ "name": "ཨི་རཱཀ་གི་དངུལ་ ཌི་ན",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ཨི་རཱན་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "IRR"
+ },
+ "IDR": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡ་གི་དངུལ་ རུ་པི་ཡ",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ཨིས་རེལ་གྱི་དངུལ་གསརཔ་ ཤེ་ཀེལ",
+ "symbol": "ILS"
+ },
+ "RUB": {
+ "name": "ཨུ་རུ་སུ་གི་དངུལ་ རུ་བཱལ",
+ "symbol": "RUB"
+ },
+ "UZS": {
+ "name": "ཨུས་བེ་ཀིས་ཏཱན་གྱི་དངུལ་ སོམ",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "ཨོ་མཱན་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "OMR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ebu.json b/library/intl/resources/currency/ebu.json
new file mode 100644
index 000000000..017f934f0
--- /dev/null
+++ b/library/intl/resources/currency/ebu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "AUD": {
+ "name": "Dora ya Australia",
+ "symbol": "A$"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ee.json b/library/intl/resources/currency/ee.json
new file mode 100644
index 000000000..4456aba62
--- /dev/null
+++ b/library/intl/resources/currency/ee.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghanistanga afghani",
+ "symbol": "AFN"
+ },
+ "ISK": {
+ "name": "aiselandga króna",
+ "symbol": "ISK"
+ },
+ "ALL": {
+ "name": "albaniaga lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "aldzeriaga dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolaga kwanza",
+ "symbol": "AOA"
+ },
+ "ZAR": {
+ "name": "anyiehe afrikaga rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "anyiehe koreaga won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "anyiehe sudanga pound",
+ "symbol": "SSP"
+ },
+ "ARS": {
+ "name": "argentinaga peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armeniaga dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubaga lorin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australiaga dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "azerbaidzanga manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamiaga dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainga dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshga taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadiaga dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "belarusiaga ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "belizega dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudaga dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanga ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviaga boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnia-herzegovinaga convertible mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanaga pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilga real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britainga pound sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiga dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgariaga lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiga franc",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "CFP ga franc",
+ "symbol": "CFPF"
+ },
+ "DKK": {
+ "name": "danemarkga krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominicaga peso",
+ "symbol": "DOP"
+ },
+ "JMD": {
+ "name": "dzamaikaga dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "dzapanga yen",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "dziboutiga franc",
+ "symbol": "DJF"
+ },
+ "KPW": {
+ "name": "dziehe koreaga won",
+ "symbol": "KPW"
+ },
+ "GEL": {
+ "name": "dzɔdziaga lari",
+ "symbol": "GEL"
+ },
+ "EGP": {
+ "name": "egyptega pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreaga nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ethiopiaga birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklanɖ ƒudomekpo dukɔwo ƒe ga pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidziga dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipiniga peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiaga dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghana siɖi",
+ "symbol": "GH₵"
+ },
+ "GIP": {
+ "name": "gilbrataga pound",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "giniga franc",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "guatemalaga quetzal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "guyanaga dollar",
+ "symbol": "GYD"
+ },
+ "XCD": {
+ "name": "ɣedzeƒe caribbeaga dollar",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "ɣetoɖofe afrikaga CFA franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ɣetoɖofe afrikaga CFA franc BEAC",
+ "symbol": "FCFA"
+ },
+ "HTG": {
+ "name": "haitiga gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraga lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hong kongga dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "hungariaga forint",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "indiaga rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indinesiaga rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakga dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranga rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "israelga yeyetɔ sheqel",
+ "symbol": "₪"
+ },
+ "KHR": {
+ "name": "kambodiaga riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadaga dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kape verdega escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarga rial",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "kayman ƒudomekpoga dollar",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "kazakhstanga tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyaga shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgistanga som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolombiaga peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komoroga franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoga franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta rikaga kolón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "kroatiaga kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "kubaga convertible peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubaga peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitga dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laosga kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "lebanonga pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "lesotoga loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "liberiaga dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyaga dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "lithuaniaga litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "makanesega pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedoniaga denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "malagasega ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "malawiga kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysiaga ringit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldiviaga rufiyaa",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "meksikoga peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldovaga leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongoliaga tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "morokoga dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "mozambikga metikal",
+ "symbol": "MZN"
+ },
+ "MRO": {
+ "name": "mɔritaniaga ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mɔritiusga rupee",
+ "symbol": "MUR"
+ },
+ "MMK": {
+ "name": "myanmaga kyat",
+ "symbol": "MMK"
+ },
+ "NGN": {
+ "name": "naidzeriaga naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "namibiaga dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nedalands antilleaga guilder",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalga rupee",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "new zealanɖga dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "nikaraguaga córdoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norwayga krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "omanga rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistaniga rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaga balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua new guineaga kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayga guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruga nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polanɖga zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "romaniaga leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "rɔtsiaga ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandaga franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "saint helenaga pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "salvadɔga colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samaoga tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são tomé kple príncipega dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiga riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiaga dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "sɛtselsga rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra leonega leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapɔga dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "solomon ƒudomekpo dukɔwo ƒe ga dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somaliaga shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri lankaga rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanga pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamga dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swaziga lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "swedenga krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "swissga franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriaga pound",
+ "symbol": "SYP"
+ },
+ "TWD": {
+ "name": "taiwanga yeye dollar",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "tajikistanga somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniatɔwofɛgadudu",
+ "symbol": "TZS"
+ },
+ "TRY": {
+ "name": "tɛkiiga lira",
+ "symbol": "TRY"
+ },
+ "THB": {
+ "name": "thaiga baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tonagaga pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad kple tobagoga dollar",
+ "symbol": "TTD"
+ },
+ "CNY": {
+ "name": "tsainaga yuan",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "tsɛk repɔblikga koruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "tsilega peso",
+ "symbol": "CLP"
+ },
+ "TND": {
+ "name": "tunisiaga dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanga manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandaga shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainega hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "united arab emiratesga dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "uruguayga peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "us ga dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "uzbekistanga som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuga vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelaga bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamga dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "yemeniga rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "yɔdanga dinar",
+ "symbol": "JOD"
+ },
+ "ZMW": {
+ "name": "zambiaga kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwega dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/el.json b/library/intl/resources/currency/el.json
new file mode 100644
index 000000000..4fd78bddf
--- /dev/null
+++ b/library/intl/resources/currency/el.json
@@ -0,0 +1,634 @@
+{
+ "MGA": {
+ "name": "Αριάρι Μαδαγασκάρης",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "Αφγάνι Αφγανιστάν",
+ "symbol": "AFN"
+ },
+ "VUV": {
+ "name": "Βατού Βανουάτου",
+ "symbol": "VUV"
+ },
+ "JPY": {
+ "name": "Γιεν Ιαπωνίας",
+ "symbol": "JP¥"
+ },
+ "ANG": {
+ "name": "Γκίλντα Ολλανδικών Αντιλλών",
+ "symbol": "ANG"
+ },
+ "PYG": {
+ "name": "Γκουαρανί Παραγουάης",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "Γκουρντ Αϊτής",
+ "symbol": "HTG"
+ },
+ "CNY": {
+ "name": "Γουάν Κίνας",
+ "symbol": "CN¥"
+ },
+ "KPW": {
+ "name": "Γουόν Βόρειας Κορέας",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Γουόν Νότιας Κορέας",
+ "symbol": "₩"
+ },
+ "UAH": {
+ "name": "Γρίβνα Ουκρανίας",
+ "symbol": "UAH"
+ },
+ "DZD": {
+ "name": "Δηνάριο Αλγερίας",
+ "symbol": "DZD"
+ },
+ "JOD": {
+ "name": "Δηνάριο Ιορδανίας",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Δηνάριο Ιράκ",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Δηνάριο Κουβέιτ",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Δηνάριο Λιβύης",
+ "symbol": "LYD"
+ },
+ "BHD": {
+ "name": "Δηνάριο Μπαχρέιν",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "Δηνάριο Π.Γ.Δ.Μ.",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Δηνάριο Σερβίας",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Δηνάριο Τυνησίας",
+ "symbol": "TND"
+ },
+ "XCD": {
+ "name": "Δολάριο Ανατολικής Καραϊβικής",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "Δολάριο Αυστραλίας",
+ "symbol": "A$"
+ },
+ "BMD": {
+ "name": "Δολάριο Βερμούδων",
+ "symbol": "BMD"
+ },
+ "GYD": {
+ "name": "Δολάριο Γουιάνας",
+ "symbol": "GYD"
+ },
+ "ZWL": {
+ "name": "Δολάριο Ζιμπάμπουε (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Δολάριο ΗΠΑ",
+ "symbol": "$"
+ },
+ "CAD": {
+ "name": "Δολάριο Καναδά",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Δολάριο Λιβερίας",
+ "symbol": "LRD"
+ },
+ "BBD": {
+ "name": "Δολάριο Μπαρμπάντος",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Δολάριο Μπαχάμες",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "Δολάριο Μπελίζ",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "Δολάριο Μπρουνέι",
+ "symbol": "BND"
+ },
+ "NAD": {
+ "name": "Δολάριο Ναμίμπια",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Δολάριο Νέας Ζηλανδίας",
+ "symbol": "NZ$"
+ },
+ "KYD": {
+ "name": "Δολάριο Νήσων Κάιμαν",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Δολάριο Νήσων Σολομώντος",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "Δολάριο Σιγκαπούρης",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Δολάριο Σουρινάμ",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "Δολάριο Τζαμάικας",
+ "symbol": "JMD"
+ },
+ "TTD": {
+ "name": "Δολάριο Τρινιντάντ και Τομπάγκο",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "Δολάριο Φίτζι",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Δολάριο Χονγκ Κονγκ",
+ "symbol": "HK$"
+ },
+ "CVE": {
+ "name": "Εσκούδο Πράσινου Ακρωτηρίου",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Ευρώ",
+ "symbol": "€"
+ },
+ "PLN": {
+ "name": "Ζλότι Πολωνίας",
+ "symbol": "PLN"
+ },
+ "PGK": {
+ "name": "Κίνα Παπούα Νέα Γουινέα",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Κιπ Λάος",
+ "symbol": "LAK"
+ },
+ "SVC": {
+ "name": "Κολόν Ελ Σαλβαδόρ",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Κολόν Κόστα Ρίκα",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Κορόνα Δανίας",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Κορόνα Ισλανδίας",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Κορόνα Νορβηγίας",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Κορόνα Σουηδίας",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "Κορόνα Τσεχίας",
+ "symbol": "CZK"
+ },
+ "AOA": {
+ "name": "Κουάνζα Ανγκόλας",
+ "symbol": "AOA"
+ },
+ "ZMW": {
+ "name": "Κουάτσα Ζάμπιας",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Κουάτσα Μαλάουι",
+ "symbol": "MWK"
+ },
+ "GTQ": {
+ "name": "Κουετσάλ Γουατεμάλας",
+ "symbol": "GTQ"
+ },
+ "HRK": {
+ "name": "Κούνα Κροατίας",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "Κυάτ Μιανμάρ",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Λάρι Γεωργίας",
+ "symbol": "GEL"
+ },
+ "BGN": {
+ "name": "Λεβ Βουλγαρίας",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "Λεκ Αλβανίας",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Λεμπίρα Ονδούρας",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Λεόνε Σιέρα Λεόνε",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Λέου Μολδαβίας",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Λέου Ρουμανίας",
+ "symbol": "RON"
+ },
+ "SZL": {
+ "name": "Λιλανγκένι Σουαζιλάνδης",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "Λίρα Αγίας Ελένης",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Λίρα Αιγύπτου",
+ "symbol": "EGP"
+ },
+ "GIP": {
+ "name": "Λίρα Γιβραλτάρ",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Λίρα Λιβάνου",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "Λίρα Νησιών Φώκλαντ",
+ "symbol": "FKP"
+ },
+ "SSP": {
+ "name": "Λίρα Νότιου Σουδάν",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Λίρα Σουδάν",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Λίρα Στερλίνα Βρετανίας",
+ "symbol": "£"
+ },
+ "SYP": {
+ "name": "Λίρα Συρίας",
+ "symbol": "SYP"
+ },
+ "LTL": {
+ "name": "Λίτα Λιθουανίας",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Λότι Λεσότο",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Μανάτ Αζερμπαϊτζάν",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Μάνατ Τουρκμενιστάν",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Μετατρέψιμο Μάρκο Βοσνίας-Ερζεγοβίνης",
+ "symbol": "BAM"
+ },
+ "CUC": {
+ "name": "Μετατρέψιμο πέσο Κούβας",
+ "symbol": "CUC"
+ },
+ "MZN": {
+ "name": "Μετικάλ Μοζαμβίκης",
+ "symbol": "MZN"
+ },
+ "PAB": {
+ "name": "Μπαλμπόα Παναμά",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "Μπατ Ταϊλάνδης",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "Μπιρ Αιθιοπίας",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Μπολιβάρ Βενεζουέλας",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Μπολιβιάνο Βολιβίας",
+ "symbol": "BOB"
+ },
+ "NGN": {
+ "name": "Νάιρα Νιγηρίας",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Νάκφα Ερυθραίας",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Νγκούλτρουμ Μπουτάν",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Νέο δολάριο Ταϊβάν",
+ "symbol": "NT$"
+ },
+ "ILS": {
+ "name": "Νέο Σέκελ Ισραήλ",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "Νέο Σολ Περού",
+ "symbol": "PEN"
+ },
+ "GMD": {
+ "name": "Νταλάσι Γκάμπιας",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "Ντιράμ Ηνωμένων Αραβικών Εμιράτων",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Ντιράμ Μαρόκου",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Ντόμπρα Σάο Τομέ και Πρίνσιπε",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Ντονγκ Βιετνάμ",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Ντραμ Αρμενίας",
+ "symbol": "AMD"
+ },
+ "MRO": {
+ "name": "Ουγκίγια Μαυριτανίας",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Παάγκα νήσων Τόγκα",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Πατάκα Μακάο",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Πέσο Αργεντινής",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "Πέσο Δομινικανής Δημοκρατίας",
+ "symbol": "DOP"
+ },
+ "COP": {
+ "name": "Πέσο Κολομβίας",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Πέσο Κούβας",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Πέσο Μεξικού",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Πέσο Ουρουγουάης",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Πέσο Φιλιππίνων",
+ "symbol": "PHP"
+ },
+ "CLP": {
+ "name": "Πέσο Χιλής",
+ "symbol": "CLP"
+ },
+ "BWP": {
+ "name": "Πούλα Μποτσουάνας",
+ "symbol": "BWP"
+ },
+ "ZAR": {
+ "name": "Ραντ Νότιας Αφρικής",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Ρεάλ Βραζιλίας",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Ριάλ Ιράν",
+ "symbol": "IRR"
+ },
+ "QAR": {
+ "name": "Ριάλ Κατάρ",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Ριάλ Ομάν",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "Ριάλ Σαουδικής Αραβίας",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "Ριάλ Υεμένης",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Ρίελ Καμπότζης",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ρινγκίτ Μαλαισίας",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Ρούβλι Λευκορωσίας",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Ρούβλι Ρωσίας",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Ρουπία Ινδίας",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Ρουπία Ινδονησίας",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Ρουπία Μαυρικίου",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Ρουπία Νεπάλ",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Ρουπία Πακιστάν",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Ρουπία Σεϋχελλών",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Ρουπία Σρι Λάνκα",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "Ρουφίγια Μαλδίβων",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "Σελίνι Κένυας",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Σελίνι Ουγκάντας",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Σελίνι Σομαλίας",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Σελίνι Τανζανίας",
+ "symbol": "TZS"
+ },
+ "GHS": {
+ "name": "Σέντι Γκάνας",
+ "symbol": "GHS"
+ },
+ "KGS": {
+ "name": "Σομ Κιργιζίας",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Σομ Ουζμπεκιστάν",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Σομόνι Τατζικιστάν",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Τάκα Μπαγκλαντές",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Τάλα Σαμόα",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Τένγκε Καζακστάν",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Τουγκρίκ Μογγολίας",
+ "symbol": "MNT"
+ },
+ "TRY": {
+ "name": "Τουρκική Λίρα",
+ "symbol": "TRY"
+ },
+ "HUF": {
+ "name": "Φιορίνι Ουγγαρίας",
+ "symbol": "HUF"
+ },
+ "AWG": {
+ "name": "Φλορίνι Αρούμπα",
+ "symbol": "AWG"
+ },
+ "XOF": {
+ "name": "Φράγκο CFA Δυτικής Αφρικής (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Φράγκο CFA Κεντρικής Αφρικής (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Φράγκο CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Φράγκο Γουινέας",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "Φράγκο Ελβετίας",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Φράγκο Κομορών",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Φράγκο Κονγκό",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "Φράγκο Μπουρούντι",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "Φράγκο Ρουάντας",
+ "symbol": "RWF"
+ },
+ "DJF": {
+ "name": "Φράγκο Τζιμπουτί",
+ "symbol": "DJF"
+ },
+ "NIO": {
+ "name": "Χρυσή Κόρδοβα Νικαράγουας",
+ "symbol": "NIO"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-AU.json b/library/intl/resources/currency/en-AU.json
new file mode 100644
index 000000000..931c1a515
--- /dev/null
+++ b/library/intl/resources/currency/en-AU.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Rouble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "Central African CFA Franc",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Rouble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelles Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistani Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "XOF": {
+ "name": "West African CFA Franc",
+ "symbol": "CFA"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-BE.json b/library/intl/resources/currency/en-BE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-BE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-DG.json b/library/intl/resources/currency/en-DG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-DG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-FK.json b/library/intl/resources/currency/en-FK.json
new file mode 100644
index 000000000..23aeb894e
--- /dev/null
+++ b/library/intl/resources/currency/en-FK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "£"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GB.json b/library/intl/resources/currency/en-GB.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-GB.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GG.json b/library/intl/resources/currency/en-GG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-GG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GI.json b/library/intl/resources/currency/en-GI.json
new file mode 100644
index 000000000..f29f8999a
--- /dev/null
+++ b/library/intl/resources/currency/en-GI.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "£"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-HK.json b/library/intl/resources/currency/en-HK.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-HK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IE.json b/library/intl/resources/currency/en-IE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IM.json b/library/intl/resources/currency/en-IM.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IM.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IN.json b/library/intl/resources/currency/en-IN.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IN.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IO.json b/library/intl/resources/currency/en-IO.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-JE.json b/library/intl/resources/currency/en-JE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-JE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-MO.json b/library/intl/resources/currency/en-MO.json
new file mode 100644
index 000000000..70f96d7ad
--- /dev/null
+++ b/library/intl/resources/currency/en-MO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP$"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-MT.json b/library/intl/resources/currency/en-MT.json
new file mode 100644
index 000000000..b618be685
--- /dev/null
+++ b/library/intl/resources/currency/en-MT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-NZ.json b/library/intl/resources/currency/en-NZ.json
new file mode 100644
index 000000000..00a9ef4f4
--- /dev/null
+++ b/library/intl/resources/currency/en-NZ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-PK.json b/library/intl/resources/currency/en-PK.json
new file mode 100644
index 000000000..0a373668f
--- /dev/null
+++ b/library/intl/resources/currency/en-PK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "Rs"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-SG.json b/library/intl/resources/currency/en-SG.json
new file mode 100644
index 000000000..9a26f42ce
--- /dev/null
+++ b/library/intl/resources/currency/en-SG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "$"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-SH.json b/library/intl/resources/currency/en-SH.json
new file mode 100644
index 000000000..5cee5ff19
--- /dev/null
+++ b/library/intl/resources/currency/en-SH.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-VG.json b/library/intl/resources/currency/en-VG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-VG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en.json b/library/intl/resources/currency/en.json
new file mode 100644
index 000000000..937c7a750
--- /dev/null
+++ b/library/intl/resources/currency/en.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé & Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena Pound",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad & Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/eo.json b/library/intl/resources/currency/eo.json
new file mode 100644
index 000000000..16a868f49
--- /dev/null
+++ b/library/intl/resources/currency/eo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "Aŭstralia dolaro",
+ "symbol": "AU$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "INR": {
+ "name": "Barata rupio",
+ "symbol": "₹"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brazila realo",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brita pundo",
+ "symbol": "£"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "Ĉina juano",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "Dana krono",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eŭro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkonga dolaro",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Indonezia rupio",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Japana eno",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada dolaro",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "Meksika peso",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvega krono",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Nova tajvana dolaro",
+ "symbol": "NT$"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "Pola zloto",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rusa rublo",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "Sauda rialo",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "ZAR": {
+ "name": "Sud-afrika rando",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sud-korea ŭono",
+ "symbol": "₩"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "Sveda krono",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Svisa franko",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "Taja bahto",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TRY": {
+ "name": "Turka liro",
+ "symbol": "₺"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "Usona dolaro",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-AR.json b/library/intl/resources/currency/es-AR.json
new file mode 100644
index 000000000..66ec77ec7
--- /dev/null
+++ b/library/intl/resources/currency/es-AR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "$"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-BO.json b/library/intl/resources/currency/es-BO.json
new file mode 100644
index 000000000..a36de1ec8
--- /dev/null
+++ b/library/intl/resources/currency/es-BO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "Bs"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CL.json b/library/intl/resources/currency/es-CL.json
new file mode 100644
index 000000000..f4f4136e3
--- /dev/null
+++ b/library/intl/resources/currency/es-CL.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "$"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CO.json b/library/intl/resources/currency/es-CO.json
new file mode 100644
index 000000000..f8e90ed93
--- /dev/null
+++ b/library/intl/resources/currency/es-CO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "$"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CR.json b/library/intl/resources/currency/es-CR.json
new file mode 100644
index 000000000..0f49bb020
--- /dev/null
+++ b/library/intl/resources/currency/es-CR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "₡"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CU.json b/library/intl/resources/currency/es-CU.json
new file mode 100644
index 000000000..e5b0bbe16
--- /dev/null
+++ b/library/intl/resources/currency/es-CU.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "$"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-DO.json b/library/intl/resources/currency/es-DO.json
new file mode 100644
index 000000000..a7dacfdcc
--- /dev/null
+++ b/library/intl/resources/currency/es-DO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "$"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-EC.json b/library/intl/resources/currency/es-EC.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-EC.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-GT.json b/library/intl/resources/currency/es-GT.json
new file mode 100644
index 000000000..c7c365d46
--- /dev/null
+++ b/library/intl/resources/currency/es-GT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "Q"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-HN.json b/library/intl/resources/currency/es-HN.json
new file mode 100644
index 000000000..23b5c1963
--- /dev/null
+++ b/library/intl/resources/currency/es-HN.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "L"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-MX.json b/library/intl/resources/currency/es-MX.json
new file mode 100644
index 000000000..bccac0880
--- /dev/null
+++ b/library/intl/resources/currency/es-MX.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afgano",
+ "symbol": "Af"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandés",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanés",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de Santo Tomé y Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dólar de Brunéi",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "dólar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dólar de las Islas Salomón",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "dólar jamaiquino",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamita",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "Afl."
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "Naf"
+ },
+ "HUF": {
+ "name": "florín húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "XPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna ucraniana",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "PGK": {
+ "name": "kina de Papúa Nueva Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kwanza angoleño",
+ "symbol": "Kz"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanés",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone de Sierra Leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev búlgaro",
+ "symbol": "BGN"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina británica",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "libra malvinense",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambiqueño",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriano",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo shéquel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritano",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga tongano",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "$a"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "$"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botsuano",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel camboyano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malayo",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal de Qatar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "riyal saudí",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa de Maldivas",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupia de Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "KGS": {
+ "name": "som kirguís",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbeko",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazajo",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonés",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan chino",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-NI.json b/library/intl/resources/currency/es-NI.json
new file mode 100644
index 000000000..03f0380c1
--- /dev/null
+++ b/library/intl/resources/currency/es-NI.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "C$"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PA.json b/library/intl/resources/currency/es-PA.json
new file mode 100644
index 000000000..4722f6a4f
--- /dev/null
+++ b/library/intl/resources/currency/es-PA.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "B\/."
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PE.json b/library/intl/resources/currency/es-PE.json
new file mode 100644
index 000000000..649ceafdd
--- /dev/null
+++ b/library/intl/resources/currency/es-PE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "S\/."
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PR.json b/library/intl/resources/currency/es-PR.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-PR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PY.json b/library/intl/resources/currency/es-PY.json
new file mode 100644
index 000000000..77d31f30e
--- /dev/null
+++ b/library/intl/resources/currency/es-PY.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "₲"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-SV.json b/library/intl/resources/currency/es-SV.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-SV.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-US.json b/library/intl/resources/currency/es-US.json
new file mode 100644
index 000000000..946b66bba
--- /dev/null
+++ b/library/intl/resources/currency/es-US.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-UY.json b/library/intl/resources/currency/es-UY.json
new file mode 100644
index 000000000..848dfdeb0
--- /dev/null
+++ b/library/intl/resources/currency/es-UY.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "$"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-VE.json b/library/intl/resources/currency/es-VE.json
new file mode 100644
index 000000000..effb954e4
--- /dev/null
+++ b/library/intl/resources/currency/es-VE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "Bs."
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es.json b/library/intl/resources/currency/es.json
new file mode 100644
index 000000000..483f13004
--- /dev/null
+++ b/library/intl/resources/currency/es.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CA$"
+ },
+ "BBD": {
+ "name": "dólar de Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar de Belice",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "HKD": {
+ "name": "dólar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar de Jamaica",
+ "symbol": "JMD"
+ },
+ "BSD": {
+ "name": "dólar de las Bahamas",
+ "symbol": "BSD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florín de Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo séquel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tengue",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/et.json b/library/intl/resources/currency/et.json
new file mode 100644
index 000000000..47df30013
--- /dev/null
+++ b/library/intl/resources/currency/et.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "Aafrika ühisfrank BCEAO",
+ "symbol": "CFA"
+ },
+ "AFN": {
+ "name": "Afganistani afgaani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albaania lekk",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeria dinaar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angola kvanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Araabia Ühendemiraatide dirhem",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentina peeso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeenia dramm",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba guilder",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidžaani manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Austraalia dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahama dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreini dinaar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadose dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutani ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivia boliviaano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Hertsegoviina mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswana pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasiilia reaal",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaaria leev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi frank",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Caymani saarte dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "CRC": {
+ "name": "Costa Rica colón",
+ "symbol": "CRC"
+ },
+ "DJF": {
+ "name": "Djibouti frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaani peeso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptuse nael",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrea nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etioopia birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandi saarte nael",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidži dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipiinide peeso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambia dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ghana cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltari nael",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruusia lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Guatemala ketsal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haiti gurd",
+ "symbol": "HTG"
+ },
+ "CNY": {
+ "name": "Hiina jüaan",
+ "symbol": "CN¥"
+ },
+ "ANG": {
+ "name": "Hollandi Antillide kulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondurase lempiira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongi dollar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Horvaatia kuna",
+ "symbol": "HRK"
+ },
+ "XCD": {
+ "name": "Ida-Kariibi dollar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Iisraeli uus seekel",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "India ruupia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indoneesia ruupia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraagi dinaar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraani riaal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandi kroon",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapani jeen",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "Jamaica dollar",
+ "symbol": "JMD"
+ },
+ "YER": {
+ "name": "Jeemeni riaal",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaania dinaar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambodža riaal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanada dollar",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "Kasahstani tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenya šilling",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "Kolumbia peeso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komooride frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo frank",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "Kuuba konverteeritav peeso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuuba peeso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveidi dinaar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kõrgõzstani somm",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laose kiip",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "Leedu litt",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Lesotho loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Libeeria dollar",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Liibanoni nael",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Liibüa dinaar",
+ "symbol": "LYD"
+ },
+ "ZAR": {
+ "name": "Lõuna-Aafrika rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Lõuna-Korea vonn",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Lõuna-Sudaani nael",
+ "symbol": "SSP"
+ },
+ "WST": {
+ "name": "Lääne-Samoa tala",
+ "symbol": "WST"
+ },
+ "MOP": {
+ "name": "Macao pataka",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskari ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedoonia denaar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaisia ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malawi kvatša",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldiivide ruupia",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Maroko dirhem",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaania ugia",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiuse ruupia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mehhiko peeso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldova leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolia tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambiigi metikal",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmari kjatt",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namiibia dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepali ruupia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaragua kuldkordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeeria naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "Norra kroon",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omaani riaal",
+ "symbol": "OMR"
+ },
+ "PGK": {
+ "name": "Paapua Uus-Guinea kina",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "Pakistani ruupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paraguai guaranii",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruu uus soll",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poola zlott",
+ "symbol": "PLN"
+ },
+ "XPF": {
+ "name": "Prantsuse Vaikse-Ookeani frank",
+ "symbol": "CFPF"
+ },
+ "KPW": {
+ "name": "Põhja-Korea vonn",
+ "symbol": "KPW"
+ },
+ "QAR": {
+ "name": "Quatari riaal",
+ "symbol": "QAR"
+ },
+ "CVE": {
+ "name": "Roheneemesaarte eskuudo",
+ "symbol": "CVE"
+ },
+ "SEK": {
+ "name": "Rootsi kroon",
+ "symbol": "SEK"
+ },
+ "RON": {
+ "name": "Rumeenia lei",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Rwanda frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Saalomoni saarte dollar",
+ "symbol": "SBD"
+ },
+ "SHP": {
+ "name": "Saint Helena nael",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadori koloon",
+ "symbol": "SVC"
+ },
+ "ZMW": {
+ "name": "Sambia kvatša",
+ "symbol": "ZMW"
+ },
+ "STD": {
+ "name": "São Tomé ja Príncipe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Araabia riaal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelli saarte ruupia",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbia dinaar",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Sierra Leone leoone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapuri dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somaalia šilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lanka ruupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudaani nael",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinami dollar",
+ "symbol": "SRD"
+ },
+ "GBP": {
+ "name": "Suurbritannia naelsterling",
+ "symbol": "£"
+ },
+ "SZL": {
+ "name": "Svaasimaa lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Süüria nael",
+ "symbol": "SYP"
+ },
+ "CHF": {
+ "name": "Šveitsi frank",
+ "symbol": "CHF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "DKK": {
+ "name": "Taani kroon",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "Tadžikistani somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tai baat",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Taiwani dollar",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "Tansaania šilling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tonga pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadi ja Tobago dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tšehhi kroon",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Tšiili peeso",
+ "symbol": "CLP"
+ },
+ "TND": {
+ "name": "Tuneesia dinaar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türgi uus liir",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Türkmenistani manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda šilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukraina grivna",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungari forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguai peeso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "USA dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistani somm",
+ "symbol": "UZS"
+ },
+ "NZD": {
+ "name": "Uus-Meremaa dollar",
+ "symbol": "NZ$"
+ },
+ "BYR": {
+ "name": "Valgevene rubla",
+ "symbol": "BYR"
+ },
+ "VUV": {
+ "name": "Vanuatu vatu",
+ "symbol": "VUV"
+ },
+ "RUB": {
+ "name": "Venemaa rubla",
+ "symbol": "RUB"
+ },
+ "VEF": {
+ "name": "Venezuela bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnami dong",
+ "symbol": "₫"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/eu.json b/library/intl/resources/currency/eu.json
new file mode 100644
index 000000000..7a4af1c9a
--- /dev/null
+++ b/library/intl/resources/currency/eu.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "AEBetako dolarra",
+ "symbol": "US$"
+ },
+ "AFN": {
+ "name": "Afganistango afghania",
+ "symbol": "AFN"
+ },
+ "XOF": {
+ "name": "Afrika ekialdeko frankoa BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Afrika erdialdeko frankoa BEAC",
+ "symbol": "FCFA"
+ },
+ "ALL": {
+ "name": "Albaniako leka",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algeriako dinarra",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolako kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabiar Emirerri Batuetako dirhama",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentinako pesoa",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeniako drama",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubeko florina",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australiako dolarra",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijango manata",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahametako dolarra",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraingo dinarra",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesheko taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosetako dolarra",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizeko dolarra",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudetako dolarra",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutango ngultruma",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "Bielorrusiako errubloa",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "Boliviako bolivianoa",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovinako marko trukakorra",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Bosniako pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilgo erreala",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Bruneiko dolarra",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgariako leva",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundiko frankoa",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cabo Verdeko ezkutua",
+ "symbol": "CVE"
+ },
+ "XPF": {
+ "name": "CFP frankoa",
+ "symbol": "CFPF"
+ },
+ "CRC": {
+ "name": "Costa Ricako colona",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Danimarkako koroa",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djibouteko frankoa",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikar Errepublikako pesoa",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptoko libera",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreako nakfa",
+ "symbol": "ERN"
+ },
+ "RON": {
+ "name": "Errumaniako leua",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Errusiako errubloa",
+ "symbol": "RUB"
+ },
+ "ETB": {
+ "name": "Etiopiako birra",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euroa",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland uharteetako libera",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijiko dolarra",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinetako pesoa",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Ganbiako dalasia",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgiako laria",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanako cedia",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarreko libera",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Gineako frankoa",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "Guatemalako quetzala",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Guyanako dolarra",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitiko gourdea",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "Hego Koreako wona",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Hego Sudango libera",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "Hegoafrikako randa",
+ "symbol": "ZAR"
+ },
+ "ANG": {
+ "name": "Holandarren Antilletako guilderra",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondurasko lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kongeko dolarra",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungariako florina",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "Indiako errupia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesiako errupia",
+ "symbol": "IDR"
+ },
+ "KPW": {
+ "name": "Ipar Koreako wona",
+ "symbol": "KPW"
+ },
+ "IQD": {
+ "name": "Irakeko dinarra",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Irango riala",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandiako koroa",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israeleko sheqel berria",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikako dolarra",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japoniako yena",
+ "symbol": "JP¥"
+ },
+ "JOD": {
+ "name": "Jordaniako dinarra",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman uharteetako dolarra",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Kanadako dolarra",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "Kanbodiako riela",
+ "symbol": "KHR"
+ },
+ "XCD": {
+ "name": "Karibe ekialdeko dolarra",
+ "symbol": "EC$"
+ },
+ "KZT": {
+ "name": "Kazakhstango tengea",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyako txelina",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizistango soma",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolonbiako pesoa",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoreetako frankoa",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoko frankoa",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroaziako kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubako peso trukakorra",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubako pesoa",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuwaiteko dinarra",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoseko kipa",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothoko lotia",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanoko libera",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "Libera esterlina",
+ "symbol": "£"
+ },
+ "LRD": {
+ "name": "Liberiako dolarra",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libiako dinarra",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lituaniako litasa",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanako pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskarreko ariarya",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawiko kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysiako ringgita",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivetako rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokoko dirhama",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaniako ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Maurizio uharteetako errupia",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedoniako denara",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikoko pesoa",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldaviako leua",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoliako tugrika",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikeko metikala",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarreko kyata",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibiako dolarra",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalgo errupia",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigeriako naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaraguako cordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegiako koroa",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omango riala",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistango errupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamako balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Ginea Berriko kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaiko guarania",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruko sol berria",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poloniako zlotya",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarreko riala",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Ruandako frankoa",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon uharteetako dolarra",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoko tala",
+ "symbol": "WST"
+ },
+ "SHP": {
+ "name": "Santa Helenako libera",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Sao Tomeko eta Principeko dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiko riala",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbiako dinarra",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelleetako errupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonako leona",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurreko dolarra",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Siriako libera",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Somaliako txelina",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankako errupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudango libera",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "Suediako koroa",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Suitzako frankoa",
+ "symbol": "CHF"
+ },
+ "SRD": {
+ "name": "Surinameko dolarra",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swaziko lilangenia",
+ "symbol": "SZL"
+ },
+ "TWD": {
+ "name": "Taiwango dolar berria",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "Tajikistango somonia",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniako txelina",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailandiako bahta",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongako Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadeko eta Tobagoko dolarra",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisiako dinarra",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkiako lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistango manata",
+ "symbol": "TMT"
+ },
+ "CZK": {
+ "name": "Txekiar Errepublikako koroa",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Txileko pesoa",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Txinako yuana",
+ "symbol": "CN¥"
+ },
+ "UGX": {
+ "name": "Ugandako txelina",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainako hryvnia",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Uruguaiko pesoa",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistango soma",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatuko vatua",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelako bolivarra",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnameko donga",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemengo riala",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambiako kwacha",
+ "symbol": "ZMW"
+ },
+ "NZD": {
+ "name": "Zeelanda Berriko dolarra",
+ "symbol": "NZ$"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ewo.json b/library/intl/resources/currency/ewo.json
new file mode 100644
index 000000000..8095a4ca9
--- /dev/null
+++ b/library/intl/resources/currency/ewo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari yá Maləgás",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bír yá Etsiópia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasí yá Gámbía",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinár yá Alehérí",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinár yá Bahərɛ́n",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinár yá Libí",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinár yá Tunisí",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirám yá Emirá Aráb Uní",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirám yá Maróg",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dóbə́ra yá Saó Tomé ai Pəlinəsípe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolár yá amɛ́rəkə",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolár yá Kanáda",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolár yá Libéria",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolár yá Namibí",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dolár yá Osətəralí",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esəkúdo yá Kápə́vɛ́rə",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "əró",
+ "symbol": "€"
+ },
+ "XOF": {
+ "name": "Fəláŋ CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fəláŋ CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Fəláŋ yá Burundí",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fəláŋ yá dzibutí",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fəláŋ yá Komória",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fəláŋ yá Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Fəláŋ yá Ruwandá",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fəláŋ yá Suís",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "AOA": {
+ "name": "Kwánəza yá Angolá",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwatsa yá Malawí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwatsa yá Zambí",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leóne yá Sierá-leónə",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni yá Swazí",
+ "symbol": "SZL"
+ },
+ "GBP": {
+ "name": "Lívə́lə Sətərəlíŋ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Lívə́lə yá Ehíbətía",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Lívələ yá Ǹfúfúb Elɛ́n",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Lívələ yá Sudán",
+ "symbol": "SDG"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lotí yá Lesotó",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Náfəka yá Eritelé",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Náíra yá Nihéria",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Púlá yá Botswána",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Ránədə yá Afiríka",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riál yá Arabí Saudí",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupí yá ɛ́ndía",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupí yá Morís",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupí yá Sɛsɛ́l",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silíŋ yá Keniá",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silíŋ yá Somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silíŋ yá Tanazaní",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silíŋ yá Ugandá (1966–1987)",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugiya yá Moritaní",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "Yɛ́n yá Hapɔ́n",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yuán Renəminəbí yá Tsainís",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fa-AF.json b/library/intl/resources/currency/fa-AF.json
new file mode 100644
index 000000000..9cef5c90e
--- /dev/null
+++ b/library/intl/resources/currency/fa-AF.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "MGA": {
+ "name": "آریاری مالاگاسی",
+ "symbol": "MGA"
+ },
+ "CVE": {
+ "name": "اسکودوی کیپ‌ورد",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "افغانی افغانستان",
+ "symbol": "؋"
+ },
+ "BTN": {
+ "name": "انگولتروم بوتان",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "اوگوئیای موریتانی",
+ "symbol": "MRO"
+ },
+ "THB": {
+ "name": "بات تایلند",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوای پاناما",
+ "symbol": "PAB"
+ },
+ "VEF": {
+ "name": "بولیوار ونزوئلا",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بولیویانوی بولیوی",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بیر اتیوپی",
+ "symbol": "ETB"
+ },
+ "TOP": {
+ "name": "پاآنگای تونگا",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "پاتاکای ماکائو",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "پزوی آرژانتین",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "پزوی اوروگوئه",
+ "symbol": "UYU"
+ },
+ "CUC": {
+ "name": "پزوی تبدیل‌پذیر کوبا",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "پزوی جمهوری دومینیکن",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "پزوی شیلی",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "پزوی فیلیپین",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "پزوی کلمبیا",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "پزوی کوبا",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "پزوی مکسیکو",
+ "symbol": "$MX"
+ },
+ "BWP": {
+ "name": "پولای بوتسوانا",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "پوند بریتانیا",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "پوند جبل‌الطارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "پوند جزایر فالکلند",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "پوند سنت هلن",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "پوند سودان جنوبی",
+ "symbol": "SSP"
+ },
+ "BDT": {
+ "name": "تاکای بنگلادش",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالای ساموا",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "تنگهٔ قزاقستان",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "توگریک مغولستان",
+ "symbol": "MNT"
+ },
+ "GMD": {
+ "name": "دالاسی گامبیا",
+ "symbol": "GMD"
+ },
+ "AUD": {
+ "name": "دالر آسترالیا",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "دالر امریکا",
+ "symbol": "$"
+ },
+ "BND": {
+ "name": "دالر برونی",
+ "symbol": "BND"
+ },
+ "SGD": {
+ "name": "دالر سینگاپور",
+ "symbol": "SGD"
+ },
+ "CAD": {
+ "name": "دالر کانادا",
+ "symbol": "$CA"
+ },
+ "VND": {
+ "name": "دانگ ویتنام",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "درم ارمنستان",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم امارات متحدهٔ عربی",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "درهم مراکش",
+ "symbol": "MAD"
+ },
+ "BBD": {
+ "name": "دلار باربادوس",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "دلار باهاما",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "دلار برمودا",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "دلار بلیز",
+ "symbol": "BZD"
+ },
+ "TTD": {
+ "name": "دلار ترینیداد و توباگو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دلار جامائیکا",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "دلار جدید تایوان",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "دلار جزایر سلیمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دلار جزایر کِیمن",
+ "symbol": "KYD"
+ },
+ "NZD": {
+ "name": "دلار زلاند نو",
+ "symbol": "$NZ"
+ },
+ "ZWL": {
+ "name": "دلار زیمبابوه (۲۰۰۹)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "دلار سورینام",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دلار شرق کارائیب",
+ "symbol": "$EC"
+ },
+ "FJD": {
+ "name": "دلار فیجی",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "دلار گویان",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "دلار لیبریا",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دلار نامیبیا",
+ "symbol": "NAD"
+ },
+ "HKD": {
+ "name": "دلار هنگ‌کنگ",
+ "symbol": "$HK"
+ },
+ "STD": {
+ "name": "دوبرای سائوتومه و پرنسیپ",
+ "symbol": "STD"
+ },
+ "JOD": {
+ "name": "دینار اردن",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "دینار الجزایر",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "دینار بحرین",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "دینار تونس",
+ "symbol": "TND"
+ },
+ "RSD": {
+ "name": "دینار صربستان",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دینار عراق",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "دینار کویت",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "دینار لیبی",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "دینار مقدونیه",
+ "symbol": "MKD"
+ },
+ "ZAR": {
+ "name": "راند افریقای جنوبی",
+ "symbol": "ZAR"
+ },
+ "RUB": {
+ "name": "روبل روسیه",
+ "symbol": "RUB"
+ },
+ "BYR": {
+ "name": "روبل روسیهٔ سفید",
+ "symbol": "BYR"
+ },
+ "IDR": {
+ "name": "روپیهٔ اندونزی",
+ "symbol": "IDR"
+ },
+ "PKR": {
+ "name": "روپیهٔ پاکستان",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "روپیهٔ سری‌لانکا",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روپیهٔ سیشل",
+ "symbol": "SCR"
+ },
+ "MVR": {
+ "name": "روپیهٔ مالدیو",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "روپیهٔ موریس",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روپیهٔ نپال",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روپیهٔ هند",
+ "symbol": "₹"
+ },
+ "KHR": {
+ "name": "ری‌یل کامبوج",
+ "symbol": "KHR"
+ },
+ "IRR": {
+ "name": "ریال ایران",
+ "symbol": "ریال"
+ },
+ "BRL": {
+ "name": "رئال برزیل",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "ریال سعودی",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "ریال عمان",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "ریال قطر",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "ریال یمن",
+ "symbol": "YER"
+ },
+ "MYR": {
+ "name": "رینگیت مالزی",
+ "symbol": "MYR"
+ },
+ "PLN": {
+ "name": "زواتی لهستان",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "سامانی تاجکستان",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سدی غنا",
+ "symbol": "GHS"
+ },
+ "UZS": {
+ "name": "سوم ازبکستان",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قرقیزستان",
+ "symbol": "KGS"
+ },
+ "ILS": {
+ "name": "شقل جدید اسرائیل",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "شیلینگ اوگاندا",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شیلینگ تانزانیا",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شیلینگ سومالی",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شیلینگ کنیا",
+ "symbol": "KES"
+ },
+ "XOF": {
+ "name": "فرانک CFA غرب آفریقا",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "فرانک CFA مرکز آفریقا",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "فرانک CFP",
+ "symbol": "CFPF"
+ },
+ "BIF": {
+ "name": "فرانک بوروندی",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "فرانک جیبوتی",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "فرانک رواندا",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "فرانک سویس",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "فرانک کنگو",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "فرانک کومورو",
+ "symbol": "KMF"
+ },
+ "GNF": {
+ "name": "فرانک گینه",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "فلورین آروبا",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "فورینت مجارستان",
+ "symbol": "HUF"
+ },
+ "GTQ": {
+ "name": "کتزال گواتمالا",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "کرون دنمارک",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "کرون سویدن",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "کرون ناروی",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "کرونای ایسلند",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "کواچای زامبیا",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "کواچای مالاوی",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "کوانزای آنگولا",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "کوردوبای نیکاراگوئه",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "کورونای جمهوری چک",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "کولون کاستاریکا",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "کونای کرواسی",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "کیات میانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "کیپ لائوس",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "کینای پاپوا گینهٔ نو",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "گوارانی پاراگوئه",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "گورد هائیتی",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "گیلدر آنتیل هلند",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "لاری گرجستان",
+ "symbol": "GEL"
+ },
+ "BGN": {
+ "name": "لف بلغارستان",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "لک آلبانی",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "لمپیرای هندوراس",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "لوتی لسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "لیتاس لیتوانی",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "لیرهٔ ترکیه",
+ "symbol": "TRY"
+ },
+ "SDG": {
+ "name": "لیرهٔ سودان",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "لیرهٔ سوریه",
+ "symbol": "SYP"
+ },
+ "LBP": {
+ "name": "لیرهٔ لبنان",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "لیرهٔ مصر",
+ "symbol": "EGP"
+ },
+ "SZL": {
+ "name": "لیلانگنی سوازیلند",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "لئون سیرالئون",
+ "symbol": "SLL"
+ },
+ "RON": {
+ "name": "لئوی رومانی",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "لئوی مولداوی",
+ "symbol": "MDL"
+ },
+ "BAM": {
+ "name": "مارک تبدیل‌پذیر بوسنی و هرزگوین",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "متیکال موزامبیک",
+ "symbol": "MZN"
+ },
+ "TMT": {
+ "name": "منات ترکمنستان",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "منات جمهوری آذربایجان",
+ "symbol": "AZN"
+ },
+ "ERN": {
+ "name": "ناکفای اریتره",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نایرای نیجریه",
+ "symbol": "NGN"
+ },
+ "PEN": {
+ "name": "نوئووسول پرو",
+ "symbol": "PEN"
+ },
+ "UAH": {
+ "name": "هریونیای اوکراین",
+ "symbol": "UAH"
+ },
+ "VUV": {
+ "name": "واتوی وانوواتو",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "وون کرهٔ جنوبی",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "وون کرهٔ شمالی",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "ین جاپان",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "یوآن چین",
+ "symbol": "¥CN"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fa.json b/library/intl/resources/currency/fa.json
new file mode 100644
index 000000000..ec4a25fc1
--- /dev/null
+++ b/library/intl/resources/currency/fa.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "MGA": {
+ "name": "آریاری مالاگاسی",
+ "symbol": "MGA"
+ },
+ "CVE": {
+ "name": "اسکودوی کیپ‌ورد",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "افغانی افغانستان",
+ "symbol": "؋"
+ },
+ "BTN": {
+ "name": "انگولتروم بوتان",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "اوگوئیای موریتانی",
+ "symbol": "MRO"
+ },
+ "THB": {
+ "name": "بات تایلند",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوای پاناما",
+ "symbol": "PAB"
+ },
+ "VEF": {
+ "name": "بولیوار ونزوئلا",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بولیویانوی بولیوی",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بیر اتیوپی",
+ "symbol": "ETB"
+ },
+ "TOP": {
+ "name": "پاآنگای تونگا",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "پاتاکای ماکائو",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "پزوی آرژانتین",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "پزوی اوروگوئه",
+ "symbol": "UYU"
+ },
+ "CUC": {
+ "name": "پزوی تبدیل‌پذیر کوبا",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "پزوی جمهوری دومینیکن",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "پزوی شیلی",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "پزوی فیلیپین",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "پزوی کلمبیا",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "پزوی کوبا",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "پزوی مکزیک",
+ "symbol": "$MX"
+ },
+ "BWP": {
+ "name": "پولای بوتسوانا",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "پوند بریتانیا",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "پوند جبل‌الطارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "پوند جزایر فالکلند",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "پوند سنت هلن",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "پوند سودان جنوبی",
+ "symbol": "SSP"
+ },
+ "BDT": {
+ "name": "تاکای بنگلادش",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالای ساموا",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "تنگهٔ قزاقستان",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "توگریک مغولستان",
+ "symbol": "MNT"
+ },
+ "GMD": {
+ "name": "دالاسی گامبیا",
+ "symbol": "GMD"
+ },
+ "VND": {
+ "name": "دانگ ویتنام",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "درم ارمنستان",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم امارات متحدهٔ عربی",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "درهم مراکش",
+ "symbol": "MAD"
+ },
+ "AUD": {
+ "name": "دلار استرالیا",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "دلار امریکا",
+ "symbol": "$"
+ },
+ "BBD": {
+ "name": "دلار باربادوس",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "دلار باهاما",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "دلار برمودا",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "دلار برونئی",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "دلار بلیز",
+ "symbol": "BZD"
+ },
+ "TTD": {
+ "name": "دلار ترینیداد و توباگو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دلار جامائیکا",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "دلار جدید تایوان",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "دلار جزایر سلیمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دلار جزایر کِیمن",
+ "symbol": "KYD"
+ },
+ "NZD": {
+ "name": "دلار زلاند نو",
+ "symbol": "$NZ"
+ },
+ "ZWL": {
+ "name": "دلار زیمبابوه (۲۰۰۹)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "دلار سنگاپور",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "دلار سورینام",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دلار شرق کارائیب",
+ "symbol": "$EC"
+ },
+ "FJD": {
+ "name": "دلار فیجی",
+ "symbol": "FJD"
+ },
+ "CAD": {
+ "name": "دلار کانادا",
+ "symbol": "$CA"
+ },
+ "GYD": {
+ "name": "دلار گویان",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "دلار لیبریا",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دلار نامیبیا",
+ "symbol": "NAD"
+ },
+ "HKD": {
+ "name": "دلار هنگ‌کنگ",
+ "symbol": "$HK"
+ },
+ "STD": {
+ "name": "دوبرای سائوتومه و پرنسیپ",
+ "symbol": "STD"
+ },
+ "JOD": {
+ "name": "دینار اردن",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "دینار الجزایر",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "دینار بحرین",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "دینار تونس",
+ "symbol": "TND"
+ },
+ "RSD": {
+ "name": "دینار صربستان",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دینار عراق",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "دینار کویت",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "دینار لیبی",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "دینار مقدونیه",
+ "symbol": "MKD"
+ },
+ "ZAR": {
+ "name": "راند افریقای جنوبی",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "رئال برزیل",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "روبل بیلوروسی",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "روبل روسیه",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "روپیهٔ اندونزی",
+ "symbol": "IDR"
+ },
+ "PKR": {
+ "name": "روپیهٔ پاکستان",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "روپیهٔ سری‌لانکا",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روپیهٔ سیشل",
+ "symbol": "SCR"
+ },
+ "MVR": {
+ "name": "روپیهٔ مالدیو",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "روپیهٔ موریس",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روپیهٔ نپال",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روپیهٔ هند",
+ "symbol": "₹"
+ },
+ "IRR": {
+ "name": "ریال ایران",
+ "symbol": "ریال"
+ },
+ "SAR": {
+ "name": "ریال سعودی",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "ریال عمان",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "ریال قطر",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "ریال یمن",
+ "symbol": "YER"
+ },
+ "MYR": {
+ "name": "رینگیت مالزی",
+ "symbol": "MYR"
+ },
+ "KHR": {
+ "name": "ری‌یل کامبوج",
+ "symbol": "KHR"
+ },
+ "PLN": {
+ "name": "زواتی لهستان",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "سامانی تاجیکستان",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سدی غنا",
+ "symbol": "GHS"
+ },
+ "UZS": {
+ "name": "سوم ازبکستان",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قرقیزستان",
+ "symbol": "KGS"
+ },
+ "ILS": {
+ "name": "شقل جدید اسرائیل",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "شیلینگ اوگاندا",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شیلینگ تانزانیا",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شیلینگ سومالی",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شیلینگ کنیا",
+ "symbol": "KES"
+ },
+ "XOF": {
+ "name": "فرانک CFA غرب آفریقا",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "فرانک CFA مرکز آفریقا",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "فرانک CFP",
+ "symbol": "CFPF"
+ },
+ "BIF": {
+ "name": "فرانک بوروندی",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "فرانک جیبوتی",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "فرانک رواندا",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "فرانک سوئیس",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "فرانک کنگو",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "فرانک کومورو",
+ "symbol": "KMF"
+ },
+ "GNF": {
+ "name": "فرانک گینه",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "فلورین آروبا",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "فورینت مجارستان",
+ "symbol": "HUF"
+ },
+ "GTQ": {
+ "name": "کتزال گواتمالا",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "کرون دانمارک",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "کرون سوئد",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "کرون نروژ",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "کرونای ایسلند",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "کواچای زامبیا",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "کواچای مالاوی",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "کوانزای آنگولا",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "کوردوبای نیکاراگوئه",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "کورونای جمهوری چک",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "کولون کاستاریکا",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "کونای کرواسی",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "کیات میانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "کیپ لائوس",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "کینای پاپوا گینهٔ نو",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "گوارانی پاراگوئه",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "گورد هائیتی",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "گیلدر آنتیل هلند",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "لاری گرجستان",
+ "symbol": "GEL"
+ },
+ "SLL": {
+ "name": "لئون سیرالئون",
+ "symbol": "SLL"
+ },
+ "RON": {
+ "name": "لئوی رومانی",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "لئوی مولداوی",
+ "symbol": "MDL"
+ },
+ "BGN": {
+ "name": "لف بلغارستان",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "لک آلبانی",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "لمپیرای هندوراس",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "لوتی لسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "لیتاس لیتوانی",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "لیرهٔ ترکیه",
+ "symbol": "TRY"
+ },
+ "SDG": {
+ "name": "لیرهٔ سودان",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "لیرهٔ سوریه",
+ "symbol": "SYP"
+ },
+ "LBP": {
+ "name": "لیرهٔ لبنان",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "لیرهٔ مصر",
+ "symbol": "EGP"
+ },
+ "SZL": {
+ "name": "لیلانگنی سوازیلند",
+ "symbol": "SZL"
+ },
+ "BAM": {
+ "name": "مارک تبدیل‌پذیر بوسنی و هرزگوین",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "متیکال موزامبیک",
+ "symbol": "MZN"
+ },
+ "TMT": {
+ "name": "منات ترکمنستان",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "منات جمهوری آذربایجان",
+ "symbol": "AZN"
+ },
+ "ERN": {
+ "name": "ناکفای اریتره",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نایرای نیجریه",
+ "symbol": "NGN"
+ },
+ "PEN": {
+ "name": "نوئووسول پرو",
+ "symbol": "PEN"
+ },
+ "VUV": {
+ "name": "واتوی وانوواتو",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "وون کرهٔ جنوبی",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "وون کرهٔ شمالی",
+ "symbol": "KPW"
+ },
+ "UAH": {
+ "name": "هریونیای اوکراین",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "ین ژاپن",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "یوآن چین",
+ "symbol": "¥CN"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ff.json b/library/intl/resources/currency/ff.json
new file mode 100644
index 000000000..e3f6bbe17
--- /dev/null
+++ b/library/intl/resources/currency/ff.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariyari Madagaskaar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biir Ecoppi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi Gammbi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaar Alaseri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaar Bahrayn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaar Libi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinaar Tunisii",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diraham Maruk",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Emiraati Araab Dentuɗi",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra Sawo Tome e Prensipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolaar Dowlaaji Dentuɗi",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolaar Kandaaa",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolaar Liberiyaa",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolaar Namibii",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dolaar Ostaraalii",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudoo Kap Weer",
+ "symbol": "CVE"
+ },
+ "DJF": {
+ "name": "Faraa Jibutii",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faraa Komoor",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faraa Konngo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faraa Ruwanndaa",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faraa Suwiis",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kuwacca Malaawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kuwacca Sammbi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwansaa Anngolaa",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewoon Seraa Liyon",
+ "symbol": "SLL"
+ },
+ "EGP": {
+ "name": "Liibar Ejipt",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Liibar Sent Helen",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Liibar Sterling",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Liibar Sudaan",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaasilannda",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti Lesotoo",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "XAF": {
+ "name": "Mbuuɗi Seefaa BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Mbuuɗu Burunndi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Mbuuɗu Seefaa BCEAO",
+ "symbol": "CFA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka Eriteree",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayraa Nijeriyaa",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "EUR": {
+ "name": "Oroo",
+ "symbol": "€"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pulaa Botwanaa",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rannda Afrik Bŋ Worgo",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaal Arabi Sawdit",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupii Enndo",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupii Moriis",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupii Seysel",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Siling Keñaa",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Siling Soomali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Siling Tansanii",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Siling Uganndaa",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugiyya Muritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen Sapoo",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuam Siin",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fi.json b/library/intl/resources/currency/fi.json
new file mode 100644
index 000000000..c86cc0d33
--- /dev/null
+++ b/library/intl/resources/currency/fi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistanin afgaani",
+ "symbol": "AFN"
+ },
+ "ANG": {
+ "name": "Alankomaiden Antillien guldeni",
+ "symbol": "ANG"
+ },
+ "ALL": {
+ "name": "Albanian lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian dinaari",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabiemiirikuntien dirhami",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentiinan peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban floriini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian dollari",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbaidžanin manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahaman dollari",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrainin dinaari",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshin taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosin dollari",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizen dollari",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan dollari",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanin ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Hertsegovinan vaihdettava markka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilian real",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "Brunein dollari",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundin frangi",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Caymansaarten dollari",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-frangi BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frangi BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frangi",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "Chilen peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa Rican colon",
+ "symbol": "CRC"
+ },
+ "DJF": {
+ "name": "Djiboutin frangi",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanisen tasavallan peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptin punta",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El Salvadorin colon",
+ "symbol": "SVC"
+ },
+ "GBP": {
+ "name": "Englannin punta",
+ "symbol": "£"
+ },
+ "ERN": {
+ "name": "Eritrean nakfa",
+ "symbol": "ERN"
+ },
+ "ZAR": {
+ "name": "Etelä-Afrikan randi",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Etelä-Korean won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Etelä-Sudanin punta",
+ "symbol": "SSP"
+ },
+ "ETB": {
+ "name": "Etiopian birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandinsaarten punta",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidžin dollari",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippiinien peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambian dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanan cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarin punta",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean frangi",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanan dollari",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitin gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurasin lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongin dollari",
+ "symbol": "HKD"
+ },
+ "IDR": {
+ "name": "Indonesian rupia",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "Intian rupia",
+ "symbol": "INR"
+ },
+ "IQD": {
+ "name": "Irakin dinaari",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranin rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islannin kruunu",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelin uusi sekeli",
+ "symbol": "ILS"
+ },
+ "XCD": {
+ "name": "Itä-Karibian dollari",
+ "symbol": "XCD"
+ },
+ "JMD": {
+ "name": "Jamaikan dollari",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanin jeni",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemenin rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanian dinaari",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambodžan riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadan dollari",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "Kap Verden escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kazakstanin tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenian šillinki",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kiinan yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgisian som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbian peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorien frangi",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongon frangi",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatian kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kuuban peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kuuban vaihdettava peso",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwaitin dinaari",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laosin kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothon loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanonin punta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberian dollari",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan dinaari",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Liettuan liti",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaon pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskarin ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedonian denaari",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawin kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Malediivien rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malesian ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokon dirhami",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritanian ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiuksen rupia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikon peso",
+ "symbol": "MXN"
+ },
+ "MDL": {
+ "name": "Moldovan leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikin metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarin kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian dollari",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalin rupia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguan cordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "Norjan kruunu",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanin rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanin rupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panaman balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Uuden-Guinean kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayn guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Perun uusi sol",
+ "symbol": "PEN"
+ },
+ "KPW": {
+ "name": "Pohjois-Korean won",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "Puolan zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarin rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Ruandan frangi",
+ "symbol": "RWF"
+ },
+ "SEK": {
+ "name": "Ruotsin kruunu",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Saint Helenan punta",
+ "symbol": "SHP"
+ },
+ "SBD": {
+ "name": "Salomonsaarten dollari",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Sambian kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samoan tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomén ja Príncipen dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Arabian rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian dinaari",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellien rupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonen leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporen dollari",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalian šillinki",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankan rupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanin punta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamin dollari",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "Sveitsin frangi",
+ "symbol": "CHF"
+ },
+ "SZL": {
+ "name": "Swazimaan lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syyrian punta",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadžikistanin somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Taiwanin uusi dollari",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tansanian šillinki",
+ "symbol": "TZS"
+ },
+ "DKK": {
+ "name": "Tanskan kruunu",
+ "symbol": "DKK"
+ },
+ "THB": {
+ "name": "Thaimaan baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "Tongan pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadin ja Tobagon dollari",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tšekin koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunisian dinaari",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkin liira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistanin manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan šillinki",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainan hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Unkarin forintti",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayn peso",
+ "symbol": "UYU"
+ },
+ "NZD": {
+ "name": "Uuden-Seelannin dollari",
+ "symbol": "NZD"
+ },
+ "UZS": {
+ "name": "Uzbekistanin som",
+ "symbol": "UZS"
+ },
+ "BYR": {
+ "name": "Valko-Venäjän rupla",
+ "symbol": "BYR"
+ },
+ "VUV": {
+ "name": "Vanuatun vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan bolivar",
+ "symbol": "VEF"
+ },
+ "RUB": {
+ "name": "Venäjän rupla",
+ "symbol": "RUB"
+ },
+ "VND": {
+ "name": "Vietnamin dong",
+ "symbol": "VND"
+ },
+ "USD": {
+ "name": "Yhdysvaltain dollari",
+ "symbol": "$"
+ },
+ "ZWL": {
+ "name": "Zimbabwen dollari (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fil.json b/library/intl/resources/currency/fil.json
new file mode 100644
index 000000000..78101b28e
--- /dev/null
+++ b/library/intl/resources/currency/fil.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CUC": {
+ "name": "Convertible na Piso ng Cuba",
+ "symbol": "CUC"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Denmark Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "AUD": {
+ "name": "Dolyar ng Australya",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dolyar ng Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolyar ng Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dolyar ng Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolyar ng Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolyar ng Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dolyar ng Canada",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Dolyar ng Cayman Islands",
+ "symbol": "KYD"
+ },
+ "FJD": {
+ "name": "Dolyar ng Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolyar ng Guyanese",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolyar ng Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolyar ng Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dolyar ng Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolyar ng Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Dolyar ng New Taiwan",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Dolyar ng New Zealand",
+ "symbol": "NZ$"
+ },
+ "XCD": {
+ "name": "Dolyar ng Silangang Caribbean",
+ "symbol": "EC$"
+ },
+ "SGD": {
+ "name": "Dolyar ng Singapore",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Dolyar ng Solomon Islands",
+ "symbol": "SBD"
+ },
+ "SRD": {
+ "name": "Dolyar ng Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolyar ng Trinidad and Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dolyar ng US",
+ "symbol": "$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "CLP": {
+ "name": "Piso ng Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Piso ng Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Piso ng Cuba",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Piso ng Dominican",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Piso ng Mexico",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Piso ng Pilipinas",
+ "symbol": "₱"
+ },
+ "UYU": {
+ "name": "Piso ng Uruguay",
+ "symbol": "UYU"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome and Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fo.json b/library/intl/resources/currency/fo.json
new file mode 100644
index 000000000..71b2801fb
--- /dev/null
+++ b/library/intl/resources/currency/fo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "donsk króna",
+ "symbol": "kr"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "íslendsk króna",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norsk króna",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "svensk króna",
+ "symbol": "SEK"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fr-CA.json b/library/intl/resources/currency/fr-CA.json
new file mode 100644
index 000000000..93d2ddc07
--- /dev/null
+++ b/library/intl/resources/currency/fr-CA.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani afghan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thaïlandais",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panaméen",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr éthiopien",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar vénézuélien",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivien",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cédi ghanéen",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costaricain",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorien",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaraguayen",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "couronne danoise",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "couronne islandaise",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "couronne norvégienne",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "couronne suédoise",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "couronne tchèque",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macédonien",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algérien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar irakien",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanien",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar koweïtien",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libyen",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbe",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham des Émirats arabes unis",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocain",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra santoméen",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australien",
+ "symbol": "$ AU"
+ },
+ "BSD": {
+ "name": "dollar bahaméen",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dollar barbadien",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar bélizéen",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dollar bermudien",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dollar brunéien",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dollar canadien",
+ "symbol": "$"
+ },
+ "HKD": {
+ "name": "dollar de Hong Kong",
+ "symbol": "$ HK"
+ },
+ "SGD": {
+ "name": "dollar de Singapour",
+ "symbol": "$ SG"
+ },
+ "TTD": {
+ "name": "dollar de Trinité-et-Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dollar des Caraïbes orientales",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dollar des États-Unis",
+ "symbol": "$ US"
+ },
+ "KYD": {
+ "name": "dollar des îles Caïmans",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar des îles Salomon",
+ "symbol": "SBD"
+ },
+ "GYD": {
+ "name": "dollar du Guyana",
+ "symbol": "GYD"
+ },
+ "SRD": {
+ "name": "dollar du Suriname",
+ "symbol": "SRD"
+ },
+ "FJD": {
+ "name": "dollar fidjien",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "dollar jamaïcain",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar libérien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibien",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dollar néo-zélandais",
+ "symbol": "$ NZ"
+ },
+ "ZWL": {
+ "name": "dollar zimbabwéen (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dông vietnamien",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram arménien",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo du Cap-Vert",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin antillais",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin arubais",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint hongrois",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundais",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA (BCEAO)",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franc CFA (BEAC)",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "XPF"
+ },
+ "KMF": {
+ "name": "franc comorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutien",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "franc guinéen",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc suisse",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haïtienne",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguayen",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ukrainienne",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina papou-néo-guinéen",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laotien",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croate",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolais",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat myanmarais",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari géorgien",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanais",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurien",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierra-léonais",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldave",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu roumain",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev bulgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituanien",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "livre de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "livre des Îles Malouines",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "livre égyptienne",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "livre libanaise",
+ "symbol": "LBP"
+ },
+ "SDG": {
+ "name": "livre soudanaise",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£"
+ },
+ "SSP": {
+ "name": "livre sud-soudanaise",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "livre syrienne",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "livre turque",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "loti lesothan",
+ "symbol": "lLS"
+ },
+ "AZN": {
+ "name": "manat azerbaïdjanais",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "mark convertible bosniaque",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicain",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka érythréen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nigérian",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "ngultrum bouthanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nouveau dollar taïwanais",
+ "symbol": "TWD"
+ },
+ "TMT": {
+ "name": "nouveau manat turkmène",
+ "symbol": "TMT"
+ },
+ "ILS": {
+ "name": "nouveau shekel israélien",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nouveau sol péruvien",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanien",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca macanaise",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilien",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombien",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubain",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubain convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicain",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "peso mexicain",
+ "symbol": "MXN"
+ },
+ "PHP": {
+ "name": "peso philippin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "peso uruguayen",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botswanais",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatémaltèque",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africain",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "réal brésilien",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranien",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanais",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yéménite",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgien",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malais",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal du Qatar",
+ "symbol": "QAR"
+ },
+ "BYR": {
+ "name": "rouble biélorusse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rouble russe",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "roupie des Seychelles",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "roupie indienne",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "roupie indonésienne",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupie mauricienne",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupie népalaise",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupie pakistanaise",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "roupie srilankaise",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa maldivien",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "shilling kényan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling ougandais",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling somalien",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanien",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som kirghize",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum ouzbek",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coréen",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coréen",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonais",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinois",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty polonais",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fr.json b/library/intl/resources/currency/fr.json
new file mode 100644
index 000000000..848251d4c
--- /dev/null
+++ b/library/intl/resources/currency/fr.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani afghan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thaïlandais",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panaméen",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr éthiopien",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar vénézuélien",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivien",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cédi ghanéen",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costaricain",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorien",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaraguayen",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "couronne danoise",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "couronne islandaise",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "couronne norvégienne",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "couronne suédoise",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "couronne tchèque",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macédonien",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algérien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar irakien",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanien",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar koweïtien",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libyen",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbe",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham des Émirats arabes unis",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocain",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra santoméen",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australien",
+ "symbol": "$AU"
+ },
+ "BSD": {
+ "name": "dollar bahaméen",
+ "symbol": "$BS"
+ },
+ "BBD": {
+ "name": "dollar barbadien",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar bélizéen",
+ "symbol": "$BZ"
+ },
+ "BMD": {
+ "name": "dollar bermudien",
+ "symbol": "$BM"
+ },
+ "BND": {
+ "name": "dollar brunéien",
+ "symbol": "$BN"
+ },
+ "CAD": {
+ "name": "dollar canadien",
+ "symbol": "$CA"
+ },
+ "HKD": {
+ "name": "dollar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "SGD": {
+ "name": "dollar de Singapour",
+ "symbol": "$SG"
+ },
+ "XCD": {
+ "name": "dollar des Caraïbes orientales",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dollar des États-Unis",
+ "symbol": "$US"
+ },
+ "KYD": {
+ "name": "dollar des îles Caïmans",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar des îles Salomon",
+ "symbol": "$SB"
+ },
+ "GYD": {
+ "name": "dollar du Guyana",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "dollar fidjien",
+ "symbol": "$FJ"
+ },
+ "JMD": {
+ "name": "dollar jamaïcain",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar libérien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibien",
+ "symbol": "$NA"
+ },
+ "NZD": {
+ "name": "dollar néo-zélandais",
+ "symbol": "$NZ"
+ },
+ "SRD": {
+ "name": "dollar surinamais",
+ "symbol": "$SR"
+ },
+ "TTD": {
+ "name": "dollar trinidadien",
+ "symbol": "$TT"
+ },
+ "ZWL": {
+ "name": "dollar zimbabwéen (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dông vietnamien",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram arménien",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo capverdien",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin antillais",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin arubais",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint hongrois",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundais",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "FCFP"
+ },
+ "KMF": {
+ "name": "franc comorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutien",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "franc guinéen",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc suisse",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haïtienne",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguayen",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ukrainienne",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina papouan-néo-guinéen",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip loatien",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croate",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolais",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat myanmarais",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari géorgien",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanais",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurien",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierra-léonais",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldave",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu roumain",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev bulgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituanien",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "livre de Gibraltar",
+ "symbol": "£GI"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "livre des Falkland",
+ "symbol": "£FK"
+ },
+ "EGP": {
+ "name": "livre égyptienne",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "livre libanaise",
+ "symbol": "£LB"
+ },
+ "SDG": {
+ "name": "livre soudanaise",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£GB"
+ },
+ "SSP": {
+ "name": "livre sud-soudanaise",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "livre syrienne",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "livre turque",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "loti lesothan",
+ "symbol": "lLS"
+ },
+ "AZN": {
+ "name": "manat azéri",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "mark convertible bosniaque",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicain",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka érythréen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nigérian",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "ngultrum bouthanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nouveau dollar taïwanais",
+ "symbol": "TWD"
+ },
+ "TMT": {
+ "name": "nouveau manat turkmène",
+ "symbol": "TMT"
+ },
+ "ILS": {
+ "name": "nouveau shekel israélien",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "nouveau sol péruvien",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanien",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongan",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca macanaise",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "$AR"
+ },
+ "CLP": {
+ "name": "peso chilien",
+ "symbol": "$CL"
+ },
+ "COP": {
+ "name": "peso colombien",
+ "symbol": "$CO"
+ },
+ "CUP": {
+ "name": "peso cubain",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubain convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicain",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "peso mexicain",
+ "symbol": "$MX"
+ },
+ "PHP": {
+ "name": "peso philippin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "peso uruguayen",
+ "symbol": "$UY"
+ },
+ "BWP": {
+ "name": "pula botswanais",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatémaltèque",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africain",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "réal brésilien",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranien",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanais",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatari",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yéménite",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgien",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malais",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rouble biélorusse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rouble russe",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "roupie des Seychelles",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "roupie indienne",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "roupie indonésienne",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupie mauricienne",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupie népalaise",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupie pakistanaise",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "roupie srilankaise",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa maldivien",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "shilling kényan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling ougandais",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling somalien",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanien",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som kirghize",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum ouzbek",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoan",
+ "symbol": "WS$"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuan",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coréen",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coréen",
+ "symbol": "₩"
+ },
+ "JPY": {
+ "name": "yen japonais",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinois",
+ "symbol": "CNY"
+ },
+ "PLN": {
+ "name": "zloty polonais",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fur.json b/library/intl/resources/currency/fur.json
new file mode 100644
index 000000000..70f49a170
--- /dev/null
+++ b/library/intl/resources/currency/fur.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "THB": {
+ "name": "baht tailandês",
+ "symbol": "THB"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "NIO": {
+ "name": "Córdoba oro nicaraguan",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "corone danese",
+ "symbol": "DKK"
+ },
+ "CZK": {
+ "name": "Corone de Republiche Ceche",
+ "symbol": "CZK"
+ },
+ "NOK": {
+ "name": "corone norvegjese",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corone svedese",
+ "symbol": "SEK"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DZD": {
+ "name": "Dinar algerin",
+ "symbol": "DZD"
+ },
+ "RSD": {
+ "name": "Dinar serp",
+ "symbol": "RSD"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "USD": {
+ "name": "dolar american",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "dolar australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dolar canadês",
+ "symbol": "CA$"
+ },
+ "BND": {
+ "name": "Dolar dal Brunei",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "dolar di Hong Kong",
+ "symbol": "HK$"
+ },
+ "NAD": {
+ "name": "Dolar namibian",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollar neozelandês",
+ "symbol": "NZ$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "AMD": {
+ "name": "Dram armen",
+ "symbol": "AMD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Franc burundês",
+ "symbol": "BIF"
+ },
+ "CHF": {
+ "name": "franc svuizar",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "TWD": {
+ "name": "gnûf dolar taiwanês",
+ "symbol": "NT$"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "HRK": {
+ "name": "Kuna cravuate",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "TRY": {
+ "name": "lire turche",
+ "symbol": "TRY"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "ARS": {
+ "name": "Peso argjentin",
+ "symbol": "ARS"
+ },
+ "CUP": {
+ "name": "Peso cuban",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "peso messican",
+ "symbol": "MX$"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rand sudafrican",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilian",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial iranian",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "riyal de Arabie Saudite",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "BYR": {
+ "name": "Rubli bielorùs",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubli rus",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "rupiah indonesiane",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "rupie indiane",
+ "symbol": "₹"
+ },
+ "PKR": {
+ "name": "Rupie pachistane",
+ "symbol": "PKR"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "GBP": {
+ "name": "sterline britaniche",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "won de Coree dal Sud",
+ "symbol": "₩"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen gjaponês",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan cinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty polac",
+ "symbol": "PLN"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fy.json b/library/intl/resources/currency/fy.json
new file mode 100644
index 000000000..0c3f71931
--- /dev/null
+++ b/library/intl/resources/currency/fy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghaanske afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerynske dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanske dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentynske peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanske gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australyske dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbeidzjaanske manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamaanske dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "Barbadaanske dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizaanske dollar",
+ "symbol": "BZD"
+ },
+ "BDT": {
+ "name": "Bengalese taka",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutaanske ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanske boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnyske convertibele mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswaanske pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliaanske real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brits pûn sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundese frank",
+ "symbol": "BIF"
+ },
+ "CAD": {
+ "name": "Canadese dollar",
+ "symbol": "C$"
+ },
+ "KYD": {
+ "name": "Caymaneilânske dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CDF": {
+ "name": "Congolese frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costaricaanske colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Deenske kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutiaanske frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanske peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East-Karibyske dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptysk pûn",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopyske birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklâneilânske pûn",
+ "symbol": "FKP"
+ },
+ "VEF": {
+ "name": "Fenezolaanske bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Fietnameeske dong",
+ "symbol": "₫"
+ },
+ "FJD": {
+ "name": "Fiji-dollar",
+ "symbol": "FJ$"
+ },
+ "PHP": {
+ "name": "Filipynske peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiaanske dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgyske lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarees pûn",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalteekse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyaanske dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanske gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hongaarse forint",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "Hongkongske dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indiase roepie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesyske roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraanske rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israëlyske nieuwe shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikaanske dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanse yen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "Jemenityske rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanske dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaapverdyske escudo",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Kambodjaanske riel",
+ "symbol": "KHR"
+ },
+ "QAR": {
+ "name": "Katarese rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazachstaanske tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanske shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizyske som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "COP": {
+ "name": "Kolombiaanske peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorese frank",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "Kroatyske kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubaanske convertibele peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubaanske peso",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laotiaanske kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothaanske loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libaneeske pûn",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanske dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyske dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litouwse litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macause pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonyske denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagassyske ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawyske kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivyske rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisyske ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkaanske dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaanske ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanske roepie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikaanske peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldavyske leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoalske tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikaanske metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarese kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibyske dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlânsk-Antilliaanske gûne",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanske córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeriaanske naira",
+ "symbol": "NGN"
+ },
+ "NZD": {
+ "name": "Nij-Seelânske dollar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Nije Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "KPW": {
+ "name": "Noard-Koreaanske won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noarske kroon",
+ "symbol": "NOK"
+ },
+ "UGX": {
+ "name": "Oegandese shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Oekraïense hryvnia",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbekistaanske sum",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanske rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistaanske roepie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuaanske kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayaanske guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanske nieuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poalske zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Roemeenske leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russyske roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon-dollar",
+ "symbol": "SI$"
+ },
+ "SVC": {
+ "name": "Salvadoraanske colón",
+ "symbol": "SVC"
+ },
+ "ZMW": {
+ "name": "Sambiaanske kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samoaanske tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santomese dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabyske riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Servyske dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelse roepie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleoonse leone",
+ "symbol": "SLL"
+ },
+ "CLP": {
+ "name": "Sileenske peso",
+ "symbol": "CLP"
+ },
+ "ZWL": {
+ "name": "Simbabwaanske dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "CNY": {
+ "name": "Sineeske yuan renminbi",
+ "symbol": "CN¥"
+ },
+ "SGD": {
+ "name": "Singaporese dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint-Heleenske pûn",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Soedaneeske pûn",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somalyske shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanske roepie",
+ "symbol": "LKR"
+ },
+ "ZAR": {
+ "name": "Sûd-Afrikaanske rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sûd-Koreaanske won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Sûd-Soedaneeske pûn",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinaamske dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazyske lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Sweedske kroon",
+ "symbol": "SEK"
+ },
+ "SYP": {
+ "name": "Syrysk pûn",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadzjikistaanske somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniaanske shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanske paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjechyske kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesyske dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lira",
+ "symbol": "TRY"
+ },
+ "UYU": {
+ "name": "Uruguayaanske peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuaanske vatu",
+ "symbol": "VUV"
+ },
+ "AED": {
+ "name": "Verenigde Arabyske Emiraten-dirham",
+ "symbol": "AED"
+ },
+ "BYR": {
+ "name": "Wit-Russyske roebel",
+ "symbol": "BYR"
+ },
+ "ISK": {
+ "name": "Yslânske kroon",
+ "symbol": "ISK"
+ },
+ "CHF": {
+ "name": "Zwitserse frank",
+ "symbol": "CHF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ga.json b/library/intl/resources/currency/ga.json
new file mode 100644
index 000000000..e0ad08f53
--- /dev/null
+++ b/library/intl/resources/currency/ga.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani na hAfganastáine",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Mhadagascar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht na Téalainne",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Phanama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr na hAetóipe",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Veiniséala",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghána",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Chósta Ríce",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón na Salvadóire",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicearagua",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Coróin na Danmhairge",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Coróin na hIorua",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coróin na Sualainne",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi na Gaimbia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar na Macadóine",
+ "symbol": "MKD"
+ },
+ "BHD": {
+ "name": "Dinar Bhairéin",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "Dinar Chuáit",
+ "symbol": "KWD"
+ },
+ "DZD": {
+ "name": "Dinar na hAilgéire",
+ "symbol": "DZD"
+ },
+ "IQD": {
+ "name": "Dinar na hIaráice",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar na hIordáine",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "Dinar na Libia",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar na Seirbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar na Túinéise",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham Aontas na nÉimíríochtaí Arabacha",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Mharacó",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra São Tomé agus Príncipe",
+ "symbol": "STD"
+ },
+ "BBD": {
+ "name": "Dollar Bharbadós",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "Dollar Bheirmiúda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dollar Bhrúiné",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dollar Cheanada",
+ "symbol": "CA$"
+ },
+ "FJD": {
+ "name": "Dollar Fhidsí",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dollar Hong Cong",
+ "symbol": "HK$"
+ },
+ "BZD": {
+ "name": "Dollar na Beilíse",
+ "symbol": "BZD"
+ },
+ "XCD": {
+ "name": "Dollar na Cairibe Thoir",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "Dollar na Guáine",
+ "symbol": "GYD"
+ },
+ "AUD": {
+ "name": "Dollar na hAstráile",
+ "symbol": "A$"
+ },
+ "JMD": {
+ "name": "Dollar na hIamáice",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dollar na Libéire",
+ "symbol": "LRD"
+ },
+ "BSD": {
+ "name": "Dollar na mBahámaí",
+ "symbol": "BSD"
+ },
+ "NAD": {
+ "name": "Dollar na Namaibe",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollar na Nua-Shéalainne",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Dollar Nua na Téaváine",
+ "symbol": "NT$"
+ },
+ "KYD": {
+ "name": "Dollar Oileáin Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollar Oileáin Sholomón",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "Dollar Oileán na Tríonóide agus Tobága",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dollar S.A.M.",
+ "symbol": "$"
+ },
+ "SGD": {
+ "name": "Dollar Shingeapór",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dollar Shuranam",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "Dong Vítneam",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram na hAirméine",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo Rinn Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Flóirín Arúba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint na hUngáire",
+ "symbol": "HUF"
+ },
+ "CDF": {
+ "name": "Franc an Chongó",
+ "symbol": "CDF"
+ },
+ "XOF": {
+ "name": "Franc CFA Iarthar na hAfraice",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA na hAfraice Láir",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "BIF": {
+ "name": "Franc na Burúine",
+ "symbol": "BIF"
+ },
+ "GNF": {
+ "name": "Franc na Guine",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "Franc na hEilvéise",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Franc Oileáin Chomóra",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "Franc Ruanda",
+ "symbol": "RWF"
+ },
+ "ANG": {
+ "name": "Gildear Aintillí na hÍsiltíre",
+ "symbol": "ANG"
+ },
+ "HTG": {
+ "name": "Gourde Háítí",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guaraní Pharagua",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia na hÚcráine",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Nua-Ghuine Phapua",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Phoblacht na Seice",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna na hÍoslainne",
+ "symbol": "ISK"
+ },
+ "HRK": {
+ "name": "Kuna na Cróite",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha na Maláive",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha na Saimbia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angóla",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Mhaenmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari na Seoirsia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek na hAlbáine",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Hondúras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Shiarra Leon",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu na Moldóive",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu na Rómáine",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev na Bulgáire",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni na Suasalainne",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira na Tuirce",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas na Liotuáine",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Leosóta",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat na hAsarbaiseáine",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat na Tuircméanastáine",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marg Inmhalartaithe na Boisnia-Heirseagaivéine",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mhósaimbíc",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira na Nigéire",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa na hEiritré",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum na Bútáine",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Pheiriú",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya na Máratáine",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Thonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Mhacao",
+ "symbol": "MOP"
+ },
+ "CUP": {
+ "name": "Peso Chúba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Inmhalartaithe Chúba",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Peso Mheicsiceo",
+ "symbol": "MX$"
+ },
+ "COP": {
+ "name": "Peso na Colóime",
+ "symbol": "COP"
+ },
+ "ARS": {
+ "name": "Peso na hAirgintíne",
+ "symbol": "ARS"
+ },
+ "PHP": {
+ "name": "Peso na nOileán Filipíneach",
+ "symbol": "PHP"
+ },
+ "DOP": {
+ "name": "Peso na Poblachta Doiminicí",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "Peso na Sile",
+ "symbol": "CLP"
+ },
+ "UYU": {
+ "name": "Peso Uragua",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula na Botsuáine",
+ "symbol": "BWP"
+ },
+ "GIP": {
+ "name": "Punt Ghiobráltar",
+ "symbol": "GIP"
+ },
+ "EGP": {
+ "name": "Punt na hÉigipte",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "Punt na Liobáine",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Punt na Siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Punt na Súdáine",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Punt na Súdáine Theas",
+ "symbol": "SSP"
+ },
+ "FKP": {
+ "name": "Punt Oileáin Fháclainne",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Punt San Héilin",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Punt Steirling",
+ "symbol": "£"
+ },
+ "GTQ": {
+ "name": "Quetzal Ghuatamala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand na hAfraice Theas",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real na Brasaíle",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "Rial Éimin",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial na hIaráine",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Óman",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel na Cambóide",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit na Malaeisia",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "Riyal Chatar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyal na hAraibe Sádaí",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rúbal na Bealarúise",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rúbal na Rúise",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Oileáin Mhaildíve",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rúipí na hIndia",
+ "symbol": "₹"
+ },
+ "PKR": {
+ "name": "Rúipí na Pacastáine",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rúipí na Séiséal",
+ "symbol": "SCR"
+ },
+ "NPR": {
+ "name": "Rúipí Neipeal",
+ "symbol": "NPR"
+ },
+ "MUR": {
+ "name": "Rúipí Oileán Mhuirís",
+ "symbol": "MUR"
+ },
+ "LKR": {
+ "name": "Rúipí Shrí Lanca",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah na hIndinéise",
+ "symbol": "IDR"
+ },
+ "KES": {
+ "name": "Scilling na Céinia",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Scilling na Somáile",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Scilling na Tansáine",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Scilling Uganda",
+ "symbol": "UGX"
+ },
+ "ILS": {
+ "name": "Seiceal Nua Iosrael",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som na Cirgeastáine",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "Somoni na Táidsíceastáine",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "Sum na hÚisbéiceastáine",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "Taka na Banglaidéise",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Shamó",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge na Casacstáine",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik na Mongóile",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatú",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won na Cóiré Theas",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won na Cóiré Thuaidh",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen na Seapáine",
+ "symbol": "¥"
+ },
+ "CNY": {
+ "name": "Yuan na Síne",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloty na Polainne",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gd.json b/library/intl/resources/currency/gd.json
new file mode 100644
index 000000000..af3986af0
--- /dev/null
+++ b/library/intl/resources/currency/gd.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanach",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagasgarach",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Tàidheach",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panamach",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Itiopach",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Bheinisealach",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Boilibhiach",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Gànach",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costa Rìceach",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón Salbhadorach",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Niocaragach",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gaimbitheach",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Masadonach",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Aildireach",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bachraineach",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "Dinar Cuibhèiteach",
+ "symbol": "KWD"
+ },
+ "IQD": {
+ "name": "Dinar Ioràcach",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Iòrdanach",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "Dinar Libitheach",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Sèirbeach",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tuiniseach",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Morocach",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham nan Iomaratan Arabach Aonaichte",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé agus Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dolar Astràilianach",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Dolar Barbadach",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Dolar Bathamach",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dolar Bearmùdach",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "Dolar Beilìseach",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "Dolar Brùnaigheach",
+ "symbol": "BND"
+ },
+ "KYD": {
+ "name": "Dolar Caimeanach",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Dolar Canadach",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dolar Caraibeach earach",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Dolar Diameugach",
+ "symbol": "JMD"
+ },
+ "SBD": {
+ "name": "Dolar Eileanan Sholaimh",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dolar Fìditheach",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guidheànach",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "LRD": {
+ "name": "Dolar Libèireach",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Naimibitheach",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dolar nan Stàitean Aonaichte",
+ "symbol": "$"
+ },
+ "NZD": {
+ "name": "Dolar Shealainn Nuaidh",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singeapòrach",
+ "symbol": "SGD"
+ },
+ "ZWL": {
+ "name": "Dolar Sìombabuthach (2009)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "Dolar Suranamach",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolar Thrianaid agus Thobago",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "Dolar ùr Taidh-Bhànach",
+ "symbol": "NT$"
+ },
+ "VND": {
+ "name": "Dong Bhiet-Namach",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram Airmeineach",
+ "symbol": "AMD"
+ },
+ "EUR": {
+ "name": "Eòro",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Escudo a’ Chip Uaine",
+ "symbol": "CVE"
+ },
+ "AWG": {
+ "name": "Florin Arùbach",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Ungaireach",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundaidheach",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA Afraga an Iar",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA Meadhan-Afragach",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comorosach",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congothach",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Diobùtaidheach",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Franc Eilbheiseach",
+ "symbol": "CHF"
+ },
+ "GNF": {
+ "name": "Franc Ginitheach",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rubhandach",
+ "symbol": "RWF"
+ },
+ "HTG": {
+ "name": "Gourde Haidhteach",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guaraní Paraguaidheach",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Gulden Eileanan Aintilia nan Tìrean Ìsle",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ucràineach",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Ghini Nuaidh Paputhaiche",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Làthosach",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Seiceach",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Innis Tìleach",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Suaineach",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Danmhairgeach",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Nirribheach",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Cròthaiseach",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malabhaidheach",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Sàimbitheach",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angòlach",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Miànmarach",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Cairtbheileach",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albàineach",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Hondùrach",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Siarra Leòmhannach",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldobhach",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romàineach",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgarach",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Suasaidheach",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turcach",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Liotuaineach",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Leasotach",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Asarbaideànach",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turcmanach",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark iompachail Bhosna agus Hearsagobhana",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mòsaimbiceach",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigèiriach",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eartrach",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Butànach",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "Ouguiya Moratàineach",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tongach",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Macàthuach",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argantaineach",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "Peso Coloimbeach",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cùbach",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Peso Doiminiceach",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipineach",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "Peso iompachail Cùbach",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Peso Meagsagach",
+ "symbol": "MX$"
+ },
+ "CLP": {
+ "name": "Peso Sileach",
+ "symbol": "CLP"
+ },
+ "UYU": {
+ "name": "Peso Uruguaidheach",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula Botsuanach",
+ "symbol": "BWP"
+ },
+ "GIP": {
+ "name": "Punnd Diobraltarach",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Punnd Eilean Naomh Eilidh",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Punnd Èipheiteach",
+ "symbol": "EGP"
+ },
+ "FKP": {
+ "name": "Punnd Fàclannach",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Punnd Leabanach",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "Punnd Sasannach",
+ "symbol": "£"
+ },
+ "SYP": {
+ "name": "Punnd Siridheach",
+ "symbol": "SYP"
+ },
+ "SSP": {
+ "name": "Punnd Sudàin a Deas",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Punnd Sudànach",
+ "symbol": "SDG"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatamalach",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afraga a Deas",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Braisileach",
+ "symbol": "R$"
+ },
+ "QAR": {
+ "name": "Rial Catarach",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Eamanach",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial Iorànach",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Omànach",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel Cambuideach",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaidheach",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Sabhdach",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rùbal Bealaruiseach",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rùbal Ruiseach",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maladaibheach",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee Innseanach",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Moiriseasach",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Neapàlach",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pagastànach",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seiseallach",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lancach",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Innd-Innseach",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel ùr Iosraeleach",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Ceineach",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilling Somàilitheach",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling Tansanaidheach",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Ugandach",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol ùr Pearùthach",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som Cìorgasach",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Usbagach",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Taidigeach",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladaiseach",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samothach",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Casachach",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolach",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatuthach",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Choirèa a Deas",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won Choirèa a Tuath",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Seapanach",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yuan Sìneach",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Złoty Pòlainneach",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gl.json b/library/intl/resources/currency/gl.json
new file mode 100644
index 000000000..dd76c8479
--- /dev/null
+++ b/library/intl/resources/currency/gl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani afgano",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht tailandés",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa panameño",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "Chelín kenyano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "Colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar alxeriano",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar de Baréin",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquí",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunesino",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinar xordano",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "Dirham dos Emiratos Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de San Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "$A"
+ },
+ "BZD": {
+ "name": "Dólar beliceño",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "$CA"
+ },
+ "XCD": {
+ "name": "Dólar Caribe-Leste",
+ "symbol": "EC$"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dólar das Bemudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "Dólar das Illas Caimán",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Illas Salomón",
+ "symbol": "SBD"
+ },
+ "BBD": {
+ "name": "Dólar de Barbados",
+ "symbol": "BBD"
+ },
+ "BND": {
+ "name": "Dólar de Brunei",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "$HK"
+ },
+ "SGD": {
+ "name": "Dólar de Singapur",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trinidade e Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "Dólar fixiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dólar güianés",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandés",
+ "symbol": "NZ$"
+ },
+ "SRD": {
+ "name": "Dólar surinamés",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "Dólar xamaicano",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo caboverdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "Florín das Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "Florín húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolés",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suízo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "Franco xibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "Grivna ucraína",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "Guaraní paraguaio",
+ "symbol": "PYG"
+ },
+ "JPY": {
+ "name": "Ien xaponés",
+ "symbol": "¥JP"
+ },
+ "CNY": {
+ "name": "Iuán chinés",
+ "symbol": "CN¥"
+ },
+ "MMK": {
+ "name": "Kiat birmano",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "Kina de Papúa Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha de Malaui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angoleño",
+ "symbol": "AOA"
+ },
+ "GEL": {
+ "name": "Lari xeorxiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanés",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romanés",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "Libra de Xibraltar",
+ "symbol": "GIP"
+ },
+ "GBP": {
+ "name": "Libra esterlina",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Libra exipcia",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilanxeni de Suacilandia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituana",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti de Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat acerbaixano",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco convertible de Bosnia e Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nixeriano",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanés",
+ "symbol": "$NT"
+ },
+ "ILS": {
+ "name": "Novo shequel israelí",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "Ouguiya mauritano",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso arxentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "$MX"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsuano",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "$R"
+ },
+ "YER": {
+ "name": "Rial iemení",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial omaní",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial qatarí",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel camboxano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo ruso",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupia de Mauricio",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia de Seixeles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia india",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "Rupia maldiva",
+ "symbol": "MVR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistaní",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "Sol novo peruano",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som quirguizo",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som usbeco",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni taxico",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge casaco",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu vanuatense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won surcoreano",
+ "symbol": "₩"
+ },
+ "PLN": {
+ "name": "Zloty polaco",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gsw.json b/library/intl/resources/currency/gsw.json
new file mode 100644
index 000000000..573c61104
--- /dev/null
+++ b/library/intl/resources/currency/gsw.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägüptischs Pfund",
+ "symbol": "EGP"
+ },
+ "DZD": {
+ "name": "Algeerischi Dinar",
+ "symbol": "DZD"
+ },
+ "ARS": {
+ "name": "Argentinische Peso",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbeidschanische Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopische Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Auschtralische Dollar",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Bahama-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "THB": {
+ "name": "Baht",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "Balboa",
+ "symbol": "PAB"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarus Rubel (nöi)",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanische Ngultrum",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "Bolivar",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswanische Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianische Real",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarische Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XAF": {
+ "name": "CFA-Franc (Äquatoriaal)",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA-Franc (Wescht)",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CRC": {
+ "name": "Costa Rica Colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "MKD": {
+ "name": "Denar",
+ "symbol": "MKD"
+ },
+ "STD": {
+ "name": "Dobra",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Dong",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram",
+ "symbol": "AMD"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El-Salvador-Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreische Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi Dollar",
+ "symbol": "FJD"
+ },
+ "HUF": {
+ "name": "Forint",
+ "symbol": "HUF"
+ },
+ "GMD": {
+ "name": "Gambische Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgische Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaische Cedi (GHS)",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "HTG": {
+ "name": "Gourde",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani",
+ "symbol": "PYG"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "UAH": {
+ "name": "Hryvnia",
+ "symbol": "UAH"
+ },
+ "ISK": {
+ "name": "Iisländischi Chroone",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indischi Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesischi Rupie",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irak-Dinar",
+ "symbol": "IQD"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "YER": {
+ "name": "Jeme-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanische Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Kanadische Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap Verde Escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip",
+ "symbol": "LAK"
+ },
+ "COP": {
+ "name": "Kolumbianische Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komore-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongolesische Franc",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertierbari Mark vo Bosnie und Herzegowina",
+ "symbol": "BAM"
+ },
+ "CUP": {
+ "name": "Kubanische Peso",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "Kuna",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat",
+ "symbol": "MMK"
+ },
+ "ALL": {
+ "name": "Lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LBP": {
+ "name": "Libaneesischs Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanische Dollar",
+ "symbol": "LRD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litauische Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Lüübische Dinar",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Madagaschkar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysische Ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkanische Dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Maurizius-Rupie",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "Metical",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "Mexikanische Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Löi",
+ "symbol": "MDL"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepaleesischi Rupie",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niderländischi-Antille-Gulde",
+ "symbol": "ANG"
+ },
+ "PEN": {
+ "name": "Nöie Sol",
+ "symbol": "PEN"
+ },
+ "TWD": {
+ "name": "Nöii Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "Nöii Türkischi Liire",
+ "symbol": "TRY"
+ },
+ "KPW": {
+ "name": "Nordkoreanische Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norweegischi Chroone",
+ "symbol": "NOK"
+ },
+ "XCD": {
+ "name": "Oschtkaribische Dollar",
+ "symbol": "EC$"
+ },
+ "MRO": {
+ "name": "Ouguiya",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga",
+ "symbol": "TOP"
+ },
+ "PKR": {
+ "name": "Pakischtanischi Rupie",
+ "symbol": "PKR"
+ },
+ "MOP": {
+ "name": "Pataca",
+ "symbol": "MOP"
+ },
+ "GBP": {
+ "name": "Pfund Schtörling",
+ "symbol": "£"
+ },
+ "PHP": {
+ "name": "Philippiinische Peso",
+ "symbol": "PHP"
+ },
+ "GTQ": {
+ "name": "Quetzal",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CN¥"
+ },
+ "IRR": {
+ "name": "Rial",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Omani",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel",
+ "symbol": "KHR"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "MVR": {
+ "name": "Rufiyaa",
+ "symbol": "MVR"
+ },
+ "RON": {
+ "name": "Rumäänische Löi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russische Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomone-Dollar",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "Saudi-Riyal",
+ "symbol": "SAR"
+ },
+ "ILS": {
+ "name": "Schekel",
+ "symbol": "₪"
+ },
+ "SEK": {
+ "name": "Schweedischi Chroone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schwiizer Franke",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbische Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seyschelle-Rupie",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "KGS": {
+ "name": "Som",
+ "symbol": "KGS"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St.-Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudaneesischs Pfund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamische Dollar",
+ "symbol": "SRD"
+ },
+ "KRW": {
+ "name": "Süüdkoreanische Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Süüdsudaneesischs Pfund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Süürischs Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikischtan-Somoni",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala",
+ "symbol": "WST"
+ },
+ "DKK": {
+ "name": "Tänischi Chroone",
+ "symbol": "DKK"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "KZT": {
+ "name": "Tenge",
+ "symbol": "KZT"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "Tominikanische Peso",
+ "symbol": "DOP"
+ },
+ "TTD": {
+ "name": "Trinidad-und-Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechischi Chroone",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Tschileenische Peso",
+ "symbol": "CLP"
+ },
+ "MNT": {
+ "name": "Tugrik",
+ "symbol": "MNT"
+ },
+ "TND": {
+ "name": "Tuneesische Dinar",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "UAE Dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruguayische Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbeekischtan-Sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vatu",
+ "symbol": "VUV"
+ },
+ "JPY": {
+ "name": "Yen",
+ "symbol": "¥"
+ },
+ "PLN": {
+ "name": "Zloty",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gu.json b/library/intl/resources/currency/gu.json
new file mode 100644
index 000000000..8e795a255
--- /dev/null
+++ b/library/intl/resources/currency/gu.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] ફ્રેંક [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] ફ્રેંક [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] ફ્રેંક",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "અંગોલિયન ક્વાન્ઝા",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "અઝરબૈજાની મનાત",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "અફ્ગાન અફ્ગાની",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "અરુબન ફ્લોરિન",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "અર્જેન્ટીના પેસો",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "અર્મેનિયન ડ્રેમ",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "અલ્જિરિયન દિનાર",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "અલ્બેનિયન લેક",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "આઇસલેન્ડિક ક્રોના",
+ "symbol": "ISK"
+ },
+ "EGP": {
+ "name": "ઇજિપ્તિયન પાઉન્ડ",
+ "symbol": "EGP"
+ },
+ "ILS": {
+ "name": "ઇઝરાયેલી ન્યુ શેકલ",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "ઇથિયોપીયન બિર",
+ "symbol": "ETB"
+ },
+ "IDR": {
+ "name": "ઇન્ડોનેશિયન રૂપિયા",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ઇરાકી દિનાર",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ઇરાનિયન રિયાલ",
+ "symbol": "IRR"
+ },
+ "XCD": {
+ "name": "ઇસ્ટ કેરિબિયન ડોલર",
+ "symbol": "EC$"
+ },
+ "UZS": {
+ "name": "ઉઝ્બેકિસ્તાન સોમ",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ઉત્તર કોરિયન વન",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ઉરુગ્વેયન પેસો",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "એરિટ્રેયન નક્ફા",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ઑસ્ટ્રેલિયન ડૉલર",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ઓમાની રિયાલ",
+ "symbol": "OMR"
+ },
+ "KZT": {
+ "name": "કઝાકિસ્તાની ટેંગ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "કતારી રિયાલ",
+ "symbol": "QAR"
+ },
+ "KGS": {
+ "name": "કિર્ગિસ્તાની સોમ",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "કુવૈતી દિનાર",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "કેનેડિયન ડૉલર",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "કેન્યેન શિલિંગ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "કેપ વર્દિયન એસ્કુડો",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "કેમ્બોડિયન રીઅલ",
+ "symbol": "KHR"
+ },
+ "KYD": {
+ "name": "કેયમેન આઇલેંડ્સ ડોલર",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "કોંગોલિઝ ફ્રેંક",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "કોમોરિઅન ફ્રેંક",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "કોલમ્બિયન પેસો",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "કોસ્ટા રિકન કોલોન",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "ક્યુબન પેસો",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "ક્યુબન રૂપાંતર યોગ્ય પેસો",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "ક્રોએશિયન ક્યુના",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "ગયાનિઝ ડોલર",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "ગિનીયન ફ્રેંક",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "ગેમ્બિયન દલાસી",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "ગ્વાટેમાલા કુઇટ્ઝલ",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ઘાનાઇયન સેડી",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "ચાઇનિઝ યુઆન",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "ચિલિઅન પેસો",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "ચેક રીપબ્લિક કોરુના",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "જમૈકિયન ડોલર",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "જાપાનીઝ યેન",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "જિબુટિયન ફ્રેંક",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "જીબ્રાલ્ટર પાઉન્ડ",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "જોર્ડનિયન દિનાર",
+ "symbol": "JOD"
+ },
+ "GEL": {
+ "name": "જ્યોર્જિઅન લારી",
+ "symbol": "GEL"
+ },
+ "ZMW": {
+ "name": "ઝામ્બિયન ક્વાચા",
+ "symbol": "ZMW"
+ },
+ "TOP": {
+ "name": "ટોંગન પ’અંગા",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ટ્યુનિશિયન દિનાર",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "ડેનિશ ક્રોન",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ડોમિનિકન પેસો",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "તાજિકિસ્તાની સોમોની",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "તાન્ઝાનિયન શિલિંગ",
+ "symbol": "TZS"
+ },
+ "TMT": {
+ "name": "તુર્કમેનિસ્તાની મનત",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "તુર્કિશ લિરા",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ત્રિનિદાદ અને ટોબેગો ડોલર",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "થાઇ બાહ્ત",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "દક્ષિણ આફ્રિકી રેંડ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "દક્ષિણ કોરિયન વન",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "દક્ષિણ સુદાનિઝ પાઉન્ડ",
+ "symbol": "SSP"
+ },
+ "NGN": {
+ "name": "નાઇજીરિયન નૈરા",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "નામિબિયન ડોલર",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "નિકારાગુઅન કોર્ડોબા",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "નેધરલેંડ એંટિલિન ગિલ્ડર",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "નેપાલિઝ રૂપી",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "નૉર્વેજિયન ક્રોન",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "ન્યુ તાઇવાન ડૉલર",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ન્યૂઝિલેંડ ડૉલર",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "પનામેનિયન બાલ્બોઆ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "પરાગ્વેયન ગુઆરાની",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "પાકિસ્તાની રૂપી",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "પાપુઆ ન્યૂ ગિનીયન કિના",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "પેરુવિયન ન્યુવો સોલ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "પોલિસ ઝ્લોટી",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "ફિજિઅન ડોલર",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ફિલીપાઇન પેસો",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "ફૉકલેન્ડ આઇલેંડ્સ પાઉન્ડ",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "બર્મુડન ડોલર",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "બલ્ગેરીયન લેવ",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "બહામિયન ડોલર",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "બાંગલાદેશી ટાકા",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "બાર્બાડિયન ડોલર",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "બુરુન્ડિયન ફ્રેંક",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "બેલારુશિયન રૂબલ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "બેલિઝ ડોલર",
+ "symbol": "BZD"
+ },
+ "BHD": {
+ "name": "બેહરિની દિનાર",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "બોત્સવાનન પુલા",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "બોલિવિયન બોલિવિયાનો",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "બોસ્નિયા અને હર્ઝેગોવિના રૂપાંતર યોગ્ય માર્ક",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "બ્રાઝિલીયન રિઆલ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "બ્રિટિશ પાઉન્ડ સ્ટર્લિંગ",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "બ્રુનેઇ ડોલર",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "ભારતીય રૂપિયા",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ભુતાનિઝ એંગુલ્ત્રમ",
+ "symbol": "BTN"
+ },
+ "MYR": {
+ "name": "મલેશિયન રિંગ્ગેટ",
+ "symbol": "MYR"
+ },
+ "MOP": {
+ "name": "માકાનિઝ પતાકા",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "માલાગેસી અરીઆરી",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "માલાવિયન ક્વાચા",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "માલ્દિવિયન રુફિયા",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "મેક્સિકન પેસો",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "મેસેડોનિયન દિનાર",
+ "symbol": "MKD"
+ },
+ "MNT": {
+ "name": "મોંગોલિયન ટગરિક",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "મોઝામ્બિકન મેટિકલ",
+ "symbol": "MZN"
+ },
+ "MRO": {
+ "name": "મોરીશેનિયન ઓગુયા",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "મોરેશીઅન રૂપી",
+ "symbol": "MUR"
+ },
+ "MAD": {
+ "name": "મોરોક્કન દિરહામ",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "મોલડોવેન લિયુ",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "મ્યાંમાર ક્યાત",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "યુઍસ ડોલર",
+ "symbol": "US$"
+ },
+ "UAH": {
+ "name": "યુક્રેનિયન હ્રિવિનિયા",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "યુગાંડન શિલિંગ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "યુનાઈટેડ આરબ અમિરાત દિરહામ",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "યુરો",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "યેમેની રિઆલ",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "રવાંડન ફ્રેંક",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "રશિયન રબલ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "રોમાનિયન લેઉ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "લાઓશિયન કિપ",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "લિથુએનિયન લિતાસ",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "લિબેરિયન ડોલર",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "લિબ્યન દિનાર",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "લેબેનિઝ પાઉન્ડ",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "લેસોથો લોતી",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "વનૌતુ વાતુ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "વિયેતનામીસ ડોંગ",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "વેનેઝુએલન બોલિવર",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "શ્રી લંકન રૂપી",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "સમોઅન તાલા",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "સર્બિયન દિનાર",
+ "symbol": "RSD"
+ },
+ "SYP": {
+ "name": "સાઇરિયન પાઉન્ડ",
+ "symbol": "SYP"
+ },
+ "SAR": {
+ "name": "સાઉદી રિયાલ",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "સાઓ ટૉમ એન્ડ પ્રિંસાઇપ ડોબ્રા",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "સિંગાપુર ડૉલર",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "સિએરા લિઓનિઅન લિઓન",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "સુદાનિઝ પાઉન્ડ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "સૂરીનામિઝ ડોલર",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "સેંટ હેલેના પાઉન્ડ",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "સેશેલોઈ રૂપી",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "સોમાલી શિલિંગ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "સોલોમન આઇલેંડ્સ ડોલર",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "સ્વાઝી લિલાન્ગેની",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "સ્વિસ ફ્રેંક",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "સ્વીડિશ ક્રોના",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "હંગેરીયન ફોરિન્ત",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "હાઇટિઇન ગોર્ડ",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "હોંગ કોંગ ડૉલર",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "હોન્ડ્યુરન લેમ્પિરા",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/guz.json b/library/intl/resources/currency/guz.json
new file mode 100644
index 000000000..4401f9af7
--- /dev/null
+++ b/library/intl/resources/currency/guz.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ha.json b/library/intl/resources/currency/ha.json
new file mode 100644
index 000000000..dfaa389e5
--- /dev/null
+++ b/library/intl/resources/currency/ha.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "USD": {
+ "name": "Dalar Amurka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dalar Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dalar Laberiya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dalar Namibiya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dalar Ostareliya",
+ "symbol": "A$"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "GBP": {
+ "name": "Fam kin Ingila",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Fam kin Masar",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Fam kin San Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Fam kin Sudan",
+ "symbol": "SDG"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "ZAR": {
+ "name": "Kuɗin Afirka Ta Kudu",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Kuɗin Aljeriya",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Kuɗin Angola",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "Kuɗin Baharan",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Kuɗin Baswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "Kuɗin Burundi",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "Kuɗin Caina\/Sin",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "Kuɗin Eritireya",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Kuɗin Gambiya",
+ "symbol": "GMD"
+ },
+ "ETB": {
+ "name": "Kuɗin Habasha",
+ "symbol": "ETB"
+ },
+ "AED": {
+ "name": "Kuɗin Haɗaɗɗiyar Daular Larabawa",
+ "symbol": "AED"
+ },
+ "INR": {
+ "name": "Kuɗin Indiya",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Kuɗin Japan",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Kuɗin Jibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Kuɗin Kongo",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Kuɗin Kwamoras",
+ "symbol": "KMF"
+ },
+ "LSL": {
+ "name": "Kuɗin Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Kuɗin Libiya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Kuɗin Lilangeni",
+ "symbol": "SZL"
+ },
+ "MGA": {
+ "name": "Kuɗin Madagaskar",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Kuɗin Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "Kuɗin Maroko",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Kuɗin Moritaniya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Kuɗin Moritus",
+ "symbol": "MUR"
+ },
+ "RWF": {
+ "name": "Kuɗin Ruwanda",
+ "symbol": "RWF"
+ },
+ "SCR": {
+ "name": "Kuɗin Saishal",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Kuɗin Salewo",
+ "symbol": "SLL"
+ },
+ "STD": {
+ "name": "Kuɗin Sawo Tome da Paransip",
+ "symbol": "STD"
+ },
+ "XAF": {
+ "name": "Kuɗin Sefa na Afirka Ta Tsakiya",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Kuɗin Sefa na Afirka Ta Yamma",
+ "symbol": "CFA"
+ },
+ "CHF": {
+ "name": "Kuɗin Suwizalan",
+ "symbol": "CHF"
+ },
+ "TND": {
+ "name": "Kuɗin Tunisiya",
+ "symbol": "TND"
+ },
+ "CVE": {
+ "name": "Kuɗin Tsibiran Kap Barde",
+ "symbol": "CVE"
+ },
+ "ZMW": {
+ "name": "Kuɗin Zambiya",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "₦"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyal",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "UGX": {
+ "name": "Sule Yuganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Sulen Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Sulen Somaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sulen Tanzaniya",
+ "symbol": "TZS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/he.json b/library/intl/resources/currency/he.json
new file mode 100644
index 000000000..2b98751c7
--- /dev/null
+++ b/library/intl/resources/currency/he.json
@@ -0,0 +1,634 @@
+{
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "MRO": {
+ "name": "אוגוויה מאוריטני",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "אירו",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "אסקודו כף ורדה",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "אפגני אפגני",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "אריארי מלגשי",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "בהט תאילנדי",
+ "symbol": "฿"
+ },
+ "BOB": {
+ "name": "בוליביאנו",
+ "symbol": "BOB"
+ },
+ "VEF": {
+ "name": "בוליבר ונצואלי",
+ "symbol": "VEF"
+ },
+ "ETB": {
+ "name": "ביר אתיופי",
+ "symbol": "ETB"
+ },
+ "PAB": {
+ "name": "בלבואה פנמי",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "גוורני פראגוואי",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "גורד האיטי",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "גילדר של האנטילים ההולנדיים",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "גריבנה אוקראיני",
+ "symbol": "UAH"
+ },
+ "STD": {
+ "name": "דוברה של סן טומה ופרינסיפה",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "דולר אוסטרלי",
+ "symbol": "A$"
+ },
+ "SBD": {
+ "name": "דולר איי שלמה",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "דולר אמריקאי",
+ "symbol": "$"
+ },
+ "BSD": {
+ "name": "דולר בהאמי",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "דולר בליזי",
+ "symbol": "BZD"
+ },
+ "BBD": {
+ "name": "דולר ברבדיאני",
+ "symbol": "BBD"
+ },
+ "BND": {
+ "name": "דולר ברוניי",
+ "symbol": "BND"
+ },
+ "BMD": {
+ "name": "דולר ברמודה",
+ "symbol": "BMD"
+ },
+ "JMD": {
+ "name": "דולר ג׳מייקני",
+ "symbol": "JMD"
+ },
+ "GYD": {
+ "name": "דולר גיאני",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "דולר הונג קונגי",
+ "symbol": "HK$"
+ },
+ "TWD": {
+ "name": "דולר טייוואני חדש",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "דולר טרינידדי",
+ "symbol": "TTD"
+ },
+ "LRD": {
+ "name": "דולר ליברי",
+ "symbol": "LRD"
+ },
+ "XCD": {
+ "name": "דולר מזרח קריבי",
+ "symbol": "EC$"
+ },
+ "NZD": {
+ "name": "דולר ניו זילנדי",
+ "symbol": "NZ$"
+ },
+ "NAD": {
+ "name": "דולר נמיבי",
+ "symbol": "NAD"
+ },
+ "SRD": {
+ "name": "דולר סורינאמי",
+ "symbol": "SRD"
+ },
+ "SGD": {
+ "name": "דולר סינגפורי",
+ "symbol": "SGD"
+ },
+ "FJD": {
+ "name": "דולר פיג׳י",
+ "symbol": "FJD"
+ },
+ "KYD": {
+ "name": "דולר קיימאני",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "דולר קנדי",
+ "symbol": "CA$"
+ },
+ "VND": {
+ "name": "דונג וייטנאמי",
+ "symbol": "₫"
+ },
+ "DZD": {
+ "name": "דינר אלג׳ירי",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "דינר בחרייני",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "דינר טוניסאי",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "דינר ירדני",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "דינר כוויתי",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "דינר לובי",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "דינר מקדוני",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "דינר סרבי",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "דינר עירקי",
+ "symbol": "IQD"
+ },
+ "MAD": {
+ "name": "דירהם מרוקאי",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "דירהם של איחוד הנסיכויות הערביות",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "דלאסי גמבי",
+ "symbol": "GMD"
+ },
+ "AMD": {
+ "name": "דראם ארמני",
+ "symbol": "AMD"
+ },
+ "VUV": {
+ "name": "ואטו של ונואטו",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "וון דרום-קוריאני",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "וון צפון-קוריאני",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "זלוטי פולני",
+ "symbol": "PLN"
+ },
+ "WST": {
+ "name": "טאלה סמואי",
+ "symbol": "WST"
+ },
+ "BDT": {
+ "name": "טאקה בנגלדשי",
+ "symbol": "BDT"
+ },
+ "MNT": {
+ "name": "טוגריק מונגולי",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "טנגה קזחסטני",
+ "symbol": "KZT"
+ },
+ "CNY": {
+ "name": "יואן סיני",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ין יפני",
+ "symbol": "JP¥"
+ },
+ "DKK": {
+ "name": "כתר דני",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "כתר נורבגי",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "כתר שוודי",
+ "symbol": "SEK"
+ },
+ "RON": {
+ "name": "לאו רומני",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "לב בולגרי",
+ "symbol": "BGN"
+ },
+ "LSL": {
+ "name": "לוטי לסותי",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "ליאו מולדובני",
+ "symbol": "MDL"
+ },
+ "SLL": {
+ "name": "ליאון סיירה לאוני",
+ "symbol": "SLL"
+ },
+ "LTL": {
+ "name": "ליטא ליטאי",
+ "symbol": "LTL"
+ },
+ "SZL": {
+ "name": "לילנגני סווזי",
+ "symbol": "SZL"
+ },
+ "SSP": {
+ "name": "לירה דרום-סודנית",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "לירה טורקית חדשה",
+ "symbol": "TRY"
+ },
+ "LBP": {
+ "name": "לירה לבנונית",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "לירה מצרית",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "לירה סודנית",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "לירה סורית",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "לירה שטרלינג",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "לירה של איי פוקלנד",
+ "symbol": "FKP"
+ },
+ "HNL": {
+ "name": "למפירה הונדורי",
+ "symbol": "HNL"
+ },
+ "ALL": {
+ "name": "לק אלבני",
+ "symbol": "ALL"
+ },
+ "GEL": {
+ "name": "לרי גאורגי",
+ "symbol": "GEL"
+ },
+ "AZN": {
+ "name": "מאנאט אזרביג׳ני",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "מאנאט טורקמני",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "מארק בר המרה של בוסניה־הרצגובינה",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "מטיקל מוזמביני",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "נאירה ניגרי",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "נאקפה אריתראי",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "נגולטרום בהוטני",
+ "symbol": "BTN"
+ },
+ "GHS": {
+ "name": "סדי גאני",
+ "symbol": "GHS"
+ },
+ "PEN": {
+ "name": "סול פרואני חדש",
+ "symbol": "PEN"
+ },
+ "UZS": {
+ "name": "סום אוזבקי",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "סום קירגיזי",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "סומוני טג׳קיסטני",
+ "symbol": "TJS"
+ },
+ "GIP": {
+ "name": "פאונד גיברלטר",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "פאונד סנט הלני",
+ "symbol": "SHP"
+ },
+ "TOP": {
+ "name": "פאנגה טונגי",
+ "symbol": "TOP"
+ },
+ "BWP": {
+ "name": "פולה בוצוואני",
+ "symbol": "BWP"
+ },
+ "HUF": {
+ "name": "פורינט הונגרי",
+ "symbol": "HUF"
+ },
+ "DOP": {
+ "name": "פזו דומיניקני",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "פזו מקסיקני",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "פזו פיליפיני",
+ "symbol": "PHP"
+ },
+ "CUP": {
+ "name": "פזו קובני",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "פזו קובני להמרה",
+ "symbol": "CUC"
+ },
+ "MOP": {
+ "name": "פטקה של מקאו",
+ "symbol": "MOP"
+ },
+ "AWG": {
+ "name": "פלורין של ארובה",
+ "symbol": "AWG"
+ },
+ "UYU": {
+ "name": "פסו אורוגוואי",
+ "symbol": "UYU"
+ },
+ "ARS": {
+ "name": "פסו ארגנטינאי",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "פסו צ׳ילאני",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "פסו קולומביאני",
+ "symbol": "COP"
+ },
+ "XOF": {
+ "name": "פרנק CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "פרנק CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "פרנק בורונדי",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "פרנק ג׳יבוטי",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "פרנק גינאי",
+ "symbol": "GNF"
+ },
+ "XPF": {
+ "name": "פרנק פולינזיה הצרפתית",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "פרנק קומורואי",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "פרנק קונגולזי",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "פרנק רואנדי",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "פרנק שוויצרי",
+ "symbol": "CHF"
+ },
+ "AOA": {
+ "name": "קואנזה אנגולי",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "קואצ׳ה מלאוי",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "קוואצ׳ה זמבית",
+ "symbol": "ZMW"
+ },
+ "SVC": {
+ "name": "קולון סלבדורי",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "קולון קוסטה־ריקני",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "קונה קרואטי",
+ "symbol": "HRK"
+ },
+ "NIO": {
+ "name": "קורדובה ניקראגי",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "קורונה צ׳כית",
+ "symbol": "CZK"
+ },
+ "MMK": {
+ "name": "קיאט מיאנמרי",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "קינה של פפואה גינאה החדשה",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "קיפ לאי",
+ "symbol": "LAK"
+ },
+ "GTQ": {
+ "name": "קצל גואטמלי",
+ "symbol": "GTQ"
+ },
+ "ISK": {
+ "name": "קרונה איסלנדית",
+ "symbol": "ISK"
+ },
+ "ZAR": {
+ "name": "ראנד דרום אפריקאי",
+ "symbol": "ZAR"
+ },
+ "BYR": {
+ "name": "רובל בלרוסי",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "רובל רוסי",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "רופי הודי",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "רופי מאוריציני",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "רופי נפאלי",
+ "symbol": "NPR"
+ },
+ "SCR": {
+ "name": "רופי סיישלי",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "רופי סרי לנקי",
+ "symbol": "LKR"
+ },
+ "PKR": {
+ "name": "רופי פקיסטני",
+ "symbol": "PKR"
+ },
+ "IDR": {
+ "name": "רופיה אינדונזית",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "רופיה מלדיבית",
+ "symbol": "MVR"
+ },
+ "IRR": {
+ "name": "ריאל איראני",
+ "symbol": "IRR"
+ },
+ "BRL": {
+ "name": "ריאל ברזילאי",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "ריאל סעודי",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "ריאל עומאני",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "ריאל קטארי",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "ריאל תימני",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "ריל קמבודי",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "רינגיט מלזי",
+ "symbol": "MYR"
+ },
+ "ILS": {
+ "name": "ש״ח",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "שילינג אוגנדי",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "שילינג טנזני",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "שילינג סומאלי",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "שילינג קנייאתי",
+ "symbol": "KES"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hi.json b/library/intl/resources/currency/hi.json
new file mode 100644
index 000000000..cda5b772b
--- /dev/null
+++ b/library/intl/resources/currency/hi.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] फ़्रैंक [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] फ़्रैंक [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] फ़्रैंक",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "अंगोला क्वांज़ा",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "अज़रबैजानी मैनेट",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफ़गान अफ़गानी",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "अरूबाई फ़्लोरिन",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अर्जेंटीनी पीसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अल्जीरियाई दिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अल्बानियाई लेक",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "आइसलैंडिक क्रोना",
+ "symbol": "ISK"
+ },
+ "AMD": {
+ "name": "आर्मेनियाई द्राम",
+ "symbol": "AMD"
+ },
+ "IDR": {
+ "name": "इंडोनेशियाई रुपिया",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "इज़राइली न्यू शेकेल",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "इथियोपियन बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी दिनार",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "इरीट्रियन नाक्फ़ा",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "ईरानी रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उज़्बेकिस्तान सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उत्तर कोरियाई वॉन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरुग्वियन पीसो",
+ "symbol": "UYU"
+ },
+ "AUD": {
+ "name": "ऑस्ट्रेलियाई डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "कंबोडियाई रियाल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "कज़ाखिस्तानी टेंज़",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "क़तरी रियाल",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "कनाडाई डॉलर",
+ "symbol": "CA$"
+ },
+ "KGS": {
+ "name": "किर्गिस्तानी सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कुवैती दिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केन्याई शिलिंग",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप वर्ड एस्कूडो",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "कैमेन द्वीपसमूह डॉलर",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "कोंगोली फ़्रैंक",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "कोमोरियन फ़्रैंक",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलंबियाई पीसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोस्टा रिका कोलोन",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "क्यूबाई परिवर्तनीय पीसो",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "क्यूबाई पीसो",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "क्रोएशियाई कुना",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गयानीज़ डॉलर",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "गिनीयन फ़्रैंक",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "गैंबियन डलासी",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "ग्वाटेमाला क्वेटज़ल",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानियन सेडी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पीसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी युआन",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "चेक गणराज्य कोरुना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमैकन डॉलर",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "ज़ाम्बियन क्वाचा",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबूती फ़्रैंक",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिब्राल्टर पाउंड",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉर्जियन लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जॉर्डनियन दिनार",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टोंगन पांगा",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ट्यूनीशियाई दिनार",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "डैनिश क्रोन",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पीसो",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "तंज़ानियाई शिलिंग",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ताजिकिस्तानी सोमोनी",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "तुर्कमेनिस्तानी मैनत",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "तुर्की लीरा",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "त्रिनिदाद और टोबैगो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बहत",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दक्षिण अफ़्रीकी रैंड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दक्षिण कोरियाई वॉन",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "दक्षिण सूडानी पाउंड",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नया ताईवानी डॉलर",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "नाइजीरियाई नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामीबियाई डॉलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागुअन कोरडोबा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नीदरलैंड एंटीलियन गिल्डर",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रुपया",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉर्वेजियन क्रोन",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "न्यूज़ीलैंड डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामेनियन बैल्बोआ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "पाकिस्तानी रुपया",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापुआ न्यू गिनीयन किना",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "पूर्वी कैरिबियाई डॉलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूवियन नुएवो सोल",
+ "symbol": "PEN"
+ },
+ "PYG": {
+ "name": "पैराग्वियन गुआरानी",
+ "symbol": "PYG"
+ },
+ "PLN": {
+ "name": "पोलिश ज़्लॉटी",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "फ़िजी डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फ़िलिपीनी पीसो",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "फ़ॉकलैंड द्वीपसमूह पाउंड",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "बरमूडा डॉलर",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "बहरीनी दिनार",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "बहामाई डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांग्लादेशी टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बार्बेडियन डॉलर",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "बुरूंडी फ़्रैंक",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बुल्गारियाई लेव",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीज़ डॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोत्सवानियाई पुला",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिवियाई बोलिवियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोस्निया हर्ज़ेगोविना परिवर्तनीय मार्क",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ब्राज़ीली रियाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ब्रिटिश पाउंड स्टर्लिंग",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ब्रूनेई डॉलर",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "भारतीय रुपया",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "भूटानी नंगलट्रम",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "मंगोलियाई टगरिक",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "मलेशियाई रिंगित",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "मालदीवी रुफ़िया",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी आरियरी",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "मालावियन क्वाचा",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "मिस्र पाउंड",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "मेकानीज़ पाटाका",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "मैक्सिकन पीसो",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "मैसीडोनियन दिनार",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "मॉरिशियन रुपया",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "मॉरीटेनियन ओगुइया",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "मोज़ाम्बिकन मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरक्को दिरहम",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "मोल्डोवन लियू",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "म्यांमार क्याट",
+ "symbol": "MMK"
+ },
+ "YER": {
+ "name": "यमनी रियाल",
+ "symbol": "YER"
+ },
+ "UGX": {
+ "name": "युगांडाई शिलिंग",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "यूएस डॉलर",
+ "symbol": "$"
+ },
+ "UAH": {
+ "name": "यूक्रेनियन रिव्निया",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "यूरो",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "रवांडाई फ़्रैंक",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाई ल्यू",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "लाइबेरियाई डॉलर",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथुआनियाई लितास",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लीबियाई दिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनानी पाउंड",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "लेसोथो लोटी",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "वनुआतू वातू",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "वियतनामी डोंग",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "वेनेज़ुएला बोलिवर",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "श्रीलंकाई रुपया",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयुक्त अरब अमीरात दिरहाम",
+ "symbol": "AED"
+ },
+ "SAR": {
+ "name": "सउदी रियाल",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "समोआई ताला",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "सर्बियन दिनार",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "साओ तोम और प्रिंसिपे डोबरा",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "सिंगापुर डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सिएरा लियोनियन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियाई पाउंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सूडानी पाउंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सूरीनामी डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलेना पाउंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेल्सियाई रुपया",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिंग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन द्वीपसमूह डॉलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "स्वाज़ी लिलांजेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "स्विस फ़्रैंक",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "स्वीडीश क्रोना",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियन फ़ोरिंट",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "हाँगकाँग डॉलर",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "हैतियाई गर्ड",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होंडुरन लेम्पिरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hr.json b/library/intl/resources/currency/hr.json
new file mode 100644
index 000000000..6c307d952
--- /dev/null
+++ b/library/intl/resources/currency/hr.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganistanski afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "američki dolar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski pezo",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arupski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeanski dolar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "bjeloruska rublja",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "bolivijski bolivijano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britanska funta",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bugarski lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "čileanski pezo",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "danska kruna",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra Svetog Tome i Principa",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "dominikanski pezo",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "falklandska funta",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski pezo",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijski dalas",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "gvatemalski kvecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "haićanski gourd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonški dolar",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indijska rupija",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonezijska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irački dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "istočnokaripski dolar",
+ "symbol": "XCD"
+ },
+ "JMD": {
+ "name": "jamajčanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanski jen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafrički rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambođanski rijal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenijski šiling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "CNY": {
+ "name": "kineski yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbijski pezo",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoanski franak",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "konvertibilna marka",
+ "symbol": "BAM"
+ },
+ "CRC": {
+ "name": "kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubanski konvertibilni pezo",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski pezo",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litavski litas",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makaoška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malavijska kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivijska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritanijska ouguja",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "meksički pezo",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambički metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norveška kruna",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "novi izraelski šekel",
+ "symbol": "ILS"
+ },
+ "TWD": {
+ "name": "novotajvanski dolar",
+ "symbol": "TWD"
+ },
+ "NZD": {
+ "name": "novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruanski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poljska zlota",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumunjski lej",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanska tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saudijski rial",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sijeraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "sirijska funta",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "sjevernokorejski won",
+ "symbol": "KPW"
+ },
+ "SBD": {
+ "name": "solmonskootočni dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somalijski šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "svetohelenska funta",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "šrilankanska rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "švedska kruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "švicarski franak",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tajlandski baht",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "tanzanijski šiling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongaška pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trininadtobaški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "ugandski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinska hrivnja",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "urugvajski pezo",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuški vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambijska kvača",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hsb.json b/library/intl/resources/currency/hsb.json
new file mode 100644
index 000000000..fd3873959
--- /dev/null
+++ b/library/intl/resources/currency/hsb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghaniski afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriski dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "aruba-florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "awstralski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdźanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamaski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladešska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běłoruski rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudaski dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanski ngultrum",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "bołharski lew",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "boliwiski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosniska konwertibelna hriwna",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanska pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britiski punt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiski dolar",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundiski frank",
+ "symbol": "BIF"
+ },
+ "CZK": {
+ "name": "čěska króna",
+ "symbol": "CZK"
+ },
+ "XOF": {
+ "name": "CFA-frank (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilski peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "chinski yuan",
+ "symbol": "CN¥"
+ },
+ "HRK": {
+ "name": "chorwatska kuna",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "danska króna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikanski peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dźibutiski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptowski punt",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "el salvadorski colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiski birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski punt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidźiski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiski dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiski lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanaski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarski punt",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "ginejski frank",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "guatemalski quetzal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "guyanski dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiska gourda",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongski dolar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indiska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakski dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranski rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska króna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelski nowy šekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaiski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanski yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordaniski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafriski rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "južnosudanski punt",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodźaski riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiski dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdski escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazachski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keniaski šiling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoski frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta-rikaski colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubaski konwertibelny peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubaski peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "libanonski punt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litawski litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "macaoska pataka",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "madźarski forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajziski ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawiski kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "malediwiska rupija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkoski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauritiuska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mawretanska ouguiya",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexiski peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldawski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikski metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarski kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigeriski naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraguaski cordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nižozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norwegska króna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "nowoseelandski dolar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "nowy taiwanski dolar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "omanski rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaski balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua-nowoginejski kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayski guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruski nowy sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "pólski złoty",
+ "symbol": "zł"
+ },
+ "RWF": {
+ "name": "ruandiski frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumunski leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruski rubl",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "salomonski dolar",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "sambiski kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samoaski tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são tomeski dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudi-arabski rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiski dinar",
+ "symbol": "RSD"
+ },
+ "KPW": {
+ "name": "sewjernokorejski won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychellska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra-leoneski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliski šiling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri-lankaska rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helenski punt",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "sudanski punt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swasiski lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "šwedska króna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "šwicarski frank",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriski punt",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadźikski somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tansaniski šiling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thaiski baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tongaski paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad-tobagoski dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuneziski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turkowska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandaski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainska hriwna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbekski sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamski dong",
+ "symbol": "₫"
+ },
+ "XCD": {
+ "name": "wuchodnokaribiski dolar",
+ "symbol": "EC$"
+ },
+ "AED": {
+ "name": "ZAE dirham",
+ "symbol": "AED"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hu.json b/library/intl/resources/currency/hu.json
new file mode 100644
index 000000000..f7413c6af
--- /dev/null
+++ b/library/intl/resources/currency/hu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgán afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albán lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algériai dínár",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolai kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentin peso",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "arubai florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "ausztrál dollár",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdzsáni manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamai dollár",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahreini dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladesi taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadosi dollár",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belize-i dollár",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudai dollár",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutáni ngultrum",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "bolgár új leva",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "bolíviai boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosznia-hercegovinai konvertibilis márka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanai pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazil real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "brit font sterling",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunei dollár",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundi frank",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cape Verde-i escudo",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "chilei peso",
+ "symbol": "CLP"
+ },
+ "KMF": {
+ "name": "comorei frank",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Costa Rica-i colon",
+ "symbol": "CRC"
+ },
+ "CZK": {
+ "name": "cseh korona",
+ "symbol": "CZK"
+ },
+ "XPF": {
+ "name": "csendes-óceáni valutaközösségi frank",
+ "symbol": "CFPF"
+ },
+ "DKK": {
+ "name": "dán korona",
+ "symbol": "DKK"
+ },
+ "ZAR": {
+ "name": "dél-afrikai rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "dél-koreai won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "dél-szudáni font",
+ "symbol": "SSP"
+ },
+ "DOP": {
+ "name": "dominikai peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dzsibuti frank",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "EAE-dirham",
+ "symbol": "AED"
+ },
+ "EGP": {
+ "name": "egyiptomi font",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreai nakfa",
+ "symbol": "ERN"
+ },
+ "KPW": {
+ "name": "észak-koreai won",
+ "symbol": "KPW"
+ },
+ "ETB": {
+ "name": "etiópiai birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euró",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "falkland-szigeteki font",
+ "symbol": "FKP"
+ },
+ "BYR": {
+ "name": "fehérorosz rubel",
+ "symbol": "BYR"
+ },
+ "FJD": {
+ "name": "fidzsi dollár",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "fülöp-szigeteki peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiai dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghánai cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltári font",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "grúz lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalai quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineai frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanai dollár",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haiti gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "hodurasi lempira",
+ "symbol": "HNL"
+ },
+ "ANG": {
+ "name": "holland antilláki forint",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "hongkongi dollár",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "horvát kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indiai rúpia",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonéz rúpia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraki dínár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iráni rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "izlandi korona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraeli új sékel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "jamaicai dollár",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japán jen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "jemeni rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordániai dínár",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmán-szigeteki dollár",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodzsai riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadai dollár",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katari rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahsztáni tenge",
+ "symbol": "KZT"
+ },
+ "XCD": {
+ "name": "kelet-karibi dollár",
+ "symbol": "XCD"
+ },
+ "KES": {
+ "name": "kenyai shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kínai jüan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgizisztáni szom",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiai peso",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "kongói frank",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "kubai konvertibilis peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubai peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvaiti dínár",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoszi kip",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "lengyel zloty",
+ "symbol": "PLN"
+ },
+ "LSL": {
+ "name": "Lesothoi loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanoni font",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "libériai dollár",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "líbiai dínár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litvániai litas",
+ "symbol": "LTL"
+ },
+ "MKD": {
+ "name": "macedon dínár",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "madagaszkári ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "magyar forint",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makaói pataca",
+ "symbol": "MOP"
+ },
+ "MYR": {
+ "name": "malajziai ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawi kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldív-szigeteki rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkói dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritániai ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritiusi rúpia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexikói peso",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "mianmari kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldován lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongóliai tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambiki metikális",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namíbiai dollár",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepáli rúpia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "nicaraguai córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigériai naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "norvég korona",
+ "symbol": "NOK"
+ },
+ "WST": {
+ "name": "nyugat-szamoai tala",
+ "symbol": "WST"
+ },
+ "OMR": {
+ "name": "ománi rial",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "orosz rubel",
+ "symbol": "RUB"
+ },
+ "AMD": {
+ "name": "örmény dram",
+ "symbol": "AMD"
+ },
+ "PKR": {
+ "name": "pakisztáni rúpia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamai balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "pápua új-guineai kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayi guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perui sol nuevo",
+ "symbol": "PEN"
+ },
+ "RON": {
+ "name": "román lej",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandai frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salamon-szigeteki dollár",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadori colón",
+ "symbol": "SVC"
+ },
+ "STD": {
+ "name": "São Tomé és Príncipe-i dobra",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "seychelle-szigeteki rúpia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leone-i leone",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "Srí Lanka-i rúpia",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "suriname-i dollár",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "svájci frank",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svéd korona",
+ "symbol": "SEK"
+ },
+ "SAR": {
+ "name": "szaúdi riyal",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Szent Ilona-i font",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "szerb dínár",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "szingapúri dollár",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "szíriai font",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "szomáli shilling",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "szudáni font",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "szváziföldi lilangeni",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "tádzsikisztáni somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "tajvani új dollár",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "tanzániai shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thai baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tongai paanga",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "török líra",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "Trinidad és Tobago-i dollár",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunéziai dínár",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "türkmenisztáni manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandai shilling",
+ "symbol": "UGX"
+ },
+ "NZD": {
+ "name": "új-zélandi dollár",
+ "symbol": "NZD"
+ },
+ "UAH": {
+ "name": "ukrán hrivnya",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguay-i peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "USA-dollár",
+ "symbol": "USD"
+ },
+ "UZS": {
+ "name": "üzbegisztáni szum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatui vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelai bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnami dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambiai kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwei dollár (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hy.json b/library/intl/resources/currency/hy.json
new file mode 100644
index 000000000..46c14a30c
--- /dev/null
+++ b/library/intl/resources/currency/hy.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "Ադրբեջանական մանաթ",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Ալբանական լեկ",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Ալժիրական դինար",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ԱՄՆ դոլար",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Անգոլական կվանզա",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ավստրալական դոլար",
+ "symbol": "A$"
+ },
+ "AED": {
+ "name": "Արաբական Միացյալ Էմիրությունների դիրհամ",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Արգենտինական պեսո",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Արուբական ֆլորին",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "Արևելակարիբյան դոլար",
+ "symbol": "EC$"
+ },
+ "AFN": {
+ "name": "Աֆղանական աֆղանի",
+ "symbol": "AFN"
+ },
+ "XOF": {
+ "name": "Աֆրիկական ֆինանսական համայնքի ֆրանկ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Աֆրիկական ֆինանսական համայնքի ֆրանկ BEAC",
+ "symbol": "FCFA"
+ },
+ "BSD": {
+ "name": "Բահամական դոլար",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Բահրեյնական դինար",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Բանգլադեշի տակա",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Բարբադոսյան դոլար",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Բելառուսական ռուբլի",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Բելիզի դոլար",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Բերմուդյան դոլար",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Բոթսվանական պուլա",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Բոլիվիական բոլիվիանո",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Բոսնիա և Հերցեգովինայի փոխարկելի մարկա",
+ "symbol": "BAM"
+ },
+ "BTN": {
+ "name": "Բութանական նգուլտրում",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "Բուլղարական լև",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Բուրունդիի ֆրանկ",
+ "symbol": "BIF"
+ },
+ "BRL": {
+ "name": "Բրազիլական ռեալ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Բրիտանական ֆունտ ստեռլինգ",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Բրունեյական դոլար",
+ "symbol": "BND"
+ },
+ "GMD": {
+ "name": "Գամբիական դալասի",
+ "symbol": "GMD"
+ },
+ "GYD": {
+ "name": "Գայանական դոլար",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "Գանական սեդի",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Գվատեմալական կետսալ",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Գվինեական ֆրանկ",
+ "symbol": "GNF"
+ },
+ "DKK": {
+ "name": "Դանիական կրոնա",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Դոմինիկական պեսո",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Եգիպտական ֆունտ",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "Եթովպական բիր",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "Եմենական ռիալ",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Եվրո",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "Զամբիական կվաչա",
+ "symbol": "ZMW"
+ },
+ "ERN": {
+ "name": "Էրիթրեական նակֆա",
+ "symbol": "ERN"
+ },
+ "THB": {
+ "name": "Թաիլանդական բատ",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Թայվանական նոր դոլար",
+ "symbol": "NT$"
+ },
+ "TND": {
+ "name": "Թունիսական դինար",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Թուրքական լիրա",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Թուրքմենական մանաթ",
+ "symbol": "TMT"
+ },
+ "IDR": {
+ "name": "Ինդոնեզական ռուփի",
+ "symbol": "IDR"
+ },
+ "ISK": {
+ "name": "Իսլանդական կրոնա",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Իսրայելի նոր շեկել",
+ "symbol": "₪"
+ },
+ "IRR": {
+ "name": "Իրանական ռիալ",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Իրաքյան դինար",
+ "symbol": "IQD"
+ },
+ "LKR": {
+ "name": "Լանկիական ռուփի",
+ "symbol": "LKR"
+ },
+ "LAK": {
+ "name": "Լաոսական կիպ",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "Լեհական զլոտի",
+ "symbol": "PLN"
+ },
+ "LBP": {
+ "name": "Լիբանանական ֆունտ",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Լիբերիական դոլար",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Լիբիական դինար",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Լիտվական լիտ",
+ "symbol": "LTL"
+ },
+ "HRK": {
+ "name": "Խորվաթական կունա",
+ "symbol": "HRK"
+ },
+ "CVE": {
+ "name": "Կաբո Վերդեի էսկուդո",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Կամբոջական ռիել",
+ "symbol": "KHR"
+ },
+ "KYD": {
+ "name": "Կայմանյան կղզիների դոլար",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Կանադական դոլար",
+ "symbol": "CA$"
+ },
+ "KPW": {
+ "name": "ԿԺԴՀ-ի վոնա",
+ "symbol": "KPW"
+ },
+ "COP": {
+ "name": "Կոլումբիական պեսո",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Կոմորյան կղզիների ֆրանկ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Կոնգոյի ֆրանկ",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Կոստա Ռիկայի կոլոն",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "Կուբական պեսո",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Կուբական փոխարկելի պեսո",
+ "symbol": "CUC"
+ },
+ "XPF": {
+ "name": "ԿՊՖ ֆրանկ",
+ "symbol": "CFPF"
+ },
+ "HTG": {
+ "name": "Հաիթյան գուրդ",
+ "symbol": "HTG"
+ },
+ "AMD": {
+ "name": "Հայկական դրամ",
+ "symbol": "֏"
+ },
+ "ZAR": {
+ "name": "Հարավաֆրիկական ռենդ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Հարավկորեական վոնա",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Հարավսուդանական ֆունտ",
+ "symbol": "SSP"
+ },
+ "INR": {
+ "name": "Հնդկական ռուփի",
+ "symbol": "₹"
+ },
+ "HNL": {
+ "name": "Հոնդուրասական լեմպրիա",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Հոնկոնգի դոլար",
+ "symbol": "HK$"
+ },
+ "JOD": {
+ "name": "Հորդանանական դինար",
+ "symbol": "JOD"
+ },
+ "HUF": {
+ "name": "Հունգարական ֆորինտ",
+ "symbol": "HUF"
+ },
+ "KZT": {
+ "name": "Ղազախական տենգե",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "Ղրղզական սոմ",
+ "symbol": "KGS"
+ },
+ "JPY": {
+ "name": "Ճապոնական իեն",
+ "symbol": "JP¥"
+ },
+ "MGA": {
+ "name": "Մադագասկարի արիարի",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "Մալայզիական ռինգիտ",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Մալավիական կվաչա",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Մալդիվյան ռուֆիա",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "Մակաոյի պատակա",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Մակեդոնական դենար",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "Մավրիկական ռուփի",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Մավրիտանական ուգիյա",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Մարոկական դիրհամ",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Մեքսիկական պեսո",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Մյանմական կյատ",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Մոզամբիկյան մետիկալ",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Մոլդովական լեյ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Մոնղոլական տուգրիկ",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Նամիբիական դոլար",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Նեպալական ռուփի",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Նիգերիական նայրա",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "Նիդերլանդական Անտիլների գուլդեն",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Նիկարագուական կորդոբա",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Նորզելանդական դոլար",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "Նորվեգական կրոնա",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Շվեդական կրոնա",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Շվեյցարական ֆրանկ",
+ "symbol": "CHF"
+ },
+ "UGX": {
+ "name": "Ուգանդական շիլինգ",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Ուզբեկական սում",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Ուկրաինական գրիվնա",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Ուրուգվայական պեսո",
+ "symbol": "UYU"
+ },
+ "CZK": {
+ "name": "Չեխական կրոնա",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Չիլիական պեսո",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Չինական յուան",
+ "symbol": "CN¥"
+ },
+ "PKR": {
+ "name": "Պակիստանական ռուփի",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Պանամական բալբոա",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Պապուա-Նոր Գվինեայի կինա",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Պարագվայական գուարանի",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Պերուի նոր սոլ",
+ "symbol": "PEN"
+ },
+ "JMD": {
+ "name": "Ջամայկական դոլար",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "Ջիբութիի ֆրանկ",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "Ջիբրալթարի ֆունտ",
+ "symbol": "GIP"
+ },
+ "RWF": {
+ "name": "Ռուանդական ֆրանկ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Ռումինական լեյ",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ռուսական ռուբլի",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "Սամոական տալա",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Սան Տոմե և Պրինսիպիի դոբրա",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Սաուդյան Արաբիայի ռիալ",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Սեյշելյան կղզիների ռուփի",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Սերբական դինար",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Սիերա-Լեոնեի լեոնե",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Սինգապուրյան դոլար",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Սիրիական ֆունտ",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Սողոմոնյան կղզիների դոլար",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Սոմալիական շիլինգ",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Սուդանական ֆունտ",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "Սուրբ Հեղինեի կղզու ֆունտ",
+ "symbol": "SHP"
+ },
+ "SRD": {
+ "name": "Սուրինամական դոլար",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Սվազիլենդական լիլանգենի",
+ "symbol": "SZL"
+ },
+ "VUV": {
+ "name": "Վանուատուի վատու",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Վենեսուելական բոլիվար",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Վիետնամական դոնգ",
+ "symbol": "₫"
+ },
+ "GEL": {
+ "name": "Վրացական լարի",
+ "symbol": "GEL"
+ },
+ "TZS": {
+ "name": "Տանզանիական շիլինգ",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "Տաջիկական սոմոնի",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "Տոնգայի պաանգա",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Տրինիդադ և Տոբագոյի դոլար",
+ "symbol": "TTD"
+ },
+ "QAR": {
+ "name": "Քաթարական ռիալ",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Քենիական շիլինգ",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Քուվեյթական դինար",
+ "symbol": "KWD"
+ },
+ "OMR": {
+ "name": "Օմանական ռիալ",
+ "symbol": "OMR"
+ },
+ "PHP": {
+ "name": "Ֆիլիպինական պեսո",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Ֆիջիական դոլար",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Ֆոլկլենդյան կղզիներ ֆունտ",
+ "symbol": "FKP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/id.json b/library/intl/resources/currency/id.json
new file mode 100644
index 000000000..3e27f70c9
--- /dev/null
+++ b/library/intl/resources/currency/id.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani Afganistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagaskar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Thailand",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Etiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colon El Savador",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon Kosta Rika",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Cordoba Nikaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Makedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar Irak",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinar Yordania",
+ "symbol": "JOD"
+ },
+ "MAD": {
+ "name": "Dirham Maroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Uni Emirat Arab",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra Sao Tome dan Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolar Amerika Serikat",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dolar Australia",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Dolar Bahama",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolar Barbados",
+ "symbol": "BBD"
+ },
+ "TWD": {
+ "name": "Dolar Baru Taiwan",
+ "symbol": "NT$"
+ },
+ "BZD": {
+ "name": "Dolar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolar Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dolar Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolar Jamaika",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "Dolar Kanada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dolar Karibia Timur",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dolar Kepulauan Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dolar Kepulauan Solomon",
+ "symbol": "SBD"
+ },
+ "LRD": {
+ "name": "Dolar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dolar Selandia Baru",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singapura",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dolar Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolar Trinidad dan Tobago",
+ "symbol": "TTD"
+ },
+ "ZWL": {
+ "name": "Dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "Dong Vietnam",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo Tanjung Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungaria",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franc Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Franc Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Swiss",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antilla Belanda",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ukraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua Nugini",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Cheska",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona Islandia",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Swedia",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmark",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norwegia",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Kroasia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rumania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lituania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkimenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Konvertibel Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambik",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Makau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Cile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "Peso Dominika",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipina",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "Peso Kolombia",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "Peso Konvertibel Kuba",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Peso Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Peso Meksiko",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "$U"
+ },
+ "PLN": {
+ "name": "Polandia Zloty",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "Pound Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "Pound Kepulauan Falkland",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Pound Lebanon",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "Pound Mesir",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pound Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pound Sterling Inggris",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Pound Sudan",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Pound Sudan Selatan",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Pound Suriah",
+ "symbol": "SYP"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afrika Selatan",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yaman",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Kamboja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Arab Saudi",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rubel Belarusia",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rubel Rusia",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maladewa",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee India",
+ "symbol": "Rs"
+ },
+ "MUR": {
+ "name": "Rupee Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "Rp"
+ },
+ "ILS": {
+ "name": "Shekel Baru Israel",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilling Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som Kirgistan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Korea Selatan",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won Korea Utara",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Jepang",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yuan China",
+ "symbol": "CN¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/is.json b/library/intl/resources/currency/is.json
new file mode 100644
index 000000000..e2d74d04a
--- /dev/null
+++ b/library/intl/resources/currency/is.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanskt lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alsírskur denari",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angólsk kvansa",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabískt dírham",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentínskur pesi",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenskt dramm",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arúbönsk flórína",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserskt manat",
+ "symbol": "AZN"
+ },
+ "XCD": {
+ "name": "Austurkarabískur dalur",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "Ástralskur dalur",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "Bahamadalur",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "Balbói",
+ "symbol": "PAB"
+ },
+ "USD": {
+ "name": "Bandaríkjadalur",
+ "symbol": "USD"
+ },
+ "BDT": {
+ "name": "Bangladessk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoskur dalur",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Bareinskur denari",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Belískur dalur",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermúdadalur",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Botsvönsk púla",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bólivíani",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brasilískt ríal",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "Brúneiskur dalur",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Búlgarskt lef",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Búrúndískur franki",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Bútanskt núltrum",
+ "symbol": "BTN"
+ },
+ "KYD": {
+ "name": "Caymaneyskur dalur",
+ "symbol": "KYD"
+ },
+ "DJF": {
+ "name": "Djíbútískur franki",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dóminískur pesi",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "Dönsk króna",
+ "symbol": "DKK"
+ },
+ "EGP": {
+ "name": "Egypskt pund",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Erítresk nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Evra",
+ "symbol": "EUR"
+ },
+ "ETB": {
+ "name": "Eþíópískt birr",
+ "symbol": "ETB"
+ },
+ "FKP": {
+ "name": "Falklenskt pund",
+ "symbol": "FKP"
+ },
+ "PHP": {
+ "name": "Filippseyskur pesi",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Fídjeyskur dalur",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambískur dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganverskur sedi",
+ "symbol": "GHS"
+ },
+ "GEL": {
+ "name": "Georgískur lari",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "Gíbraltarspund",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Gíneufranki",
+ "symbol": "GNF"
+ },
+ "CVE": {
+ "name": "Grænhöfðeyskur skúti",
+ "symbol": "CVE"
+ },
+ "GTQ": {
+ "name": "Gvatemalskt kvesal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Gvæjanskur dalur",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haítískur gúrdi",
+ "symbol": "HTG"
+ },
+ "SHP": {
+ "name": "Helenskt pund",
+ "symbol": "SHP"
+ },
+ "ANG": {
+ "name": "Hollenskt Antillugyllini",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondúrsk lempíra",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong-dalur",
+ "symbol": "HK$"
+ },
+ "BYR": {
+ "name": "Hvítrússnesk rúbla",
+ "symbol": "BYR"
+ },
+ "IDR": {
+ "name": "Indónesísk rúpía",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "Indversk rúpía",
+ "symbol": "INR"
+ },
+ "IQD": {
+ "name": "Írakskur denari",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Íranskt ríal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Íslensk króna",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaískur dalur",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanskt jen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "Jemenskt ríal",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jórdanskur denari",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambódískt ríal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadískur dalur",
+ "symbol": "CAD"
+ },
+ "KZT": {
+ "name": "Kasakst tengi",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katarskt ríal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenískur skildingur",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgiskt som",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Kínverskt júan",
+ "symbol": "CN¥"
+ },
+ "CDF": {
+ "name": "Kongóskur franki",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarískt kólon",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "Kólumbískur pesi",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Kómoreyskur franki",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "Króatísk kúna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kúbverskur pesi",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kúbverskur skiptanlegur pesi",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kúveiskur denari",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoskt kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "Litháískt lít",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Líbanskt pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Líberískur dalur",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Líbískur denari",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Madagaskararjari",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makaópataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedónskur denari",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malasískt ringit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malavísk kvaka",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldíveysk rúpía",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkóskt dírham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Máritísk rúpía",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Máritönsk úgía",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Mexíkóskur pesi",
+ "symbol": "MXN"
+ },
+ "XAF": {
+ "name": "Miðafrískur franki",
+ "symbol": "FCFA"
+ },
+ "MMK": {
+ "name": "Mjanmarskt kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavískt lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongólskur túríkur",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mósambískt metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibískur dalur",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepölsk rúpía",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nígerísk næra",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Níkarögsk kordóva",
+ "symbol": "NIO"
+ },
+ "KPW": {
+ "name": "Norðurkóreskt vonn",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norsk króna",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "Nýr ísraelskur sikill",
+ "symbol": "₪"
+ },
+ "NZD": {
+ "name": "Nýsjálenskur dalur",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Ómanskt ríal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistönsk rúpía",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "Papúsk kína",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvæskt gvaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Perúskt sól",
+ "symbol": "PEN"
+ },
+ "XPF": {
+ "name": "Pólinesískur franki",
+ "symbol": "CFPF"
+ },
+ "PLN": {
+ "name": "Pólskt slot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Rúandskur franki",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rúmenskt lei",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rússnesk rúbla",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salómonseyskur dalur",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Sambísk kvaka",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samóatala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Saó Tóme og Prinsípe-dóbra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Sádiarabískt ríal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbneskur denari",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellesrúpía",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "Singapúrskur dalur",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "Síerraleónsk ljóna",
+ "symbol": "SLL"
+ },
+ "CLP": {
+ "name": "Síleskur pesi",
+ "symbol": "CLP"
+ },
+ "BAM": {
+ "name": "Skiptanlegt Bosníu og Hersegóvínu-mark",
+ "symbol": "BAM"
+ },
+ "SOS": {
+ "name": "Sómalískur skildingur",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Srílönsk rúpía",
+ "symbol": "LKR"
+ },
+ "GBP": {
+ "name": "Sterlingspund",
+ "symbol": "GBP"
+ },
+ "ZAR": {
+ "name": "Suðurafrískt rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Suðurkóreskt vonn",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Suðursúdanskt pund",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Súdanskt pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Súrínamdalur",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svasílenskur lílangeni",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Svissneskur franki",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Sýrlenskt pund",
+ "symbol": "SYP"
+ },
+ "SEK": {
+ "name": "Sænsk króna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadsjikskur sómóni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Taílenskt bat",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "Taívanskur dalur",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tansanískur skildingur",
+ "symbol": "TZS"
+ },
+ "CZK": {
+ "name": "Tékknesk króna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "Tongapanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trínidad og Tóbagó-dalur",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Túniskur denari",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Túrkmenskt manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Tyrknesk líra",
+ "symbol": "TRY"
+ },
+ "HUF": {
+ "name": "Ungversk fórinta",
+ "symbol": "HUF"
+ },
+ "UGX": {
+ "name": "Úgandskur skildingur",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Úkraínsk hrinja",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Úrúgvæskur pesi",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Úsbekskt súm",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanúatúskt vatú",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesúelskur bólívari",
+ "symbol": "VEF"
+ },
+ "XOF": {
+ "name": "Vesturafrískur franki",
+ "symbol": "CFA"
+ },
+ "VND": {
+ "name": "Víetnamskt dong",
+ "symbol": "VND"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/it.json b/library/intl/resources/currency/it.json
new file mode 100644
index 000000000..7928fc3dc
--- /dev/null
+++ b/library/intl/resources/currency/it.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malgascio",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht thailandese",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa di Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Etiopico",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ghanese",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costaricano",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón Salvadoregno",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaraguense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Corona Ceca",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Corona danese",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Corona islandese",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Corona norvegese",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Corona svedese",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi del Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaro Algerino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaro del Bahrein",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "Dinaro giordano",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Dinaro iracheno",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinaro kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinaro Libico",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinaro Macedone",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinaro Serbo",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinaro Tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham degli Emirati Arabi Uniti",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Marocchino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra di Sao Tomé e Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dollaro Australiano",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dollaro Canadese",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dollaro dei Caraibi Orientali",
+ "symbol": "EC$"
+ },
+ "BZD": {
+ "name": "Dollaro del Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "Dollaro del Brunei",
+ "symbol": "BND"
+ },
+ "GYD": {
+ "name": "Dollaro della Guyana",
+ "symbol": "GYD"
+ },
+ "BSD": {
+ "name": "Dollaro delle Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dollaro delle Bermuda",
+ "symbol": "BMD"
+ },
+ "FJD": {
+ "name": "Dollaro delle Figi",
+ "symbol": "FJD"
+ },
+ "KYD": {
+ "name": "Dollaro delle Isole Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollaro delle Isole Solomon",
+ "symbol": "SBD"
+ },
+ "BBD": {
+ "name": "Dollaro di Barbados",
+ "symbol": "BBD"
+ },
+ "HKD": {
+ "name": "Dollaro di Hong Kong",
+ "symbol": "HKD"
+ },
+ "SGD": {
+ "name": "Dollaro di Singapore",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dollaro di Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "Dollaro Giamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dollaro Liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dollaro Namibiano",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollaro Neozelandese",
+ "symbol": "NZ$"
+ },
+ "USD": {
+ "name": "Dollaro Statunitense",
+ "symbol": "US$"
+ },
+ "SRD": {
+ "name": "Dollaro Surinamese",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dollaro Zimbabwiano (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "Dong Vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram armeno",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo del Capo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Fiorino delle Antille Olandesi",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Fiorino di Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Fiorino Ungherese",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco Comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco Congolese",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "Franco del Burundi",
+ "symbol": "BIF"
+ },
+ "GNF": {
+ "name": "Franco della Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco Gibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco Ruandese",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco svizzero",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "Grivnia Ucraina",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "Guaraní del Paraguay",
+ "symbol": "PYG"
+ },
+ "PGK": {
+ "name": "Kina della Papua Nuova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laotiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna Croata",
+ "symbol": "HRK"
+ },
+ "ZMW": {
+ "name": "Kwacha dello Zambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Kwacha Malawiano",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kwanza Angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat di Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albanese",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduregna",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone della Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rumeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev bulgaro",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni dello Swaziland",
+ "symbol": "SZL"
+ },
+ "LBP": {
+ "name": "Lira libanese",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Lira siriana",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti del Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat azero",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco Conv. Bosnia-Erzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical mozambicano",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Butanese",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Nuovo dollaro taiwanese",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "Nuovo siclo israeliano",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "Ouguiya della Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga di Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca di Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Cileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Cubano Convertibile",
+ "symbol": "CUC"
+ },
+ "PHP": {
+ "name": "Peso delle Filippine",
+ "symbol": "PHP"
+ },
+ "DOP": {
+ "name": "Peso Dominicano",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso Messicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "Peso Uruguaiano",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula del Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasiliano",
+ "symbol": "BRL"
+ },
+ "CNY": {
+ "name": "Renminbi cinese",
+ "symbol": "CN¥"
+ },
+ "QAR": {
+ "name": "Rial del Qatar",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Rial dell’Oman",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "Rial Iraniano",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "Riel Cambogiano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit della Malesia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal saudita",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "Riyal yemenita",
+ "symbol": "YER"
+ },
+ "BYR": {
+ "name": "Rublo Bielorussia",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo Russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa delle Maldive",
+ "symbol": "MVR"
+ },
+ "PKR": {
+ "name": "Rupia del Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia delle Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia di Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia Indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia Indonesiana",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia Mauriziana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia Nepalese",
+ "symbol": "NPR"
+ },
+ "TZS": {
+ "name": "Scellino della Tanzania",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Scellino Keniota",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Scellino Somalo",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Scellino Ugandese",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol Nuevo Peruviano",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som Kirghiso",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "Somoni del Tajikistan",
+ "symbol": "TJS"
+ },
+ "FKP": {
+ "name": "Sterlina delle Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Sterlina di Gibilterra",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Sterlina di Sant’Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Sterlina Egiziana",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Sterlina Inglese",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Sterlina Sudanese",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Sterlina sudsudanese",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "Sum dell’Uzbekistan",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "Taka Bangladese",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala della Samoa Occidentale",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongolo",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu di Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won Nordcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won Sudcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "Yen giapponese",
+ "symbol": "JPY"
+ },
+ "PLN": {
+ "name": "Złoty polacco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ja.json b/library/intl/resources/currency/ja.json
new file mode 100644
index 000000000..f7457feb9
--- /dev/null
+++ b/library/intl/resources/currency/ja.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA フラン(BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA フラン(BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP フラン",
+ "symbol": "CFPF"
+ },
+ "ISK": {
+ "name": "アイスランド クローナ",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "アゼルバイジャン マナト",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "アフガニー",
+ "symbol": "AFN"
+ },
+ "AED": {
+ "name": "アラブ首長国連邦ディルハム",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "アルジェリア ディナール",
+ "symbol": "DZD"
+ },
+ "ARS": {
+ "name": "アルゼンチン ペソ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "アルバ ギルダー",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "アルバニア レク",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "アルメニア ドラム",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "イエメン リアル",
+ "symbol": "YER"
+ },
+ "ILS": {
+ "name": "イスラエル新シェケル",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "イラク ディナール",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "イラン リアル",
+ "symbol": "IRR"
+ },
+ "INR": {
+ "name": "インド ルピー",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "インドネシア ルピア",
+ "symbol": "IDR"
+ },
+ "UGX": {
+ "name": "ウガンダ シリング",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ウクライナ グリブナ",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "ウズベキスタン スム",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ウルグアイ ペソ",
+ "symbol": "UYU"
+ },
+ "EGP": {
+ "name": "エジプト ポンド",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "エチオピア ブル",
+ "symbol": "ETB"
+ },
+ "ERN": {
+ "name": "エリトリア ナクファ",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "エルサルバドル コロン",
+ "symbol": "SVC"
+ },
+ "AUD": {
+ "name": "オーストラリア ドル",
+ "symbol": "AU$"
+ },
+ "OMR": {
+ "name": "オマーン リアル",
+ "symbol": "OMR"
+ },
+ "ANG": {
+ "name": "オランダ領アンティル ギルダー",
+ "symbol": "ANG"
+ },
+ "GHS": {
+ "name": "ガーナ セディ",
+ "symbol": "GHS"
+ },
+ "CVE": {
+ "name": "カーボベルデ エスクード",
+ "symbol": "CVE"
+ },
+ "GYD": {
+ "name": "ガイアナ ドル",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "カザフスタン テンゲ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "カタール リアル",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "カナダ ドル",
+ "symbol": "CA$"
+ },
+ "GMD": {
+ "name": "ガンビア ダラシ",
+ "symbol": "GMD"
+ },
+ "KHR": {
+ "name": "カンボジア リエル",
+ "symbol": "KHR"
+ },
+ "GNF": {
+ "name": "ギニア フラン",
+ "symbol": "GNF"
+ },
+ "CUP": {
+ "name": "キューバ ペソ",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "キューバ 兌換ペソ",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "キルギスタン ソム",
+ "symbol": "KGS"
+ },
+ "GTQ": {
+ "name": "グアテマラ ケツァル",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "クウェート ディナール",
+ "symbol": "KWD"
+ },
+ "GEL": {
+ "name": "グルジア ラリ",
+ "symbol": "GEL"
+ },
+ "HRK": {
+ "name": "クロアチア クーナ",
+ "symbol": "HRK"
+ },
+ "AOA": {
+ "name": "クワンザ",
+ "symbol": "AOA"
+ },
+ "KYD": {
+ "name": "ケイマン諸島 ドル",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "ケニア シリング",
+ "symbol": "KES"
+ },
+ "CRC": {
+ "name": "コスタリカ コロン",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "コモロ フラン",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "コロンビア ペソ",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "コンゴ フラン",
+ "symbol": "CDF"
+ },
+ "SAR": {
+ "name": "サウジ リヤル",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "サモア タラ",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "サントメ・プリンシペ ドブラ",
+ "symbol": "STD"
+ },
+ "ZMW": {
+ "name": "ザンビア クワチャ",
+ "symbol": "ZMW"
+ },
+ "SLL": {
+ "name": "シエラレオネ レオン",
+ "symbol": "SLL"
+ },
+ "DJF": {
+ "name": "ジブチ フラン",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "ジブラルタル ポンド",
+ "symbol": "GIP"
+ },
+ "JMD": {
+ "name": "ジャマイカ ドル",
+ "symbol": "JMD"
+ },
+ "SYP": {
+ "name": "シリア ポンド",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "シンガポール ドル",
+ "symbol": "SGD"
+ },
+ "ZWL": {
+ "name": "ジンバブエ ドル (2009)",
+ "symbol": "ZWL"
+ },
+ "CHF": {
+ "name": "スイス フラン",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "スウェーデン クローナ",
+ "symbol": "SEK"
+ },
+ "SDG": {
+ "name": "スーダン ポンド",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "スリナム ドル",
+ "symbol": "SRD"
+ },
+ "LKR": {
+ "name": "スリランカ ルピー",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "スワジランド リランゲニ",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "セーシェル ルピー",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "セントヘレナ島 ポンド",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ソマリア シリング",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ソロモン諸島 ドル",
+ "symbol": "SBD"
+ },
+ "THB": {
+ "name": "タイ バーツ",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "タジキスタン ソモニ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "タンザニア シリング",
+ "symbol": "TZS"
+ },
+ "CZK": {
+ "name": "チェコ コルナ",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "チュニジア ディナール",
+ "symbol": "TND"
+ },
+ "CLP": {
+ "name": "チリ ペソ",
+ "symbol": "CLP"
+ },
+ "RSD": {
+ "name": "ディナール (セルビア)",
+ "symbol": "RSD"
+ },
+ "DKK": {
+ "name": "デンマーク クローネ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ドミニカ ペソ",
+ "symbol": "DOP"
+ },
+ "TTD": {
+ "name": "トリニダードトバゴ ドル",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "トルクメニスタン マナト",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "トンガ パ・アンガ",
+ "symbol": "TOP"
+ },
+ "NGN": {
+ "name": "ナイジェリア ナイラ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ナミビア ドル",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "ニカラグア コルドバ オロ",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "ニュージーランド ドル",
+ "symbol": "NZ$"
+ },
+ "NPR": {
+ "name": "ネパール ルピー",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "ノルウェー クローネ",
+ "symbol": "NOK"
+ },
+ "BHD": {
+ "name": "バーレーン ディナール",
+ "symbol": "BHD"
+ },
+ "HTG": {
+ "name": "ハイチ グールド",
+ "symbol": "HTG"
+ },
+ "PKR": {
+ "name": "パキスタン ルピー",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "パナマ バルボア",
+ "symbol": "PAB"
+ },
+ "VUV": {
+ "name": "バヌアツ バツ",
+ "symbol": "VUV"
+ },
+ "BSD": {
+ "name": "バハマ ドル",
+ "symbol": "BSD"
+ },
+ "PGK": {
+ "name": "パプアニューギニア キナ",
+ "symbol": "PGK"
+ },
+ "BMD": {
+ "name": "バミューダ ドル",
+ "symbol": "BMD"
+ },
+ "PYG": {
+ "name": "パラグアイ グアラニ",
+ "symbol": "PYG"
+ },
+ "BBD": {
+ "name": "バルバドス ドル",
+ "symbol": "BBD"
+ },
+ "HUF": {
+ "name": "ハンガリー フォリント",
+ "symbol": "HUF"
+ },
+ "BDT": {
+ "name": "バングラデシュ タカ",
+ "symbol": "BDT"
+ },
+ "FJD": {
+ "name": "フィジー諸島 ドル",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "フィリピン ペソ",
+ "symbol": "PHP"
+ },
+ "BTN": {
+ "name": "ブータン ニュルタム",
+ "symbol": "BTN"
+ },
+ "FKP": {
+ "name": "フォークランド(マルビナス)諸島 ポンド",
+ "symbol": "FKP"
+ },
+ "BRL": {
+ "name": "ブラジル レアル",
+ "symbol": "R$"
+ },
+ "BGN": {
+ "name": "ブルガリア 新レフ",
+ "symbol": "BGN"
+ },
+ "BND": {
+ "name": "ブルネイ ドル",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "ブルンジ フラン",
+ "symbol": "BIF"
+ },
+ "VND": {
+ "name": "ベトナム ドン",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "ベネズエラ ボリバル",
+ "symbol": "VEF"
+ },
+ "BYR": {
+ "name": "ベラルーシ ルーブル",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ベリーズ ドル",
+ "symbol": "BZD"
+ },
+ "PEN": {
+ "name": "ペルー 新ソル",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ポーランド ズウォティ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "ボスニア マルク (BAM)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ボツワナ プラ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ボリビア ボリビアーノ",
+ "symbol": "BOB"
+ },
+ "HNL": {
+ "name": "ホンジュラス レンピラ",
+ "symbol": "HNL"
+ },
+ "MOP": {
+ "name": "マカオ パタカ",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "マケドニア デナル",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "マダガスカル アリアリ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "マラウィ クワチャ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "マレーシア リンギット",
+ "symbol": "MYR"
+ },
+ "MMK": {
+ "name": "ミャンマー チャット",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "メキシコ ペソ",
+ "symbol": "MX$"
+ },
+ "MUR": {
+ "name": "モーリシャス ルピー",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "モーリタニア ウギア",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "モザンビーク メティカル",
+ "symbol": "MZN"
+ },
+ "MVR": {
+ "name": "モルディブ諸島 ルフィア",
+ "symbol": "MVR"
+ },
+ "MDL": {
+ "name": "モルドバ レイ",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "モロッコ ディルハム",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "モンゴル トグログ",
+ "symbol": "MNT"
+ },
+ "EUR": {
+ "name": "ユーロ",
+ "symbol": "€"
+ },
+ "JOD": {
+ "name": "ヨルダン ディナール",
+ "symbol": "JOD"
+ },
+ "LAK": {
+ "name": "ラオス キープ",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "リトアニア リタス",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "リビア ディナール",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "リベリア ドル",
+ "symbol": "LRD"
+ },
+ "RON": {
+ "name": "ルーマニア レイ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ルワンダ フラン",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "レソト ロティ",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "レバノン ポンド",
+ "symbol": "LBP"
+ },
+ "RUB": {
+ "name": "ロシア ルーブル",
+ "symbol": "RUB"
+ },
+ "GBP": {
+ "name": "英国ポンド",
+ "symbol": "£"
+ },
+ "KRW": {
+ "name": "韓国 ウォン",
+ "symbol": "₩"
+ },
+ "HKD": {
+ "name": "香港ドル",
+ "symbol": "HK$"
+ },
+ "TRY": {
+ "name": "新トルコリラ",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "新台湾ドル",
+ "symbol": "NT$"
+ },
+ "CNY": {
+ "name": "中国人民元",
+ "symbol": "元"
+ },
+ "XCD": {
+ "name": "東カリブ ドル",
+ "symbol": "EC$"
+ },
+ "ZAR": {
+ "name": "南アフリカ ランド",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南スーダン・ポンド",
+ "symbol": "SSP"
+ },
+ "JPY": {
+ "name": "日本円",
+ "symbol": "¥"
+ },
+ "USD": {
+ "name": "米ドル",
+ "symbol": "$"
+ },
+ "KPW": {
+ "name": "北朝鮮 ウォン",
+ "symbol": "KPW"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/jgo.json b/library/intl/resources/currency/jgo.json
new file mode 100644
index 000000000..6a68ab95c
--- /dev/null
+++ b/library/intl/resources/currency/jgo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "XAF": {
+ "name": "Fɛlâŋ",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Ndɔ́la-Amɛlîk",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Ndɔ́la-Kanandâ",
+ "symbol": "CA$"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "EUR": {
+ "name": "Ʉ́lɔ",
+ "symbol": "€"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/jmc.json b/library/intl/resources/currency/jmc.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/jmc.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ka.json b/library/intl/resources/currency/ka.json
new file mode 100644
index 000000000..c9e686882
--- /dev/null
+++ b/library/intl/resources/currency/ka.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "(CFA) ფრანკი (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA ფრანკი (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP ფრანკი",
+ "symbol": "CFPF"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "ავსტრალიური დოლარი",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "ავღანური ავღანი",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "აზერბაიჯანული მანათი",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ალბანური ლეკი",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ალჟირული დინარი",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "ანგოლური კვანზა",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "არაბთა გაერთიანებული საამიროების დირჰამი",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "არგენტინული პესო",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "არუბანული გულდენი",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "აღმოსავლეთ კარიბიული დოლარი",
+ "symbol": "EC$"
+ },
+ "USD": {
+ "name": "აშშ დოლარი",
+ "symbol": "US$"
+ },
+ "NZD": {
+ "name": "ახალი ზელანდიის დოლარი",
+ "symbol": "NZD"
+ },
+ "TRY": {
+ "name": "ახალი თურქული ლირა",
+ "symbol": "TRY"
+ },
+ "BDT": {
+ "name": "ბანგლადეშური ტაკა",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "ბარბადოსული დოლარი",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ბაჰამური დოლარი",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ბაჰრეინული დინარი",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "ბელიზის დოლარი",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "ბელორუსული რუბლი",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "ბერმუდული დოლარი",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "ბოლივიური ბოლივიანო",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "ბოსნია და ჰერცოგოვინას კონვერტირებადი მარკა",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ბოცვანური პულა",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "ბრაზილიური რეალი",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ბრიტანული გირვანქა სტერლინგი",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ბრუნეული დოლარი",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "ბულგარული ლევი",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "ბურუნდიული ფრანკი",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "ბუტანური ნგულტრუმი",
+ "symbol": "BTN"
+ },
+ "GYD": {
+ "name": "გაიანური დოლარი",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "გამბიური დალასი",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "განური სედი",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "გვატემალური კეტსალი",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "გვინეური ფრანკი",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "გიბრალტარული ფუნტი",
+ "symbol": "GIP"
+ },
+ "DKK": {
+ "name": "დანიური კრონა",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "დომინიკური პესო",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "ეგვიპტური გირვანქა",
+ "symbol": "EGP"
+ },
+ "EUR": {
+ "name": "ევრო",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "ეთიოპიური ბირი",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ერაყული დინარი",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "ერიტრეის ნაკფა",
+ "symbol": "ERN"
+ },
+ "VUV": {
+ "name": "ვანუატუს ვატუ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ვენესუელის ბოლივარი",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ვიეტნამური დონგი",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "ზამბიური კვაჭა",
+ "symbol": "ZMW"
+ },
+ "TMT": {
+ "name": "თურქმენეთის მანათი",
+ "symbol": "TMT"
+ },
+ "JMD": {
+ "name": "იამაიკური დოლარი",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "იაპონური იენი",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "იემენის რეალი",
+ "symbol": "YER"
+ },
+ "IDR": {
+ "name": "ინდონეზიური რუპია",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ინდური რუპია",
+ "symbol": "INR"
+ },
+ "JOD": {
+ "name": "იორდანიული დოლარი",
+ "symbol": "JOD"
+ },
+ "IRR": {
+ "name": "ირანული რიალი",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ისლანდიური კრონა",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "ისრაელის ახალი შეკელი",
+ "symbol": "ILS"
+ },
+ "CVE": {
+ "name": "კაბო-ვერდეს ესკუდო",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "კაიმანის კუნძულების დოლარი",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "კამბოჯური რიელი",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "კანადური დოლარი",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "კატარის რიალი",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "კენიური შილინგი",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "კოლუმბიური პესო",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "კომორული ფრანკი",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "კონგოს ფრანკი",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "კოსტა-რიკული კოლონი",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "კუბური კონვერტირებადი პესო",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "კუბური პესო",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "ლაოსური კიპი",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "ლიბანური ფუნტი",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "ლიბერიული დოლარი",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ლიბიური დინარი",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ლიტვური ლიტა",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "მადაგასკარის არიარი",
+ "symbol": "MGA"
+ },
+ "MUR": {
+ "name": "მავრიტანული რუპია",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "მავრიტანული უგია",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "მაკაუს პატაკა",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "მაკედონიური დინარი",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "მალავიური კვაჩა",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "მალაიზიური რინგიტი",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "მალდივური რუფია",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "მაროკოს დირჰამი",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "მექსიკური პესო",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "მიანმარის კიატი",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "მოზამბიკური მეტიკალი",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "მოლდოვური ლეუ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "მონღოლური ტუგრიკი",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ნამიბიური დოლარი",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ნეპალური რუპია",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ნიგერიული ნაირა",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "ნიდერლანდების ანტილების გულდენი",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "ნიკარაგუული კორდობა",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "ნორვეგიული კრონა",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ომანის რიალი",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "პაკისტანური რუპია",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "პანამური ბალბოა",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "პაპუა-ახალი გვინეის კინა",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "პარაგვაული გუარანი",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "პერუს ახალი სოლი",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "პოლონური ზლოტი",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "რუანდული ფრანკი",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "რუმინული ლეუ",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "რუსული რუბლი",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "სამოური ტალა",
+ "symbol": "WST"
+ },
+ "ZAR": {
+ "name": "სამხრეთ აფრიკული რანდი",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "სამხრეთ კორეული ვონი",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "სამხრეთ სუდანური ფუნტი",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "სან-ტომე და პრინსიპის დობრა",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "საუდის არაბეთის რიალი",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "სეიშელური რუპია",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "სერბული დინარი",
+ "symbol": "RSD"
+ },
+ "SZL": {
+ "name": "სვაზილენდის ლილანგენი",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "სიერა-ლეონეს ლეონე",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "სინგაპურის დოლარი",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "სირიული ფუნტი",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "სოლომონის კუნძულების დოლარი",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "სომალური შილინგი",
+ "symbol": "SOS"
+ },
+ "AMD": {
+ "name": "სომხური დრამი",
+ "symbol": "AMD"
+ },
+ "SDG": {
+ "name": "სუდანური ფუნტი",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "სურინამული დოლარი",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "ტაივანური ახალი დოლარი",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "ტაილანდური ბატი",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "ტანზანიური შილინგი",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ტაჯიკური სომონი",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "ტონგანური პაანგა",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ტრინიდად და ტობაგოს დოლარი",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ტუნისური დინარი",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "უგანდური შილინგი",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "უზბეკური სუმი",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "უკრაინული გრივნა",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "უნგრული ფორინტი",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "ურუგვაის პესო",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ფილიპინური პესო",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ფიჯის დოლარი",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ფოლკლენდის კუნძულების ფუნტი",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "ქართული ლარი",
+ "symbol": "GEL"
+ },
+ "KWD": {
+ "name": "ქუვეითური დინარი",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "ყაზახური ტენგე",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "ყირგიზული სომი",
+ "symbol": "KGS"
+ },
+ "SEK": {
+ "name": "შვედური კრონა",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "შვეიცარიული ფრანკი",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "შრი-ლანკური რუპია",
+ "symbol": "LKR"
+ },
+ "CZK": {
+ "name": "ჩეხური კრონა",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ჩილეს პესო",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ჩინური იუანი",
+ "symbol": "CNY"
+ },
+ "KPW": {
+ "name": "ჩრდილოეთ კორეული ვონი",
+ "symbol": "KPW"
+ },
+ "SHP": {
+ "name": "წმ. ელენეს კუნძულის ფუნტი",
+ "symbol": "SHP"
+ },
+ "HRK": {
+ "name": "ხორვატული კუნა",
+ "symbol": "HRK"
+ },
+ "DJF": {
+ "name": "ჯიბუტის ფრანკი",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "ჰაიტური გურდი",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ჰონდურასული ლემპირა",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "ჰონკონგის დოლარი",
+ "symbol": "HKD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kab.json b/library/intl/resources/currency/kab.json
new file mode 100644
index 000000000..5481b7680
--- /dev/null
+++ b/library/intl/resources/currency/kab.json
@@ -0,0 +1,634 @@
+{
+ "ETB": {
+ "name": "Abir Utyupi",
+ "symbol": "ETB"
+ },
+ "KES": {
+ "name": "Aciling Akini",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Aciling Aṣumali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Aciling Aṭanẓani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Aciling Awgandi",
+ "symbol": "UGX"
+ },
+ "GMD": {
+ "name": "Adalasi Agambi",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "Adinar Abaḥrini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Adinar Alibi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Adinar Atunsi",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Adinar Azzayri",
+ "symbol": "DA"
+ },
+ "MAD": {
+ "name": "Adirham Amerruki",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Adirham n Tgeldunin Taɛrabin Yedduklen",
+ "symbol": "AED"
+ },
+ "CAD": {
+ "name": "Adular Akanadi",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Adular Alibiri",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Adular Anamibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Adular n Lusṭrali",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "Adular WD",
+ "symbol": "US$"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "BIF": {
+ "name": "Afrank Aburandi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Afrank Ajibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Afrank Akamiruni",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Afrank Akunguli",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Afrank Aruwandi",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Afrank Aswis",
+ "symbol": "CHF"
+ },
+ "XAF": {
+ "name": "Afrank BCEA CFA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Afrank BCEAO CFA",
+ "symbol": "CFA"
+ },
+ "MRO": {
+ "name": "Agiya Amuriṭani",
+ "symbol": "MRO"
+ },
+ "CVE": {
+ "name": "Akabuviradinu Askudi",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Akwaca Amalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Akwaca Azambi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Akwanza n Ungula",
+ "symbol": "AOA"
+ },
+ "SZL": {
+ "name": "Alilangini",
+ "symbol": "SZL"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "LSL": {
+ "name": "Aluṭi Alizuṭi",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Alyun",
+ "symbol": "SLL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ERN": {
+ "name": "Anakfa Iritiri",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Anayra Anijiri",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "BWP": {
+ "name": "Apula Abusṭwanan",
+ "symbol": "BWP"
+ },
+ "EGP": {
+ "name": "Apund Amaṣri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Apund Asant Ilini",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Apund Asudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Apund Sterling Aglizi",
+ "symbol": "£"
+ },
+ "ZAR": {
+ "name": "Arand Afriqi n Wadda",
+ "symbol": "ZAR"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "INR": {
+ "name": "Arupi Ahendi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Arupi Amurisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Arupi Aseycili",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Aryal Asuɛudi",
+ "symbol": "SAR"
+ },
+ "MGA": {
+ "name": "Aryari Amalgac",
+ "symbol": "MGA"
+ },
+ "STD": {
+ "name": "Asw Ṭum d Udubra Amenzay",
+ "symbol": "STD"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "JPY": {
+ "name": "Ayen Ajappuni",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Ayuwan Renminbi Acinwa",
+ "symbol": "CN¥"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uru",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kam.json b/library/intl/resources/currency/kam.json
new file mode 100644
index 000000000..b62741d41
--- /dev/null
+++ b/library/intl/resources/currency/kam.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ndalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "TND": {
+ "name": "Ndinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AUD": {
+ "name": "Ndola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Ndola ya Kanada",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "Ndola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Ndola ya Namibia",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Silingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "Vaundi ya Misili",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Vaũndi ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Vaũndi ya Sudani",
+ "symbol": "SDG"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kde.json b/library/intl/resources/currency/kde.json
new file mode 100644
index 000000000..108576f07
--- /dev/null
+++ b/library/intl/resources/currency/kde.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Chiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Chijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kea.json b/library/intl/resources/currency/kea.json
new file mode 100644
index 000000000..efc07ee0f
--- /dev/null
+++ b/library/intl/resources/currency/kea.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari di Madagaskar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "THB": {
+ "name": "Baht tailandes",
+ "symbol": "฿"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir etiopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar arjelinu",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar di Barain",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinar libiu",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinar tunizianu",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Diren di Emiradus Arabi Unidu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Diren marokinu",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra di Sãu Tume i Prinsipi",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola australianu",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "Dola di Ong Kong",
+ "symbol": "HK$"
+ },
+ "CAD": {
+ "name": "Dola kanadianu",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola liberianu",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola merkanu",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola namibianu",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Dola Novu di Taiwan",
+ "symbol": "NT$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Franku borundes",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franku CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franku CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Franku di Djibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Franku di Komoris",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franku kongoles",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franku ruandes",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franku suisu",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "JPY": {
+ "name": "Ieni japones",
+ "symbol": "JP¥"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CNY": {
+ "name": "Iuan xines",
+ "symbol": "CN¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "AOA": {
+ "name": "Kuanza",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kuaxa di Malaui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kuaxa zambianu",
+ "symbol": "ZMW"
+ },
+ "DKK": {
+ "name": "Kuroa dinamarkeza",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Kuroa norueges",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Kuroa sueku",
+ "symbol": "SEK"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone di Sera Leoa",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "Libra di Santa Ilena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra ejipsiu",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra sterlina britaniku",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Libra sudanes",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "Lilanjeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turku",
+ "symbol": "TRY"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti di Lezotu",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka di Eritreia",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougia",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "MXN": {
+ "name": "Pezu mexikanu",
+ "symbol": "MX$"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "BWP": {
+ "name": "Pula di Botsuana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand sulafrikanu",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Rial brazileru",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rublu rusu",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupia di Maurisias",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia di Seixelis",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupia indianu",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indoneziu",
+ "symbol": "IDR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CVE": {
+ "name": "Skudu Kabuverdianu",
+ "symbol": "​"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won sul-koreanu",
+ "symbol": "₩"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "TZS": {
+ "name": "Xelin di Tanzania",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Xelin kenianu",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelin somalianu",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Xelin ugandensi",
+ "symbol": "UGX"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "PLN": {
+ "name": "Zloty polaku",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/khq.json b/library/intl/resources/currency/khq.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/khq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ki.json b/library/intl/resources/currency/ki.json
new file mode 100644
index 000000000..a2b41bced
--- /dev/null
+++ b/library/intl/resources/currency/ki.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "SOS": {
+ "name": "ciringi cia cumarĩ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ciringi cia Tanizania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "ciringi cia Ũganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Ciringi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "GBP": {
+ "name": "Mbauini cia Ngeretha",
+ "symbol": "£"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "USD": {
+ "name": "Ndora cia Amerika",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Ndora ya Kananda",
+ "symbol": "CA$"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rubia rwa India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kk.json b/library/intl/resources/currency/kk.json
new file mode 100644
index 000000000..3a2e18c7f
--- /dev/null
+++ b/library/intl/resources/currency/kk.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "Австралия доллары",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "АҚШ доллары",
+ "symbol": "$"
+ },
+ "ALL": {
+ "name": "Албания лекі",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжир динары",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ангола кванзасы",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Аргентина песосы",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Армения драмы",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Арубан флоринсы",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "Ауғаныстан афганиі",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Әзірбайжан манаты",
+ "symbol": "AZN"
+ },
+ "SHP": {
+ "name": "Әулие Елена аралы фунты",
+ "symbol": "SHP"
+ },
+ "BSD": {
+ "name": "Багам доллары",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Бангладеш такасы",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадос доллары",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Бахрейн динары",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Беларус рублі",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Белиз доллары",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Бермуд доллары",
+ "symbol": "БД"
+ },
+ "BGN": {
+ "name": "Болгар леві",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Боливия боливианосы",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Босния және Герцеговина айырбасталмалы маркасы",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Ботсвана пуласы",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилия реалы",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Британия фунты",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Бруней доллары",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунди франкы",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутан нгултрумы",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануату ватуы",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "Венгер форинты",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "Венесуэла боливары",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вьетнам донгы",
+ "symbol": "₫"
+ },
+ "HTG": {
+ "name": "Гаити гурды",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Гайана доллары",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Гамбия даласиі",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана седиі",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Гватемала кетсалі",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвиней франкы",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтар фунты",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "Гондурас лемпираcы",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Гонконг доллары",
+ "symbol": "HK$"
+ },
+ "GEL": {
+ "name": "Грузия лариі",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Дат кроны",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Джибути франкы",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "Дихрам (БАЭ)",
+ "symbol": "AED"
+ },
+ "DOP": {
+ "name": "Доминикан песосы",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Еуро",
+ "symbol": "€"
+ },
+ "NZD": {
+ "name": "Жаңа Зеландия доллары",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Жаңа Тайван доллары",
+ "symbol": "NT$"
+ },
+ "JPY": {
+ "name": "Жапон иені",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "Замбия квачасы",
+ "symbol": "ZMW"
+ },
+ "ILS": {
+ "name": "Израиль жаңа шекелі",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Индонезия рупиі",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Ирак динары",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Иран риалы",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Исландия кронасы",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йемен риалы",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Йордания динары",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде эскудосы",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Кайман аралдары доллары",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбоджа риелі",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канада доллары",
+ "symbol": "КД$"
+ },
+ "QAR": {
+ "name": "Катар риалы",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кения шиллингі",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "Колумбия песосы",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Комор аралдары франкы",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франкы",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Коста-рика колоны",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Куба айырбасталмалы песосы",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Куба песосы",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейт динары",
+ "symbol": "KWD"
+ },
+ "XAF": {
+ "name": "КФА ВЕАС франкы",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "КФА ВСЕАО франкы",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "КФП франкы",
+ "symbol": "CFPF"
+ },
+ "KZT": {
+ "name": "Қазақстан теңгесі",
+ "symbol": "₸"
+ },
+ "KGS": {
+ "name": "Қырғызстан сомы",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Қытай юаны",
+ "symbol": "CN¥"
+ },
+ "LAK": {
+ "name": "Лаос кипі",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Либерия доллары",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Ливан фунты",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Ливия динары",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литва литы",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "Маврикий рупиясы",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Мавритания угиясы",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Макао патакасы",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Македония динары",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квачасы",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагаси ариариы",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "Малайзия ринггиті",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Мальдив руфиясы",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокко дирхамы",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Мексика пессосы",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "Мозамбик метикалы",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдава лейі",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Моңғолия тугрикасы",
+ "symbol": "MNT"
+ },
+ "EGP": {
+ "name": "Мысыр фунты",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "Мьянма кьяты",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Намибия доллары",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непал рупиі",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигерия найрасы",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "Нидерланд антиль гульдені",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Никарагуа кордобасы",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Норвегия кроны",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Оман риалы",
+ "symbol": "OMR"
+ },
+ "ZAR": {
+ "name": "Оңтүстік Африка рэнді",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Оңтүстік Корея воны",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Оңтүстік Судан фунты",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "Өзбекстан сомы",
+ "symbol": "UZS"
+ },
+ "PAB": {
+ "name": "Панама бальбоасы",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа - Жаңа Гвинея кинасы",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвай гуараниі",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "Пәкістан рупиі",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "Перу жаңа солі",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Польша злотасы",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "Ресей рубль",
+ "symbol": "руб."
+ },
+ "RWF": {
+ "name": "Руанда франкы",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Румыния лейі",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "Самоа таласы",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сант-Томе мен Принсипи добрасы",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Сауд Арабия риалы",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазиленд лилангениі",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшель рупиясы",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Сербия динары",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "Сингапур доллары",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сирия фунты",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломон аралдары доллары",
+ "symbol": "SBD"
+ },
+ "KPW": {
+ "name": "Солтүстік Корея воны",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "Сомали шиллингі",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Судан фунты",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринам доллары",
+ "symbol": "SRD"
+ },
+ "SLL": {
+ "name": "Сьерра-Леоне леонесы",
+ "symbol": "SLL"
+ },
+ "THB": {
+ "name": "Тай баты",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Танзания шиллингі",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "Тәжікстан сомониі",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "Тонга паангасы",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад пен Тобаго доллары",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Тунис динары",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Түрік лирасы",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Түрікменстан манаты",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Уганда шиллингі",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Украина гривнасы",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Уругвай песосы",
+ "symbol": "UYU"
+ },
+ "INR": {
+ "name": "Үнді рупиясы",
+ "symbol": "₹"
+ },
+ "FJD": {
+ "name": "Фиджи доллары",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Филиппин песосы",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Фолкленд аралдарының фунты",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "Хорватия кунасы",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Чех кронасы",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чили песосы",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "Швед кроны",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Швейцария франкы",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "Шри-Ланка рупиясы",
+ "symbol": "LKR"
+ },
+ "XCD": {
+ "name": "Шығыс Кариб доллары",
+ "symbol": "EC$"
+ },
+ "ERN": {
+ "name": "Эритрей накфасы",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Эфиопия быры",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "Ямайка доллары",
+ "symbol": "JMD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kl.json b/library/intl/resources/currency/kl.json
new file mode 100644
index 000000000..203a4485e
--- /dev/null
+++ b/library/intl/resources/currency/kl.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "danmarkimut koruuni",
+ "symbol": "kr."
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norskit koruuni",
+ "symbol": "Nkr"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "svenskit koruuni",
+ "symbol": "Skr"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kln.json b/library/intl/resources/currency/kln.json
new file mode 100644
index 000000000..f9a2db672
--- /dev/null
+++ b/library/intl/resources/currency/kln.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "AUD": {
+ "name": "Dolaitab Australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dolaitab Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolaitab Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolaitab Namibia",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dolaitab ya Amareka",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "ZMW": {
+ "name": "Kwachaitab Zambia",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leonit",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangenit",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauditab Misri",
+ "symbol": "EGP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "SHP": {
+ "name": "Pouditab helena ne tilil",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pouditab Sudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "pounditab Uingereza",
+ "symbol": "£"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "DZD": {
+ "name": "Rabisiekab Algerian",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Rabisiekab Angolan",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "Rabisiekab Bahrain",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Rabisiekab Botswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "Rabisiekab Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Rabisiekab CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Rabisiekab CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Rabisiekab China",
+ "symbol": "CN¥"
+ },
+ "CDF": {
+ "name": "Rabisiekab Congo",
+ "symbol": "CDF"
+ },
+ "ERN": {
+ "name": "Rabisiekab Eritrea",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Rabisiekab Ethiopia",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Rabisiekab Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Rabisiekab India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Rabisiekab Japan",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Rabisiekab Jibuti",
+ "symbol": "DJF"
+ },
+ "CVE": {
+ "name": "Rabisiekab Kepuvede",
+ "symbol": "CVE"
+ },
+ "AED": {
+ "name": "Rabisiekab Kibagegeitab arabuk",
+ "symbol": "AED"
+ },
+ "KMF": {
+ "name": "Rabisiekab Komoro",
+ "symbol": "KMF"
+ },
+ "LSL": {
+ "name": "Rabisiekab Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Rabisiekab Libya",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Rabisiekab Malagasy",
+ "symbol": "MGA"
+ },
+ "MRO": {
+ "name": "Rabisiekab Mauritania",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Rabisiekab Mauritius",
+ "symbol": "MUR"
+ },
+ "MAD": {
+ "name": "Rabisiekab Moroccan",
+ "symbol": "MAD"
+ },
+ "NGN": {
+ "name": "Rabisiekab Nigeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Rabisiekab Rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Rabisiekab Sao Tome ak Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Rabisiekab Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Rabisiekab Shelisheli",
+ "symbol": "SCR"
+ },
+ "CHF": {
+ "name": "Rabisiekab Swiss",
+ "symbol": "CHF"
+ },
+ "TND": {
+ "name": "RabisiekabTunisia",
+ "symbol": "TND"
+ },
+ "MWK": {
+ "name": "Rabisiekaby Malawi",
+ "symbol": "MWK"
+ },
+ "ZAR": {
+ "name": "Randitab Afrika nebo murot tai",
+ "symbol": "ZAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "siligitab Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "silingitab Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingitab Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Silingitab ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuroit",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/km.json b/library/intl/resources/currency/km.json
new file mode 100644
index 000000000..037654774
--- /dev/null
+++ b/library/intl/resources/currency/km.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CZK": {
+ "name": "កូរុណា​សាធារណៈ​ឆេក",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "កូឡុង​កូស្តារីកា",
+ "symbol": "CRC"
+ },
+ "SEK": {
+ "name": "ក្រូណា​ស៊ុយអែត",
+ "symbol": "SEK"
+ },
+ "ISK": {
+ "name": "ក្រូណា​អ៊ីស្លង់",
+ "symbol": "ISK"
+ },
+ "DKK": {
+ "name": "ក្រូណេ​ដាណាម៉ាក់",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "ក្រូណេ​ន័រវ៉េ",
+ "symbol": "NOK"
+ },
+ "MWK": {
+ "name": "ក្វាចា​ម៉ាឡាវី",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "ក្វាចា​សំប៊ី",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "ក្វាន់ហ្សា​អង់ហ្គោឡា",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "ខឌូបា​នីការ៉ាហ្គា",
+ "symbol": "NIO"
+ },
+ "PGK": {
+ "name": "គីណា​ប៉ាពូនូហ្គីណេ",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "គីប​ឡាវ",
+ "symbol": "LAK"
+ },
+ "MMK": {
+ "name": "គីយ៉ាត​ភូមា",
+ "symbol": "MMK"
+ },
+ "HRK": {
+ "name": "គូណា​ក្រូអាត",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "គោឌី​ហៃទី",
+ "symbol": "HTG"
+ },
+ "BTN": {
+ "name": "ញូលត្រឹម​ប៊ូតង់",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "ញូវ៉ូសូល​ប៉េរូ",
+ "symbol": "PEN"
+ },
+ "GMD": {
+ "name": "ដាឡាស៊ី​ហ្គំប៊ី",
+ "symbol": "GMD"
+ },
+ "VND": {
+ "name": "ដុង​វៀតណាម",
+ "symbol": "₫"
+ },
+ "CAD": {
+ "name": "ដុល្លារ​កាណាដា",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "ដុល្លារ​ការ៉ាប៊ីន​ខាង​កើត",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "ដុល្លារ​កោះ​កៃម៉ែន",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "ដុល្លារ​កោះ​សូឡូម៉ុង",
+ "symbol": "SBD"
+ },
+ "NAD": {
+ "name": "ដុល្លារ​ណាមីប៊ី",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "ដុល្លារ​តៃវ៉ាន់",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "ដុល្លារ​ទ្រីនីដាដ និងតូបាហ្គោ",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "ដុល្លារ​នូវែលសេឡង់",
+ "symbol": "NZ$"
+ },
+ "BBD": {
+ "name": "ដុល្លារ​បាបាដុស",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ដុល្លារ​បាហាម៉ា",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "ដុល្លារ​ប៊ឺមុយដា",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "ដុល្លារ​បេលី",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "ដុល្លារ​ប្រុយណេ",
+ "symbol": "BND"
+ },
+ "LRD": {
+ "name": "ដុល្លារ​លីប៊ី",
+ "symbol": "LRD"
+ },
+ "SGD": {
+ "name": "ដុល្លារ​​សិង្ហបូរី",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "ដុល្លារ​សូរីណាម",
+ "symbol": "SRD"
+ },
+ "HKD": {
+ "name": "ដុល្លារ​ហុងកុង",
+ "symbol": "HK$"
+ },
+ "GYD": {
+ "name": "ដុល្លារ​ហ្គីយ៉ាន",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "ដុល្លារ​ហ្វីជី",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "ដុល្លារ​ហ្សាម៉ាអ៊ីក",
+ "symbol": "JMD"
+ },
+ "USD": {
+ "name": "ដុល្លារ​អាមេរិក",
+ "symbol": "$"
+ },
+ "AUD": {
+ "name": "ដុល្លារ​អូស្ត្រាលី",
+ "symbol": "A$"
+ },
+ "AMD": {
+ "name": "ដ្រាំ​អាមេនី",
+ "symbol": "AMD"
+ },
+ "KWD": {
+ "name": "ឌីណា​គុយវ៉ែត",
+ "symbol": "KWD"
+ },
+ "TND": {
+ "name": "ឌីណា​ទុយនីស៊ី",
+ "symbol": "TND"
+ },
+ "BHD": {
+ "name": "ឌីណា​បារ៉ែន",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "ឌីណា​ម៉ាសេដ្វាន",
+ "symbol": "MKD"
+ },
+ "LYD": {
+ "name": "ឌីណា​លីប៊ី",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "ឌីណា​សើប",
+ "symbol": "RSD"
+ },
+ "JOD": {
+ "name": "ឌីណា​ហ្ស៊កដានី",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "ឌីណា​អាល់ស៊េរី",
+ "symbol": "DZD"
+ },
+ "IQD": {
+ "name": "ឌីណា​អ៊ីរ៉ាក់",
+ "symbol": "IQD"
+ },
+ "STD": {
+ "name": "ឌូប្រា​សៅតូម៉េ និងប្រាំងស៊ីប",
+ "symbol": "STD"
+ },
+ "MAD": {
+ "name": "ឌៀរហាំ​ម៉ារ៉ុក",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "ឌៀរហាំ​អេមីរ៉ាតអារ៉ាប់រួម",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "ណាក់ហ្វា​អេរីត្រេ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ណៃរ៉ា​នីហ្សេរីយ៉ា",
+ "symbol": "NGN"
+ },
+ "KZT": {
+ "name": "តង់ហ្គី​កាហ្សាក់ស្ថាន",
+ "symbol": "KZT"
+ },
+ "BDT": {
+ "name": "តាកា​បង់ក្លាដែស",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "តាឡា​សាម័រ",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "ទូរីក​ម៉ុងហ្គោលី",
+ "symbol": "MNT"
+ },
+ "ETB": {
+ "name": "ប៊័រ​អេត្យូពី",
+ "symbol": "ETB"
+ },
+ "THB": {
+ "name": "បាត​ថៃ",
+ "symbol": "฿"
+ },
+ "MOP": {
+ "name": "ប៉ាតាកា​ម៉ាកាវ",
+ "symbol": "MOP"
+ },
+ "PAB": {
+ "name": "បាល់ប៉ៅ​ប៉ាណាម៉ា",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "ប៉ាអង់កា​តុងហ្គា",
+ "symbol": "TOP"
+ },
+ "MXN": {
+ "name": "ប៉ីហ្សូ​ម៉ិកស៉ិក",
+ "symbol": "MX$"
+ },
+ "COP": {
+ "name": "ប៉ឺហ្សូ​កូឡុំប៊ី",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "ប៉ឺហ្សូ​គុយបា",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "ប៉ឺហ្សូ​ដូមីនីក",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "ប៉ឺហ្សូ​ស៊ីលី",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "ប៉ឺហ្សូ​ហ្វីលីពីន",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "ប៉ឺហ្សូ​អាច​បម្លែង​បាន​គុយបា",
+ "symbol": "CUC"
+ },
+ "ARS": {
+ "name": "ប៉ឺហ្សូ​អាហ្សង់ទីន",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "ប៉ឺហ្សូអ៊ុយរូហ្គាយ",
+ "symbol": "UYU"
+ },
+ "VEF": {
+ "name": "ប៊ូលីវ៉ា​វ៉េណេស៊ុយអេឡា",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "បូលីវីណូ​បូលីវី",
+ "symbol": "BOB"
+ },
+ "FKP": {
+ "name": "ផោន​កោះ​ហ្វក់ឡែន",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "ផោន​លីបង់",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "ផោន​ស៊ីរី",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ផោន​ស៊ូដង់",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "ផោន​ស៊ូដង់​ខាង​ត្បូង",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "ផោន​សាំងហេឡេណា",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "ផោនស្ទែរលិញ​ចក្រភព​អង់គ្លេស",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "ផោន​ហ្ស៊ីប្រាល់តា",
+ "symbol": "GIP"
+ },
+ "EGP": {
+ "name": "ផោន​​អេហ្សីប",
+ "symbol": "EGP"
+ },
+ "BWP": {
+ "name": "ពូឡា​បុតស្វាណា",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ម៉ាក​អាច​បម្លែង​បាន​បូស្នី",
+ "symbol": "BAM"
+ },
+ "TMT": {
+ "name": "ម៉ាណាត​តួកម៉េនីស្ថាន",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "ម៉ាណាត​អាស៊ែបៃហ្សង់",
+ "symbol": "AZN"
+ },
+ "MZN": {
+ "name": "មីទីខល​ម៉ូសំប៊ិក",
+ "symbol": "MZN"
+ },
+ "CNY": {
+ "name": "យ៉ន់​ចិន",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "យេន​ជប៉ុន",
+ "symbol": "JP¥"
+ },
+ "ZAR": {
+ "name": "រ៉ង់​អាព្រិក​ខាង​ត្បូង",
+ "symbol": "ZAR"
+ },
+ "MYR": {
+ "name": "រីងហ្គីត​ម៉ាឡេស៊ី",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "រីយ៉ាល​អារ៉ាប៊ីសាអូឌីត",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "រ៉ូបល​បេឡារុស",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "រ៉ូបល​រុស្ស៊ី",
+ "symbol": "RUB"
+ },
+ "NPR": {
+ "name": "រ៉ូពី​នេប៉ាល់",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "រ៉ូពី​ប៉ាគីស្ថាន",
+ "symbol": "PKR"
+ },
+ "MUR": {
+ "name": "រ៉ូពី​ម៉ូរីតានី",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "រ៉ូពី​សីស្ហែល",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "រ៉ូពី​ស្រីលង្ការ",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "រ៉ូពី​ឥណ្ឌា",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "រ៉ូពីឥណ្ឌូណេស៊ី",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "រ៉ូហ្វីយ៉ា​ម៉ាល់ឌីវ",
+ "symbol": "MVR"
+ },
+ "KHR": {
+ "name": "រៀល​កម្ពុជា",
+ "symbol": "៛"
+ },
+ "QAR": {
+ "name": "រៀល​កាតា",
+ "symbol": "QAR"
+ },
+ "BRL": {
+ "name": "រៀល​ប្រេស៊ីល",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "រៀល​យេម៉ែន",
+ "symbol": "YER"
+ },
+ "OMR": {
+ "name": "រៀល​រូម៉ានី",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "រៀល​អ៊ីរ៉ង់",
+ "symbol": "IRR"
+ },
+ "ALL": {
+ "name": "លិក​អាល់បានី",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "លិមពីរ៉ា​ហុងឌូរ៉ាស",
+ "symbol": "HNL"
+ },
+ "LTL": {
+ "name": "លីតា​លីទុយអានី",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "លីរ៉ា​ទួគី",
+ "symbol": "TRY"
+ },
+ "BGN": {
+ "name": "លីវ​ប៊ុលហ្គារី",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "លីឡាងហ្គីនី​ស្វាស៊ីឡង់",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "លីអ៊ុន​សៀរ៉ាឡេអូន",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "លូ​ម៉ុលដាវី",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "លូ​រូម៉ានី",
+ "symbol": "RON"
+ },
+ "VUV": {
+ "name": "វ៉ាទូ​វ៉ានូទូ",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "វូន​កូរ៉េ​ខាង​ជើង",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "វូន​កូរ៉េ​ខាង​ត្បូង",
+ "symbol": "₩"
+ },
+ "GHS": {
+ "name": "ស៊ីឌី​ហ្គាណា",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "ស៊ីលិញ​កេនយ៉ា",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "ស៊ីលិញ​តង់សានី",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "ស៊ីលិញ​សូម៉ាលី",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "ស៊ីលិញ​អ៊ូហ្គង់ដា",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "សុម​កៀហ្ស៊ីស៊ីស្ថាន",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "សុម​អ៊ូសបេគីស្ថាន",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "សូមុនី​តាហ្ស៊ីគីស្ថាន",
+ "symbol": "TJS"
+ },
+ "ILS": {
+ "name": "ស្ស៊ីហ្គែល​អ៊ីស្រាអែល",
+ "symbol": "₪"
+ },
+ "UAH": {
+ "name": "ហ៊ូនីយ៉ា​អ៊ុយក្រែន",
+ "symbol": "UAH"
+ },
+ "ANG": {
+ "name": "ហ្គីឌិន​ហុល្លង់​អង់ទីលៀន",
+ "symbol": "ANG"
+ },
+ "GTQ": {
+ "name": "ហ្គីស្សាល​ក្វាតេម៉ាឡា",
+ "symbol": "GTQ"
+ },
+ "PYG": {
+ "name": "ហ្គូរីនី​ប៉ារ៉ាហ្គាយ",
+ "symbol": "PYG"
+ },
+ "HUF": {
+ "name": "ហ្វូរីន​ហុងគ្រី",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "ហ្វ្រង់ BCEAO CFA",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ហ្វ្រង់ BEAC CFA",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ហ្វ្រង់ CFP",
+ "symbol": "CFPF"
+ },
+ "CHF": {
+ "name": "ហ្វ្រង់ ស្វីស",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "ហ្វ្រង់​កុងហ្គោ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ហ្វ្រង់​កូម័រ",
+ "symbol": "KMF"
+ },
+ "DJF": {
+ "name": "ហ្វ្រង់​ជីប៊ូទី",
+ "symbol": "DJF"
+ },
+ "BIF": {
+ "name": "ហ្វ្រង់​ប៊ូរុនឌី",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "ហ្វ្រង់​រវ៉ាន់ដា",
+ "symbol": "RWF"
+ },
+ "GNF": {
+ "name": "ហ្វ្រង់​ហ្គីណេ",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "ហ្វ្រ័ររិញ​អារ៉ូបា",
+ "symbol": "AWG"
+ },
+ "PLN": {
+ "name": "ហ្សូទី​ប៉ូឡូញ",
+ "symbol": "PLN"
+ },
+ "GEL": {
+ "name": "ឡារី​​ហ្សកហ្ស៊ី",
+ "symbol": "GEL"
+ },
+ "MGA": {
+ "name": "អារៀរី​ម៉ាឡាហ្គាស៊ី",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "អាហ្វហ្គានី​អាហ្វហ្គានីស្ថាន",
+ "symbol": "AFN"
+ },
+ "CVE": {
+ "name": "អ៊ីស្កូឌូ​កាប់វែរ",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "អឺរ៉ូ",
+ "symbol": "€"
+ },
+ "MRO": {
+ "name": "អ៊ូហ្គីយ៉ា​ម៉ូរីតានី",
+ "symbol": "MRO"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kn.json b/library/intl/resources/currency/kn.json
new file mode 100644
index 000000000..60a4577be
--- /dev/null
+++ b/library/intl/resources/currency/kn.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ಫ್ರಾಂಕ್ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA ಫ್ರಾಂಕ್ BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP ಫ್ರಾಂಕ್",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "ಅಂಗೋಲಾದ ಕ್ವಾನ್ಝಾ",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "ಅಝರ್‌ಬೈಜಾನಿ ಮನಾತ್",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "ಅಫ್‌ಘನ್ ಅಫಗಾನಿ",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "ಅಮೆರಿಕದ ಡಾಲರ್‌",
+ "symbol": "$"
+ },
+ "AWG": {
+ "name": "ಅರುಬನ್ ಫ್ಲೊರೀನ್‌‌",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "ಅರ್ಜೆಂಟಿನಾ ಪೆಸೊ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ಅರ್ಮೆನಿಯನ್ ಡ್ರಾಮ್",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "ಅಲ್ಗೇರಿಯನ್ ದಿನಾರ್",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ಅಲ್‌ಬೇನಿಯನ್ ಲೆಕ್",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "ಆಸ್ಟ್ರೇಲಿಯನ್ ಡಾಲರ್‌",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "ಇಂಡೊನೇಷ್ಯಾ ರುಪೈ",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ಇಥಿಯೋಪಿಯನ್ ಬಿರ್",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ಇರಾಖಿಯನ್ ದಿನಾರ್",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ಇರಾನಿಯನ್ ರಿಯಲ್",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ಇಸ್ರೇಲಿ ನ್ಯೂ ಶೇಖಲ್",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "ಈಜಿಪ್ಷಿಯನ್ ಪೌಂಡ್‍",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ಉಕ್ರೇನಿಯನ್ ಹ್ರಿವ್ನೀಯ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ಉಗಾಂಡನ್ ಶಿಲ್ಲಿಂಗ್",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಸೊಮ್",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ಉತ್ತರ ಕೊರಿಯನ್ ವೋನ್",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ಉರುಗ್ವೆಯ ಪೆಸೊ",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "ಎರಿತ್ರಿಯನ್ ನಕ್ಫಾ",
+ "symbol": "ERN"
+ },
+ "ISK": {
+ "name": "ಐಸ್‌ಲ್ಯಾಂಡಿಕ್ ಕ್ರೋನಾ",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ಒಮಾನಿ ರಿಯಲ್",
+ "symbol": "OMR"
+ },
+ "KZT": {
+ "name": "ಕಜಾಕಿಸ್ತಾನಿ ತೆಂಗೆ",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "ಕಾಂಗೋಲೀಸ್ ಫ್ರಾಂಕ್",
+ "symbol": "CDF"
+ },
+ "KHR": {
+ "name": "ಕಾಂಬೋಡಿಯನ್ ರಿಯಲ್",
+ "symbol": "KHR"
+ },
+ "KGS": {
+ "name": "ಕಿರ್ಗಿಸ್ತಾನಿ ಸೋಮ್",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "ಕುವೈತೀ ದಿನಾರ್",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ಕೆನಡಾದ ಡಾಲರ್",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "ಕೆನ್ಯನ್ ಶಿಲ್ಲಿಂಗ್",
+ "symbol": "KES"
+ },
+ "KYD": {
+ "name": "ಕೆಮ್ಯಾನ್‌ ಐಲ್ಯಾಂಡ್‌ನ ಡಾಲರ್‌",
+ "symbol": "KYD"
+ },
+ "CVE": {
+ "name": "ಕೇಪ್ ವರ್ಡಿನ್ ಎಸ್‌ಕೂಡೊ",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "ಕೊಮೊರಿಯನ್ ಫ್ರಾಂಕ್",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ಕೊಲೊಂಬಿಯೋದ ಪೆಸೊ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "ಕೋಸ್ಟ ರಿಕನ್ ಕೊಲನ್",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "ಕ್ಯುಬಾದ ಪರಿವರ್ತನೀಯ ಪೆಸೊ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "ಕ್ಯೂಬಾದ ಪೆಸೊ",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "ಕ್ರೊಯೆಷ್ಯಾದ ಕೂನಾ",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "ಖತಾರಿ ರಿಯಲ್",
+ "symbol": "QAR"
+ },
+ "GNF": {
+ "name": "ಗಿನಿಯನ್ ಫ್ರಾಂಕ್",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ಗಿಬ್ರಾಲ್ಟರ್ ಪೌಂಡ್",
+ "symbol": "GIP"
+ },
+ "GYD": {
+ "name": "ಗುಯಾನೀಸ್‌ ಡಾಲರ್‌",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ಗ್ಯಾಂಬಿಯಾದ ದಲಾಸಿ",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "ಗ್ವಾಟೆಮಾಲಾದ ಕುಯಿಟ್ಸಲ್‌‌",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ಘಾನಾದ ಸೆದಿ",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ಚಿಲಿಯ ಪೆಸೊ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ಚೈನೀಸ್ ಯುವಾನ್",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ಜಪಾನೀಸ್ ಯೆನ್",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "ಜಮೈಕನ್ ಡಾಲರ್",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "ಜಾಂಬಿಯಾ ಕ್ವಾಚ",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "ಜಾರ್ಜಿಯಾದ ಲಾರಿ",
+ "symbol": "GEL"
+ },
+ "DJF": {
+ "name": "ಜಿಬೊಟಿಯನ್ ಫ್ರಾಂಕ್",
+ "symbol": "DJF"
+ },
+ "JOD": {
+ "name": "ಜೋರ್ಡಾನಿಯನ್ ದಿನಾರ್",
+ "symbol": "JOD"
+ },
+ "CZK": {
+ "name": "ಝೆಕ್ ಗಣರಾಜ್ಯ ಕೊರೂನ",
+ "symbol": "CZK"
+ },
+ "TRY": {
+ "name": "ಟರ್ಕಿಶ್ ಲಿರಾ",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "ಟರ್ಕ್‍ಮೆನಿಸ್ತಾನ್ ಮನಾತ್",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "ಟೊಂಗಾ ಪಾಂಗ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊ ಡಾಲರ್",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "ಡೊಮಿನಿಕನ್ ಪೆಸೊ",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ಡ್ಯಾನಿಶ್ ಕ್ರೋನ್",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ತಜಕಿಸ್ತಾನಿ ಸೊಮೋನಿ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ತಾನ್‌ಜೇನಿಯನ್ ಶಿಲ್ಲಿಂಗ್",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "ತುನೀಸಿಯನ್ ದಿನಾರ್",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "ಥಾಯ್ ಬಹ್ತ್",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "ದಕ್ಷಿಣ ಆಫ್ರಿಕನ್ ರಾಂಡ್",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ದಕ್ಷಿಣ ಕೊರಿಯನ್ ವೊನ್",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "ದಕ್ಷಿಣ ಸೂಡಾನೀಸ್ ಪೌಂಡ್‍",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "ನಮೀಬಿಯನ್ ಡಾಲರ್",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "ನಾರ್ವೇಯ ಕ್ರೋನ್",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "ನಿಕಾರಗ್ವಾದ ಕರ್ದೊಬಾ",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "ನೆದರ್ಲೆಂಡ್ಸ್ ಆಂಟಿಲಿಯನ್ ಗಿಲ್ಡರ್",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ನೇಪಾಳದ ರುಪೀ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ನೈಜೀರಿಯಾದ ನೇರಾ",
+ "symbol": "NGN"
+ },
+ "TWD": {
+ "name": "ನ್ಯೂ ತೈವಾನ್ ಡಾಲರ್",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಡಾಲರ್",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾ",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "ಪಪುವಾ ನ್ಯೂ ಗಿನಿಯನ್ ಕಿನಾ",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "ಪಾಕಿಸ್ತಾನದ ರುಪೀ",
+ "symbol": "PKR"
+ },
+ "XCD": {
+ "name": "ಪೂರ್ವ ಕೆರೀಬಿಯನ್ ಡಾಲರ್",
+ "symbol": "EC$"
+ },
+ "PYG": {
+ "name": "ಪೆರುಗ್ವೇಯ ಗ್ವಾರನೀ",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ಪೆರುವಿಯನ್ ನುಯೆವೊ ಸೊಲ್",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ಪೊಲಿಶ್ ಝ್ಲೋಟಿ",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪೌಂಡ್",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ಫಿಜಿಯನ್ ಡಾಲರ್",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ಫಿಲಿಪ್ಪೈನ್ ಪೆಸೊ",
+ "symbol": "PHP"
+ },
+ "BBD": {
+ "name": "ಬರ್ಬಾಡಿಯನ್ ಡಾಲರ್",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ಬರ್ಮುಡನ್ ಡಾಲರ್",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ಬಲ್ಗೇರಿಯನ್ ಲೆವ್",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "ಬಹಾಮಿಯನ್ ಡಾಲರ್",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ಬಹ್‌‌ರೈನಿ ದಿನಾರ್",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "ಬಾಂಗ್ಲಾದೇಶದ ಟಾಕಾ",
+ "symbol": "BDT"
+ },
+ "BIF": {
+ "name": "ಬುರುಂದಿಯನ್ ಫ್ರಾಂಕ್",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "ಬೆಲಾರುಸಿಯನ್ ರೂಬಲ್",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ಬೆಲೀಜ್ ಡಾಲರ್",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "ಬೊಲಿವಿಯಾದ ಬೊಲಿವಿಯಾನೊ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ಬೋಟ್ಸ್‌ವಾನನ್ ಪುಲಾ",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ಬೋಸ್ನಿಯಾ-ಹರ್ಜ್‌ಗೋವಿನ ಪರಿವರ್ತನೀಯ ಗುರುತು",
+ "symbol": "BAM"
+ },
+ "GBP": {
+ "name": "ಬ್ರಿಟೀಷ್ ಪೌಂಡ್ ಸ್ಟೆರ್ಲಿಂಗ್",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ಬ್ರೂನಿ ಡಾಲರ್",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "ಬ್ರೆಜಿಲಿಯನ್‌ ರಿಯಲ್",
+ "symbol": "R$"
+ },
+ "INR": {
+ "name": "ಭಾರತೀಯ ರುಪಾಯಿ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ಭೂತಾನೀಸ್ ನುಲ್ತರಮ್",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "ಮಂಗೋಲಿಯಾದ ತುಗ್ರಿಕ್‌‌",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "ಮಕ್ಯೂದ ಪಟಕಾ",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "ಮಲಗಾಸಿ ಅರಿಯಾರಿ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ಮಲಾವಿಯ ಕ್ವಾಚ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ಮಲೇಶಿಯನ್ ರಿಂಗಿಟ್ಟ್",
+ "symbol": "MYR"
+ },
+ "MDL": {
+ "name": "ಮಲ್ದೋವಾದ ಲೆವೂ",
+ "symbol": "MDL"
+ },
+ "MUR": {
+ "name": "ಮಾರಿಷಿಯನ್ ರುಪಿ",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "ಮಾಲ್ಡೀವಿಯನ್ ರುಫಿಯಾ",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "ಮೆಕ್ಸಿಕೊದ ಪೆಸೊ",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "ಮೆಸಡೋನಿಯನ್ ದಿನಾರ್",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ಮೊಝಾಂಬಿಕನ್ ಮೆಟಿಕಲ್",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "ಮೊರೊಕನ್ ದಿರ್‌ಹಮ್",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "ಮೌರೀಶಿಯನಿಯನ್ ಒಗಿಯ",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "ಮ್ಯಾನ್ಮಾರ್ ಕ್ಯಾಟ್",
+ "symbol": "MMK"
+ },
+ "EUR": {
+ "name": "ಯೂರೊ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "ಯೆಮೆನಿ ರಿಯಲ್",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "ರಶಿಯನ್ ರೂಬಲ್",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ರುವಾಂಡನ್ ಫ್ರಾಂಕ್",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ರೊಮೇನಿಯನ್ ಲೆವು",
+ "symbol": "RON"
+ },
+ "LTL": {
+ "name": "ಲಿಥುನಿಯನ್‌ ಲಿತಾಸ್‌",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ಲಿಬಿಯಾದ ದಿನಾರ್‌",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "ಲಿಬೇರಿಯನ್ ಡಾಲರ್",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ಲೆಬೆನೀಸ್ ಪೌಂಡ್",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ಲೆಸೊತೊ ಲೊತಿ",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "ಲೋಟಿಯನ್ ಕಿಪ್",
+ "symbol": "LAK"
+ },
+ "VUV": {
+ "name": "ವನೂತು ವತು",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ವಿಯೆಟ್ನಾಮೀಸ್ ಡಾಂಗ್",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "ವೆನಿಜುಲಿಯನ್ ಬೊಲಿವರ್",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "ಶ್ರೀಲಂಕಾದ ರುಪೀ",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "ಸಂಯುಕ್ತ ಅರಬ್‌ ಎಮಿರೇಟ್‌‌ಗಳ ದಿರಾಮ್‌‌",
+ "symbol": "AED"
+ },
+ "WST": {
+ "name": "ಸಮೋನ್ ತಲಾ",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ಸಾವೊ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪ್ ದೊಬ್ರಾ",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "ಸಿಂಗಾಪುರ್ ಡಾಲರ್‌",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "ಸಿಯೆರಾ ಲಿಯೋನಿಯನ್ ಲಿಯೋನ್",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "ಸಿರಿಯನ್ ಪೌಂಡ್",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ಸುಡಾನೀಸ್ ಪೌಂಡ್",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ಸುರಿನಾಮೀಸ್ ಡಾಲರ್",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ಸೆಚೊಲಿಯೊಸ್ ರುಪಿ",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "ಸೆರ್ಬಿಯನ್ ದಿನಾರ್",
+ "symbol": "RSD"
+ },
+ "SHP": {
+ "name": "ಸೇಂಟ್ ಹೆಲೇನಾ ಪೌಂಡ್",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ಸೊಮಾಲಿ ಶಿಲ್ಲಿಂಗ್",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ಸೊಲೊಮನ್ ದ್ವೀಪಗಳ ಡಾಲರ್",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "ಸೌದಿ ರಿಯಾಲ್",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "ಸ್ವಾಜಿ ಲಿಲಂಗೆನಿ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ಸ್ವಿಸ್ ಫ್ರಾಂಕ್",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ಸ್ವೀಡಿಷ್ ಕ್ರೋನಾ",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "ಹಂಗೇರಿಯನ್ ಫೋರಿಂಟ್",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "ಹಾಂಗ್ ಕಾಂಗ್ ಡಾಲರ್",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "ಹೈಟಿಯ ಗೋರ್ದೆ",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ಹೊಂಡುರಾನ್‌ ಲೆಂಪಿರಾ",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ko.json b/library/intl/resources/currency/ko.json
new file mode 100644
index 000000000..82409da16
--- /dev/null
+++ b/library/intl/resources/currency/ko.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA 프랑 BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA 프랑 BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP 프랑",
+ "symbol": "CFPF"
+ },
+ "GHS": {
+ "name": "가나 시디",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "가이아나 달러",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "감비아 달라시",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "과테말라 케트살",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "기니 프랑",
+ "symbol": "GNF"
+ },
+ "NAD": {
+ "name": "나미비아 달러",
+ "symbol": "NAD"
+ },
+ "SSP": {
+ "name": "남수단 파운드",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "남아프리카 랜드",
+ "symbol": "ZAR"
+ },
+ "ANG": {
+ "name": "네덜란드령 안틸레스 길더",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "네팔 루피",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "노르웨이 크로네",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "뉴질랜드 달러",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "니제르 나이라",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "니카라과 코르도바 오로",
+ "symbol": "NIO"
+ },
+ "KRW": {
+ "name": "대한민국 원",
+ "symbol": "₩"
+ },
+ "DKK": {
+ "name": "덴마크 크로네",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "도미니카 페소",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "동카리브 달러",
+ "symbol": "EC$"
+ },
+ "LAK": {
+ "name": "라오스 키프",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "라이베리아 달러",
+ "symbol": "LRD"
+ },
+ "RUB": {
+ "name": "러시아 루블",
+ "symbol": "RUB"
+ },
+ "LBP": {
+ "name": "레바논 파운드",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "레소토 로티",
+ "symbol": "LSL"
+ },
+ "RON": {
+ "name": "루마니아 레우",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "르완다 프랑",
+ "symbol": "RWF"
+ },
+ "LYD": {
+ "name": "리비아 디나르",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "리투아니아 리타",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "마다가스카르 아리아리",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "마카오 파타카",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "마케도니아 디나르",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "말라위 콰쳐",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "말레이시아 링깃",
+ "symbol": "MYR"
+ },
+ "MXN": {
+ "name": "멕시코 페소",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "모로코 디렘",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "모리셔스 루피",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "모리타니 우기야",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "모잠비크 메티칼",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "몰도바 레이",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "몰디브 제도 루피아",
+ "symbol": "MVR"
+ },
+ "MNT": {
+ "name": "몽골 투그릭",
+ "symbol": "MNT"
+ },
+ "USD": {
+ "name": "미국 달러",
+ "symbol": "US$"
+ },
+ "MMK": {
+ "name": "미얀마 키얏",
+ "symbol": "MMK"
+ },
+ "VUV": {
+ "name": "바누아투 바투",
+ "symbol": "VUV"
+ },
+ "BHD": {
+ "name": "바레인 디나르",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "바베이도스 달러",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "바하마 달러",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "방글라데시 타카",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "버뮤다 달러",
+ "symbol": "BMD"
+ },
+ "VEF": {
+ "name": "베네수엘라 볼리바르",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "베트남 동",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "벨라루스 루블",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "벨리즈 달러",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "보스니아-헤르체고비나 태환 마르크",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "보츠와나 폴라",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "볼리비아노",
+ "symbol": "BOB"
+ },
+ "BND": {
+ "name": "부루나이 달러",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "부룬디 프랑",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "부탄 눌투눔",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "불가리아 레프",
+ "symbol": "BGN"
+ },
+ "BRL": {
+ "name": "브라질 레알",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "사우디아라비아 리얄",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "상투메 프린시페 도브라",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "서 사모아 탈라",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "세르비아 디나르",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "세이셸 루피",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "세인트헬레나 파운드",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "소말리아 실링",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "솔로몬 제도 달러",
+ "symbol": "SBD"
+ },
+ "SDG": {
+ "name": "수단 파운드",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "수리남 달러",
+ "symbol": "SRD"
+ },
+ "LKR": {
+ "name": "스리랑카 루피",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "스와질란드 릴랑게니",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "스웨덴 크로나",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "스위스 프랑",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "시리아 파운드",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "시에라리온 리온",
+ "symbol": "SLL"
+ },
+ "TWD": {
+ "name": "신 타이완 달러",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "신 터키 리라",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "싱가폴 달러",
+ "symbol": "SGD"
+ },
+ "AED": {
+ "name": "아랍에미리트 디르함",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "아루바 플로린",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "아르메니아 드람",
+ "symbol": "AMD"
+ },
+ "ARS": {
+ "name": "아르헨티나 페소",
+ "symbol": "ARS"
+ },
+ "ISK": {
+ "name": "아이슬란드 크로나",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "아제르바이잔 마나트",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "아프가니스탄 아프가니",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "알바니아 레크",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "알제리 디나르",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "앙골라 콴자",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "에리트리아 나크파",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "엘살바도르 콜론",
+ "symbol": "SVC"
+ },
+ "YER": {
+ "name": "예멘 리알",
+ "symbol": "YER"
+ },
+ "OMR": {
+ "name": "오만 리얄",
+ "symbol": "OMR"
+ },
+ "HNL": {
+ "name": "온두라스 렘피라",
+ "symbol": "HNL"
+ },
+ "JOD": {
+ "name": "요르단 디나르",
+ "symbol": "JOD"
+ },
+ "UGX": {
+ "name": "우간다 실링",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "우루과이 페소 우루과요",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "우즈베키스탄 숨",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "우크라이나 그리브나",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "유로",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "이디오피아 비르",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "이라크 디나르",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "이란 리얄",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "이스라엘 신권 세켈",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "이집트 파운드",
+ "symbol": "EGP"
+ },
+ "INR": {
+ "name": "인도 루피",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "인도네시아 루피아",
+ "symbol": "IDR"
+ },
+ "JPY": {
+ "name": "일본 엔화",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "자메이카 달러",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "잠비아 콰쳐",
+ "symbol": "ZMW"
+ },
+ "KPW": {
+ "name": "조선 민주주의 인민 공화국 원",
+ "symbol": "KPW"
+ },
+ "GEL": {
+ "name": "조지아 라리",
+ "symbol": "GEL"
+ },
+ "CNY": {
+ "name": "중국 위안화",
+ "symbol": "CN¥"
+ },
+ "DJF": {
+ "name": "지부티 프랑",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "지브롤터 파운드",
+ "symbol": "GIP"
+ },
+ "ZWL": {
+ "name": "짐바브웨 달러 (2009)",
+ "symbol": "ZWL"
+ },
+ "CZK": {
+ "name": "체코 공화국 코루나",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "칠레 페소",
+ "symbol": "CLP"
+ },
+ "CVE": {
+ "name": "카보베르데 에스쿠도",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "카자흐스탄 텐게",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "카타르 리얄",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "캄보디아 리얄",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "캐나다 달러",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "케냐 실링",
+ "symbol": "KES"
+ },
+ "KYD": {
+ "name": "케이맨 제도 달러",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "코모르 프랑",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "코스타리카 콜론",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "콜롬비아 페소",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "콩고 프랑 콩골라스",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "쿠바 태환 페소",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "쿠바 페소",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "쿠웨이트 디나르",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "크로아티아 쿠나",
+ "symbol": "HRK"
+ },
+ "KGS": {
+ "name": "키르기스스탄 솜",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "타지키스탄 소모니",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "탄자니아 실링",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "태국 바트",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "통가 파앙가",
+ "symbol": "TOP"
+ },
+ "TMT": {
+ "name": "투르크메니스탄 마나트",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "튀니지 디나르",
+ "symbol": "TND"
+ },
+ "TTD": {
+ "name": "트리니다드 토바고 달러",
+ "symbol": "TTD"
+ },
+ "PAB": {
+ "name": "파나마 발보아",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "파라과이 과라니",
+ "symbol": "PYG"
+ },
+ "GBP": {
+ "name": "파운드",
+ "symbol": "£"
+ },
+ "PKR": {
+ "name": "파키스탄 루피",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "파푸아뉴기니 키나",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "페루 누에보 솔",
+ "symbol": "PEN"
+ },
+ "FKP": {
+ "name": "포클랜드제도 파운드",
+ "symbol": "FKP"
+ },
+ "PLN": {
+ "name": "폴란드 즐로티",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "피지 달러",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "필리핀 페소",
+ "symbol": "PHP"
+ },
+ "HTG": {
+ "name": "하이티 구르드",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "헝가리 포린트",
+ "symbol": "HUF"
+ },
+ "AUD": {
+ "name": "호주 달러",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "홍콩 달러",
+ "symbol": "HK$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ks.json b/library/intl/resources/currency/ks.json
new file mode 100644
index 000000000..0ce1b1582
--- /dev/null
+++ b/library/intl/resources/currency/ks.json
@@ -0,0 +1,634 @@
+{
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "آزَرباجانی مَنَٹ",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "آسٹریلِیَن ڈالَر",
+ "symbol": "A$"
+ },
+ "ARS": {
+ "name": "أرجَنٹیٖن پِسو",
+ "symbol": "ARS"
+ },
+ "ALL": {
+ "name": "اٮ۪لبینِیَن لِک",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "اٮ۪لجیرِیَن ڈیٖنار",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "اٮ۪نگولَن کوانزا",
+ "symbol": "AOA"
+ },
+ "UZS": {
+ "name": "اُبیکِستان سوم",
+ "symbol": "UZS"
+ },
+ "ETB": {
+ "name": "اِتھوپِیَن بِر",
+ "symbol": "ETB"
+ },
+ "EGP": {
+ "name": "اِجِپٹِیَن پَوُنڑ",
+ "symbol": "EGP"
+ },
+ "AMD": {
+ "name": "اَرمانٮ۪ن ڈرٛٮ۪م",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "اَروبَن فِلورِن",
+ "symbol": "AWG"
+ },
+ "UYU": {
+ "name": "اُروٗگایَن پیٚسو",
+ "symbol": "UYU"
+ },
+ "ILS": {
+ "name": "اِزرٲیِلی نٔوۍ شٮ۪قٕل",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "افغان افغٲنی",
+ "symbol": "AFN"
+ },
+ "UGX": {
+ "name": "اُگاداہُک شِلِنٛگ",
+ "symbol": "UGX"
+ },
+ "IDR": {
+ "name": "اِنڑونیشیاہُک رُپِیاہ",
+ "symbol": "IDR"
+ },
+ "OMR": {
+ "name": "اومِنی رِیال",
+ "symbol": "OMR"
+ },
+ "IQD": {
+ "name": "ایٖراقُک دیٖنار",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ایٖرانُک رِیال",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "اَیسلینٛڑُک کرٛونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "بابیڑِیَن ڈالَر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحریٖنی دیٖنار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برٛازیٖلین رِیَل",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "برطٲنوی پاونٛڑ سٹٔرلِنٛگ",
+ "symbol": "£"
+ },
+ "BMD": {
+ "name": "بٔرمیوٗڑَن ڈالَر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "بُرُنڑِین فرینٛک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برٛونی ڈالَر",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "بِلِزی ڈالر",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "بِلیروشِیَن رِبٕل",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "بَنگلادیٖشی ٹَکا",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "بہامِیَن ڈالر",
+ "symbol": "BSD"
+ },
+ "BWP": {
+ "name": "بوٹٕسوانَن پُلا",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "بوٗٹینیٖز نگُلٹرٛم",
+ "symbol": "BTN"
+ },
+ "BAM": {
+ "name": "بوزنِیاہَرزِگووِنا کَنوٲٹیبٕل مارٕک",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولِوِیَن بولوینو",
+ "symbol": "BOB"
+ },
+ "BGN": {
+ "name": "بیلگیرِیَن ہاڑ لِو",
+ "symbol": "BGN"
+ },
+ "PKR": {
+ "name": "پاکِستٲنۍ رۄپَے",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "پانامانِیَن بالبوز",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "پٮ۪رٮ۪گیوٗوَیَن گُعارانی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پٔریوٗوِیَن نیوٗاوز سولٕز",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "پھِلِپایِٔن پٮ۪سو",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "پولِش زلوٹی",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "تاجِکتانُک سَمونی",
+ "symbol": "TJS"
+ },
+ "TRY": {
+ "name": "تُرکیہُک لیرا",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "تَنزانیاہُک شِلِنٛگ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "تھایھک بات",
+ "symbol": "THB"
+ },
+ "TTD": {
+ "name": "ٹرِنہِ ڈیڈ تہٕ ٹوبیگو ڈالَر",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ٹُنیشیاہُک دیٖنار",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ٹونگَن پانٛگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانُک یَن",
+ "symbol": "JP¥"
+ },
+ "GEL": {
+ "name": "جارجِیَن لاری",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "جَرڑینیاہُک دیٖنار",
+ "symbol": "JOD"
+ },
+ "JMD": {
+ "name": "جَمَیکاہُک ڑالَر",
+ "symbol": "JMD"
+ },
+ "KPW": {
+ "name": "جنوٗبی کورِیَن وَن",
+ "symbol": "KPW"
+ },
+ "CLP": {
+ "name": "چِلِن پِسو",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "چیک کوریٖنا",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "چینیٖز یَن رِنمِنبی",
+ "symbol": "CN¥"
+ },
+ "HKD": {
+ "name": "حانٛگ کانٛگُک ڑالَر",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "حَنگیرِیَن فورِنٛٹ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "حونڑورنُک لٮ۪مپیٖرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "حیشَنُک گوڑ",
+ "symbol": "HTG"
+ },
+ "DKK": {
+ "name": "ڈٔنِش کرٛون",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومِنِکَن پِسو",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "رِٹریٖن نَفکا",
+ "symbol": "ERN"
+ },
+ "RUB": {
+ "name": "رٔشیَن رَبٕل",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "روانٛڑَن فرانٛک",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "رومانِیَن لٮ۪یوٗ",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زِمبابیُک کواچا",
+ "symbol": "ZMW"
+ },
+ "ZAR": {
+ "name": "ساوُتھ افریٖکاہُک رینڈ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ساوتھ کورِیَن وَن",
+ "symbol": "₩"
+ },
+ "RSD": {
+ "name": "سٔربِیَن دیٖنار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لَنکاہٕچ رۄپَے",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "سُریٖنامُک ڈالَر",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "سَلویدَرُک کولَن",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "سَمون تَلا",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "سِنگاپورُک ڈالَر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی لِلَنگیٚنی",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "سودیٖیُک رِیال",
+ "symbol": "SAR"
+ },
+ "SDG": {
+ "name": "سوٗڈانُک پونٛڈ",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "سُوِز فریک",
+ "symbol": "CHF"
+ },
+ "SBD": {
+ "name": "سولَمَن جٔزیٖرُک ڈالَر",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "سومالی شِلِنٛگ",
+ "symbol": "SOS"
+ },
+ "SEK": {
+ "name": "سویٖڈِش کَرونا",
+ "symbol": "SEK"
+ },
+ "XAF": {
+ "name": "سی ایٚف اے فرینک بی ایٖ اے سی",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "سی ایٚف اے فرینک بی سی ایٖ اے او",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "سی ایٚف پی فرینک",
+ "symbol": "CFPF"
+ },
+ "SYP": {
+ "name": "سیٖریاہُک پونٛڈ",
+ "symbol": "SYP"
+ },
+ "SHP": {
+ "name": "سینٹ ہیلِنا پونٛڈ",
+ "symbol": "SHP"
+ },
+ "FJD": {
+ "name": "فِجین ڈالر",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "فیکلینٛڑِس آیلینٛڑ پونٛڑ",
+ "symbol": "FKP"
+ },
+ "QAR": {
+ "name": "قطاری رِیال",
+ "symbol": "QAR"
+ },
+ "KWD": {
+ "name": "قُویتُک دیٖنار",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "کٮ۪نیَن شِلِنٛگ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "کِرگِستانُک سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروایشنُک کوٗنا",
+ "symbol": "HRK"
+ },
+ "KZT": {
+ "name": "کزاکِستان ٹینٛج",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "کَمبوڑِیاہُک رِیال",
+ "symbol": "KHR"
+ },
+ "CRC": {
+ "name": "کوسٹا رِکَن کولَن",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولَمبِین پِسو",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کومورِیَن فرٛینٛک",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "کونٛگولیٖز فرٛیک",
+ "symbol": "CDF"
+ },
+ "KYD": {
+ "name": "کیمین ججیٖرُک ڑالَر",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "کینَڑِیَن ڈالر",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "کیوٗبَن پِسو",
+ "symbol": "CUP"
+ },
+ "GIP": {
+ "name": "گِبریلٹَر پَاونٛڑ",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "گِنِیَن فرٛینٛک",
+ "symbol": "GNF"
+ },
+ "GHS": {
+ "name": "گَنیٚیَن سٮ۪ڑی",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "گواٹَمالَن قیوٗٹزَل",
+ "symbol": "GTQ"
+ },
+ "GMD": {
+ "name": "گیمبِیاہُک دلاسی",
+ "symbol": "GMD"
+ },
+ "GYD": {
+ "name": "گَیَنیٖزُک ڑالَر",
+ "symbol": "GYD"
+ },
+ "LYD": {
+ "name": "لِبیَن دیٖنار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "لِتھوینِیَن لِٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "لِسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "لَوٹِیَن کِپ",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "لیبنیٖزُک پاونٛڑ",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "لَیبیرِیَن ڑالَر",
+ "symbol": "LRD"
+ },
+ "MVR": {
+ "name": "مالدِیٖوِیَن رُفِیا",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "مٮ۪کانیٖز پَٹاکا",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "مٮ۪کَڑونِیَن دیٖنار",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "مٮ۪کسِکَن پٮ۪سو",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "مٮ۪لٮ۪گیسی اٮ۪ریَری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "مٮ۪لیوِیَن کواچا",
+ "symbol": "MWK"
+ },
+ "AED": {
+ "name": "مُتحدہ عرب اِمارات دِرہم",
+ "symbol": "AED"
+ },
+ "XCD": {
+ "name": "مَشرِقی کیرِبِیَن ڈالَر",
+ "symbol": "EC$"
+ },
+ "MYR": {
+ "name": "مَلیشِیَن رِنٛگِٹ",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "مورٮ۪شِیاہٕچ رۄپَے",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "مورِٹینِیَن عوگیوٗیا",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "موروکَن دِرہَم",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "موزیمبِکَن مٮ۪ٹِکَل",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "مولڑووین لیوٗ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "مۄنگولِیَن ٹُگرِک",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "مِیانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "نامِبِیَن ڑالَر",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "نایدَرلینٛڑ اٮ۪نٹٕلیٖیَن گِلڑَر",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "نِکٮ۪راگُوٮ۪ن کورڑوبا اورو",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "نورویٚیِنُک کرٛون",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "نِوزیٖلینٛڑُک ڑالَر",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "نوٚو تیوانُک ڈالَر",
+ "symbol": "NT$"
+ },
+ "NPR": {
+ "name": "نیپالٕچ رۄپَے",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "نَیجیرِیَن ڑالَر",
+ "symbol": "NGN"
+ },
+ "PGK": {
+ "name": "نیوٗ پیپُعا گِنِیَن کیٖنا",
+ "symbol": "PGK"
+ },
+ "INR": {
+ "name": "ہِندُستٲنۍ رۄپَے",
+ "symbol": "₹"
+ },
+ "VUV": {
+ "name": "وَنوٗاَتوٗ وَتوٗ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "وینٕزوٗلیُک بولِوَر",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "وِیَنَمُک ڈانٛگ",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "یَمنُک رِیال",
+ "symbol": "YER"
+ },
+ "USD": {
+ "name": "یوٗ ایٚس ڈالَر",
+ "symbol": "US$"
+ },
+ "EUR": {
+ "name": "یوٗرو",
+ "symbol": "€"
+ },
+ "UAH": {
+ "name": "یوٗکرینیاہُک ہرِوِنیا",
+ "symbol": "UAH"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksb.json b/library/intl/resources/currency/ksb.json
new file mode 100644
index 000000000..14978eb04
--- /dev/null
+++ b/library/intl/resources/currency/ksb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bil ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "dilham ya Falme za Kialabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dilham ya Moloko",
+ "symbol": "MAD"
+ },
+ "DZD": {
+ "name": "dinali ya Aljelia",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinali ya Bahaleni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinali ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinali ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinali ya Tunisia",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobla ya Sao Tome na Plincipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Austlalia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dola ya Libelia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Malekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "falanga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "falanga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "falanga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "falanga ya Bulundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "falanga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "falanga ya Komolo",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "falanga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "falanga ya Lwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "falanga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "ZAR": {
+ "name": "landi ya Aflika Kusini",
+ "symbol": "ZAR"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "liyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "INR": {
+ "name": "lupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "lupia ya Molisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "lupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naila ya Naijelia",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Elitlea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "pauni ya Misli",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingeeza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "JPY": {
+ "name": "salafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugwiya ya Molitania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "CNY": {
+ "name": "yaun lenminbi ya China",
+ "symbol": "CN¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "yulo",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksf.json b/library/intl/resources/currency/ksf.json
new file mode 100644
index 000000000..4ac12ffae
--- /dev/null
+++ b/library/intl/resources/currency/ksf.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XAF": {
+ "name": "fráŋ",
+ "symbol": "FCFA"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "ZAR": {
+ "name": "mɔni mǝ á afrik anǝ a sud",
+ "symbol": "ZAR"
+ },
+ "XOF": {
+ "name": "mɔni mǝ á afríka aná wɛs",
+ "symbol": "CFA"
+ },
+ "DZD": {
+ "name": "mɔni mǝ á aljɛrí",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "mɔni mǝ á amɛrika",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "mɔni mǝ á angóla",
+ "symbol": "AOA"
+ },
+ "SAR": {
+ "name": "mɔni mǝ á arabí saodí",
+ "symbol": "SAR"
+ },
+ "BHD": {
+ "name": "mɔni mǝ á barǝ́n",
+ "symbol": "BHD"
+ },
+ "AED": {
+ "name": "mɔni mǝ á bǝlɔŋ bǝ kaksa bɛ táatáaŋzǝn",
+ "symbol": "AED"
+ },
+ "BWP": {
+ "name": "mɔni mǝ á botswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "mɔni mǝ á burundí",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "mɔni mǝ á cín",
+ "symbol": "CN¥"
+ },
+ "DJF": {
+ "name": "mɔni mǝ á dyibutí",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "mɔni mǝ á ɛjípt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "mɔni mǝ á ɛritrɛ́",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "mɔni mǝ á ɛtyɔpí",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "mɔni mǝ á gambí",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "mɔni mǝ á indí",
+ "symbol": "₹"
+ },
+ "GBP": {
+ "name": "mɔni mǝ á ingɛrís",
+ "symbol": "£"
+ },
+ "JPY": {
+ "name": "mɔni mǝ á japɔ́ŋ",
+ "symbol": "JP¥"
+ },
+ "CAD": {
+ "name": "mɔni mǝ á kanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "mɔni mǝ á kapvɛr",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "mɔni mǝ á kɛnya",
+ "symbol": "KES"
+ },
+ "KMF": {
+ "name": "mɔni mǝ á komɔr",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "mɔni mǝ á kɔngó",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "mɔni mǝ á lǝsóto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "mɔni mǝ á libɛrya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "mɔni mǝ á libí",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "mɔni mǝ á madagaska",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "mɔni mǝ á malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "mɔni mǝ á marɔk",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mɔni mǝ á mwarís",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mɔni mǝ á mwaritaní",
+ "symbol": "MRO"
+ },
+ "NAD": {
+ "name": "mɔni mǝ á namibí",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "mɔni mǝ á nijɛ́rya",
+ "symbol": "NGN"
+ },
+ "AUD": {
+ "name": "mɔni mǝ á ɔstralí",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "mɔni mǝ á pɛrɛsǝ́",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "mɔni mǝ á rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "mɔni mǝ á saotomɛ́ ri priŋsib",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "mɔni mǝ á sɛcɛl",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "mɔni mǝ á sɛntɛ́len",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "mɔni mǝ á somalí",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "mɔni mǝ á sudan",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "mɔni mǝ á swazilan",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "mɔni mǝ á swís",
+ "symbol": "CHF"
+ },
+ "SLL": {
+ "name": "mɔni mǝ á syɛraleon",
+ "symbol": "SLL"
+ },
+ "TZS": {
+ "name": "mɔni mǝ á tanzaní",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "mɔni mǝ á tunɛsí",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "mɔni mǝ á uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "mɔni mǝ á zambí",
+ "symbol": "ZMW"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksh.json b/library/intl/resources/currency/ksh.json
new file mode 100644
index 000000000..c7441e096
--- /dev/null
+++ b/library/intl/resources/currency/ksh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afjahni",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "ajentiinesche Peeso",
+ "symbol": "ARS"
+ },
+ "EGP": {
+ "name": "äjiptesche Pongk",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "albaanesche Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "aljeresche Denaa",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ammärrikaanesche Dollaa",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angjolaanesche Kwansa",
+ "symbol": "AOA"
+ },
+ "AMD": {
+ "name": "armeenesche Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubesche Florin",
+ "symbol": "AWG"
+ },
+ "SVC": {
+ "name": "asalvadorejaanesche Cosan",
+ "symbol": "SVC"
+ },
+ "AZN": {
+ "name": "Asserbaidschaani Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "ätejoopesche Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "austraalesche Dollaa",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Bachrainesche Denaa",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "bahama’sche Dollaa",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Barbados-Dollaa",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizjaanesche Dollaa",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuuda-Dollaa",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanesesche Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bollivijano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "brasilljaanesche Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "brittesche £",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollaa",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "buljaaresche Lev",
+ "symbol": "BGN"
+ },
+ "MMK": {
+ "name": "burmeesesche Kyat",
+ "symbol": "MMK"
+ },
+ "BIF": {
+ "name": "burundesche Frang",
+ "symbol": "BIF"
+ },
+ "DKK": {
+ "name": "dänesche Kruhne",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "de vereineschte arraabesche Emiraate ier Dirham",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra vun São Tomé un Príncipe",
+ "symbol": "STD"
+ },
+ "TTD": {
+ "name": "Dollaa uß Trinidad un Tobääjo",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "dommenikaanesche Peesos",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollaa",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "fillipiinesche Pesos",
+ "symbol": "PHP"
+ },
+ "XOF": {
+ "name": "Frang uß de Älfebeinköß",
+ "symbol": "CFA"
+ },
+ "DJF": {
+ "name": "Frang uß Dschibuti",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "haiitesche Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "hondureanesche Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollaa",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indesche Ruupije",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneesesche Ruupije",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraakesche Denaa",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ißländesche Kruhne",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "ißraeelesche Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaikaanesche Dollaa",
+ "symbol": "JMD"
+ },
+ "GMD": {
+ "name": "jambesche Dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "janaaesche Cedi",
+ "symbol": "GHS"
+ },
+ "JPY": {
+ "name": "japaanesche Jen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "jemenitesche Rijal",
+ "symbol": "YER"
+ },
+ "GEL": {
+ "name": "jeorjesche Lari",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "jibraltaa’sche Pongk",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Jineea-Frang",
+ "symbol": "GNF"
+ },
+ "JOD": {
+ "name": "Jordaanesche Dollaa",
+ "symbol": "JOD"
+ },
+ "GYD": {
+ "name": "Juaana-Dollaa",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "juatemalesche Quetzal",
+ "symbol": "GTQ"
+ },
+ "KYD": {
+ "name": "Kaimann-Dollaa",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodschaanesche Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kannaadesche Dollaa",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdesche Eskuudos",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakesche Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "kataaresche Rijal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenjaanesche Schillinge",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirjiisesche Som",
+ "symbol": "KGS"
+ },
+ "XAF": {
+ "name": "Kmmeruhner Frang",
+ "symbol": "FCFA"
+ },
+ "COP": {
+ "name": "kolumbesche Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "kommooresche Frang",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongjoleesesche Frang",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "koßtarikaanesche Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "krowaatesche Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubaanesche Peesos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitesche Denaa",
+ "symbol": "KWD"
+ },
+ "LSL": {
+ "name": "lesoothesche Loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libaneesesche Pongk",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijaanesche Dollaa",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libesche Denaa",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "littouesche Litas",
+ "symbol": "LTL"
+ },
+ "LAK": {
+ "name": "loaatesche Kip",
+ "symbol": "LAK"
+ },
+ "MGA": {
+ "name": "madajaskesche Ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaneesesche Pataca",
+ "symbol": "MOP"
+ },
+ "MWK": {
+ "name": "malaawesche Kwache",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaisesche Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "mallediivesche Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marrokaanesche Dirhamm",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretanesche Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "maurizjahnesche Ruupije",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "mazedoonesche Denaa",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "mexekaanesche Peeso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldaavesche Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongjoolesche Tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mossambikaanesche Metical",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka uß Erritreja",
+ "symbol": "ERN"
+ },
+ "NAD": {
+ "name": "namiibesche Dollaa",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "neederlängsch antillesche Jullde",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepaleesesche Ruupije",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "neu taiwaneesesche Dollaa",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "neuseeländesche Dollaa",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "nijerijaanesche Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikarajaanesche Córdoba",
+ "symbol": "NIO"
+ },
+ "KPW": {
+ "name": "noodkorejaansche Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norrweejesche Kruhne",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ommaanesche Rijal",
+ "symbol": "OMR"
+ },
+ "CUC": {
+ "name": "ömtuuschbaa kubaanesche Pesos",
+ "symbol": "CUC"
+ },
+ "BAM": {
+ "name": "ömtuuschbaa Mark us Boßnije un dä Hächejovvina",
+ "symbol": "BAM"
+ },
+ "XCD": {
+ "name": "oß-karribbesche Dollaa",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "pakestaanesche Ruupije",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "pannameesesche Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua neujinejaanesche Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "parajuaanesche Juarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perruaanesche Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "IRR": {
+ "name": "persesche Rial",
+ "symbol": "IRR"
+ },
+ "XPF": {
+ "name": "polineesesche Frang",
+ "symbol": "CFPF"
+ },
+ "PLN": {
+ "name": "polnesche Złoty",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "Pongk vun de Falkland-Enselle",
+ "symbol": "FKP"
+ },
+ "BWP": {
+ "name": "Pula us Bozwaana",
+ "symbol": "BWP"
+ },
+ "RON": {
+ "name": "romäänesche Leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandesche Frang",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "russesche Ruubel",
+ "symbol": "RUB"
+ },
+ "ZMW": {
+ "name": "sambesche Kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samowaanesche Tala",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "särbesche Denaare",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "saudesche Rijal",
+ "symbol": "SAR"
+ },
+ "CLP": {
+ "name": "schileenesche Peeso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "schineesesche Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "LKR": {
+ "name": "schrilankesche Ruupije",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "schweedesche Kruhne",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "schweijzer Fränkli",
+ "symbol": "CHF"
+ },
+ "SCR": {
+ "name": "seischellesche Ruupije",
+ "symbol": "SCR"
+ },
+ "ZWL": {
+ "name": "simbabwesche Dollaa (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "singjapurejaanesche Dollaa",
+ "symbol": "SGD"
+ },
+ "ZAR": {
+ "name": "södaffrekaanesche Rand",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "södsudaneesesche Pongk",
+ "symbol": "SSP"
+ },
+ "SBD": {
+ "name": "solomonesche Dollaa",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somaalesche Schillenge",
+ "symbol": "SOS"
+ },
+ "KRW": {
+ "name": "söödkorejaansche Won",
+ "symbol": "₩"
+ },
+ "SLL": {
+ "name": "ẞjärra-lejoneesesche Leone",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "sudaneesesche Pongk",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "sürinameesesche Dollaa",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "süüresche Pund",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "swasiländesche Lilangeni",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "tadschikißtaanesche Somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tailändesche Baht",
+ "symbol": "THB"
+ },
+ "BDT": {
+ "name": "Taka us Bangladäsch",
+ "symbol": "BDT"
+ },
+ "TZS": {
+ "name": "tansaanesche Schillenge",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongjanes Paʻangache",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "törkesche Liire",
+ "symbol": "TRY"
+ },
+ "CZK": {
+ "name": "tschäschesche Kruhne",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tuneesesche Denaa",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmeneßtaanesche Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ujandesche Schillenge",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukraijnesche Hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "unjarresche Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "urrujuwaische Peeso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "ußbeekesche Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatesche Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelaanesche Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vijätnammeesesche Dong",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "wiißrußesche Rubel",
+ "symbol": "BYR"
+ },
+ "SHP": {
+ "name": "Zint-Hellena-Pongk",
+ "symbol": "SHP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ky.json b/library/intl/resources/currency/ky.json
new file mode 100644
index 000000000..bdab1fa2a
--- /dev/null
+++ b/library/intl/resources/currency/ky.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "Австралия доллары",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Азербайжан манаты",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "АКШ доллары",
+ "symbol": "USD"
+ },
+ "ALL": {
+ "name": "албан леги",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжир динары",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ангола кванзасы",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентина песосу",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Армения драмы",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "аруба флорини",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "Афганстан афганиси",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багама доллары",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Бангладеш такасы",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "барбадос доллары",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Бахрейн динары",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "беларусь рублу",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "белиз доллары",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермуд доллары",
+ "symbol": "BMD"
+ },
+ "AED": {
+ "name": "Бириккен Араб Эмираттары дирхамы",
+ "symbol": "AED"
+ },
+ "BGN": {
+ "name": "болгар левиси",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "боливия боливианосу",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "босния-герцоговина жүгүртөлмөлүү маркасы",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Ботсвана пуласы",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "бразилия реалы",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "британия фунт стерлинги",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Бруней доллары",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунди франкы",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутан нгултруму",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануату ватусу",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "венгр форинти",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "венесуэла боливары",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вьетнам доӊу",
+ "symbol": "₫"
+ },
+ "HTG": {
+ "name": "гаити гурдусу",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "Гамбия даласиси",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана седиси",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "гватемала кетсалы",
+ "symbol": "GTQ"
+ },
+ "GIP": {
+ "name": "гибралтар фунту",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Гине франкы",
+ "symbol": "GNF"
+ },
+ "HNL": {
+ "name": "гондурас лемпирасы",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Гоӊ Коӊ доллары",
+ "symbol": "HKD"
+ },
+ "GEL": {
+ "name": "Грузия лариси",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "гуйана доллары",
+ "symbol": "GYD"
+ },
+ "DKK": {
+ "name": "дания крону",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "доминикан песосу",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "NZD": {
+ "name": "Жаӊы Зеландия доллары",
+ "symbol": "NZD"
+ },
+ "JPY": {
+ "name": "Жапан йени",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Жибути франкы",
+ "symbol": "DJF"
+ },
+ "ZMW": {
+ "name": "Замбия квачасы",
+ "symbol": "ZMW"
+ },
+ "ILS": {
+ "name": "Израил жаӊы шегели",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "Индия руписи",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Индонезия рупийасы",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Ирак динары",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Иран риалы",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "исландия крону",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йемен риалы",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Йордания динары",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде эскудосу",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Казакстан теӊгеси",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "кайман доллары",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбожа риели",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канада доллары",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Катар риалы",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кения шиллинги",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "колумбия песосу",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморос франкы",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франкы",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "коста-рика колону",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "куба жүгүртүлмөлүү песосу",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "куба песосу",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейт динары",
+ "symbol": "KWD"
+ },
+ "XAF": {
+ "name": "КФА ВЕАС франкы",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "КФА ВСЕАО франкы",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "КФП франкы",
+ "symbol": "CFPF"
+ },
+ "KGS": {
+ "name": "Кыргызстан сому",
+ "symbol": "сом"
+ },
+ "CNY": {
+ "name": "Кытай юаны",
+ "symbol": "CN¥"
+ },
+ "LAK": {
+ "name": "Лаос киби",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Либерия доллары",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Ливан фунту",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Ливия динары",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "литва литасы",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "Мавританий руписи",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Мавритания угиясы",
+ "symbol": "MRO"
+ },
+ "MGA": {
+ "name": "Мадагаскар ариариси",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Макау патакасы",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "македон денары",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квачасы",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Малайзия ринггити",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Малдив Руфийасы",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокко дирхамы",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мексика песосу",
+ "symbol": "MXN"
+ },
+ "EGP": {
+ "name": "Мисир фунту",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "Мйанмар кйаты",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбик метикалы",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдован лейи",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монгол тугриги",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Намибия доллары",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непал руписи",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигерия найрасы",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нидерланд-антил гулдени",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "никарагуа кордобасы",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "норвегия крону",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Оман риалы",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "орус рублу",
+ "symbol": "RUB"
+ },
+ "UZS": {
+ "name": "Өзбекстан сому",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "Пакистан руписи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панама балбоасы",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа Жаӊы Гине кинасы",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "парагвай гуараниси",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "перу нуэво солу",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "польша злотыйы",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руанда франкы",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румын лейи",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "Самоа таласы",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе жана Принсипе добрасы",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Сауд риалы",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшел руписи",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "серб динары",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Сиерра-Леоне леонеси",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапур доллары",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сирия фунту",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломон доллары",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомали шиллинги",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Судан фунту",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "суринам доллары",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "Тажикстан сомониси",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Тай баты",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Тайвань жаӊы доллары",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Танзания шиллинги",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонга паангасы",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "тринидад жана тобаго доллары",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Тунис динары",
+ "symbol": "TND"
+ },
+ "KPW": {
+ "name": "Түндүк Корея уону",
+ "symbol": "KPW"
+ },
+ "TRY": {
+ "name": "Түркия лирасы",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Түркмөнстан манаты",
+ "symbol": "TMT"
+ },
+ "ZAR": {
+ "name": "Түштүк Африка ранды",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Түштүк Корея уону",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Түштүк Судан фунту",
+ "symbol": "SSP"
+ },
+ "UGX": {
+ "name": "Уганда шиллинги",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "украин гривени",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "уругвай песосу",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "Фижи доллары",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Филиппин песосу",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "фолкленд аралдарынын фунту",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "хорват кунасы",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "чех кронасы",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чили песосу",
+ "symbol": "CLP"
+ },
+ "XCD": {
+ "name": "чыгыш кариб доллары",
+ "symbol": "XCD"
+ },
+ "CHF": {
+ "name": "швейцария франкы",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "швеция крону",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шри Ланка руписи",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "Ыйык Елена фунту",
+ "symbol": "SHP"
+ },
+ "ERN": {
+ "name": "Эритреа накфасы",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Эфиопия бирри",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "ямайка доллары",
+ "symbol": "JMD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lag.json b/library/intl/resources/currency/lag.json
new file mode 100644
index 000000000..ddfa28c20
--- /dev/null
+++ b/library/intl/resources/currency/lag.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bíiri ya Ʉhabéeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Daláasi ya Gámbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dináairi ya Alijéria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dináari ya Baharéeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dináari ya Líbia",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dináari ya Tunísia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diriháamu ya Moróoko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diriháamu ya Ʉtemi wa Kɨaráabu",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dóbura ya SaoTóome na Pirínsipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dóola ya Amerɨ́ka",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dóola ya Ausitereelía",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dóola ya Kánada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dóola ya Libéria",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dóola ya Namíbia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikúudo ya Kepuvéede",
+ "symbol": "CVE"
+ },
+ "CHF": {
+ "name": "Faráaka ya Uswíisi",
+ "symbol": "CHF"
+ },
+ "BIF": {
+ "name": "Faráanga ya Burúundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faráanga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faráanga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faráanga ya Jibóuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faráanga ya Komóoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faráanga ya Kóongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faráanga ya Rwáanda",
+ "symbol": "RWF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwáacha ya Maláawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kwáanza ya Angóola",
+ "symbol": "AOA"
+ },
+ "ZMW": {
+ "name": "Kwácha ya Sámbia",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leóoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilengéeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lóoti ya Lesóoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Mpía ya bukini",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naíira ya Niijéria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nákɨfa ya Eriterea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Páundi ya Mísiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Páundi ya Mʉtakatíifu Heléena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Páundi ya Sudáani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Páundi ya Ʉɨngɨréesa",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Púula ya Botiswáana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Ráandi ya Afɨrɨka ya Saame",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyáali ya Saudía",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupía ya Índia",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupía ya Moríisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupía ya Shelishéeli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilíingi ya Kéenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilíingi ya Somália",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilíingi ya Taansanía",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilíingi ya Ugáanda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ungwíiya ya Moritánia",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yéeni ya Japáani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yúani Renimínibi ya Chíina",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yúuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lb.json b/library/intl/resources/currency/lb.json
new file mode 100644
index 000000000..ea1cf873c
--- /dev/null
+++ b/library/intl/resources/currency/lb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanesch Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanesche Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algereschen Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanesche Kwanza",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "Argentinesche Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeneschen Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Australeschen Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahama-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivianesche Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien an Herzegowina Konvertéierbar Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanesch Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianesche Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britescht Pond Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaresch Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Frang",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Frang (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Frang (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Frang",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenesche Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänesch Kroun",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanesche Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Frang",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egyptescht Pond",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El-Salvador-Colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritréieschen Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopescht Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgesche Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaeschen Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekesche Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Frang",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianesch Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong-Kong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indesch Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesesch Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakeschen Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranesch Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islännesch Kroun",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israeleschen Neie Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanesche Yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaneschen Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanesche Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadeschen Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasacheschen Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisesche Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianesche Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komore-Frang",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Frang",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatesche Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanesche Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanesche Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laoteschen Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesescht Pond",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianeschen Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libeschen Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauesche Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macau-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malayseschen Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldiven-Rupie",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkaneschen Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretaneschen Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedoneschen Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanesche Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldawesche Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoleschen Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanesche Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmaresche Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Neien Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neiséiland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NPR": {
+ "name": "Nepalesesch Rupie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguanesche Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerianeschen Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanesche Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegesch Kroun",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanesche Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribeschen Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanesch Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaesche Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neiguinéiesche Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayeschen Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaneschen Neie Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinnesche Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polneschen Zloty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CN¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Frang",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänesche Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russesche Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoaneschen Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméeschen Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "Schwäizer Frang",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Schwedesch Kroun",
+ "symbol": "SEK"
+ },
+ "RSD": {
+ "name": "Serbeschen Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonesche Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pond",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanesche Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesescht Pond",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanesche Won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Südsudanesescht Pond",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinameschen Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasilännesche Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrescht Pond",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailännesche Baht",
+ "symbol": "฿"
+ },
+ "TRY": {
+ "name": "Tierkesch Lira",
+ "symbol": "TRY"
+ },
+ "TOP": {
+ "name": "Tongaeschen Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-an-Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechesch Kroun",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tuneseschen Dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukraineschen Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungaresche Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayesche Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanesche Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnameseschen Dong",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "Wäissrussesche Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lg.json b/library/intl/resources/currency/lg.json
new file mode 100644
index 000000000..c5d3ebfa3
--- /dev/null
+++ b/library/intl/resources/currency/lg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biiru ey’Esyopya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ey’eGambya",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaali ey’Aligerya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaali ey’eBaareeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaali ey’eLibya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinaali ey’eSudaani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinaali ey’eTunizya",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diraamu ey’eMoroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diraamu eya Emireeti",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobura ey’eSantome ne Purincipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doola ey’Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doola ey’Awusiturelya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doola ey’eKanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doola ey’eLiberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doola ey’eNamibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikudo ey’Keepu Veredi",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ey’eburundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ey’eJjibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ey’eKomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ey’eKongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faranga ey’eMalagase",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faranga ey’eRwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ey’eSwitizirandi",
+ "symbol": "CHF"
+ },
+ "XOF": {
+ "name": "Faranga ey’omu Afirika ey’ebugwanjuba",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ey’omu Afirika eya wakati",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwaca ey’eMalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwaca ey’eZambya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ey’Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ey’eLesoso",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakifa ey’Eritureya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira ey’eNayijerya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pawundi ey’eBungereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pawundi ey’eMisiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pawundi ey’eSenti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ey’eBotiswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ey’eSawusafirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaali ey’eBuwarabu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupiya ey’eBuyindi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupiya ey’eMawurisyasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiya ey’eSesere",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silingi ey’eKenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silingi ey’eSomaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ey’eTanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi eya Yuganda",
+ "symbol": "USh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "MRO": {
+ "name": "Wugwiya ey’eMawritenya",
+ "symbol": "MRO"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ey’eJapani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yuwani Reniminibi ey’eCayina",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ln.json b/library/intl/resources/currency/ln.json
new file mode 100644
index 000000000..6bb60052f
--- /dev/null
+++ b/library/intl/resources/currency/ln.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "PAB": {
+ "name": "Balboa",
+ "symbol": "PAB"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birɛ ya Etsiópi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "GHS": {
+ "name": "Cedi",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colon ya Kosta Rika",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinarɛ ya Alizeri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinarɛ ya Bahrɛnɛ",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinarɛ ya Libí",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinarɛ ya Sudá",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinarɛ ya Tinizi",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirihame ya Marokɛ",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirihamɛ ya Lémila alabo",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tomé mpé Presipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolarɛ ya Ameriki",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolarɛ ya Kanadá",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolarɛ ya Liberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolarɛ ya Namibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dolarɛ ya Ositali",
+ "symbol": "A$"
+ },
+ "CVE": {
+ "name": "Esikudo ya Kapevɛrɛ",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Ɛlɔ́",
+ "symbol": "€"
+ },
+ "XOF": {
+ "name": "Falánga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Falánga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Falánga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Falánga ya Dzibuti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Falánga ya Gine",
+ "symbol": "GNF"
+ },
+ "KMF": {
+ "name": "Falánga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Falánga ya Kongó",
+ "symbol": "FC"
+ },
+ "MGA": {
+ "name": "Falánga ya Madagasikarɛ",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Falánga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Falánga ya Swisɛ",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "PYG": {
+ "name": "Guarani",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "Gurde",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angóla",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwasha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwasha ya Zambi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leonɛ",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litas ya Litwani",
+ "symbol": "LTL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesóto",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "CZK": {
+ "name": "Motolé Sheki",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Motolé ya Danemark",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Motolé ya Islandi",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Motolé ya Norvej",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Motolé ya Swédi",
+ "symbol": "SEK"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nizerya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Elitlɛ",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "GBP": {
+ "name": "Paunɛ ya Angɛlɛtɛ́lɛ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paunɛ ya Ezípitɛ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paunɛ ya Sántu elena",
+ "symbol": "SHP"
+ },
+ "DOP": {
+ "name": "Peso Dominikani",
+ "symbol": "DOP"
+ },
+ "ARS": {
+ "name": "Peso y’Argentina",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "Peso ya Kolombi",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso ya Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Peso ya Mexiko",
+ "symbol": "MX$"
+ },
+ "CLP": {
+ "name": "Peso ya Shili",
+ "symbol": "CLP"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randɛ ya Afríka Súdi",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real ya Brazil",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "Riyalɛ ya Alabi Sawuditɛ",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ya Índɛ",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ya Sɛshɛlɛ",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingɛ ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingɛ ya Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingɛ ya Tanzani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingɛ ya Uganda",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol Sika",
+ "symbol": "PEN"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Zapɔ",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuanɛ Renminbi ya Sinɛ",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lo.json b/library/intl/resources/currency/lo.json
new file mode 100644
index 000000000..7ce15ae01
--- /dev/null
+++ b/library/intl/resources/currency/lo.json
@@ -0,0 +1,634 @@
+{
+ "PYG": {
+ "name": "ກວາຣານີ ປາຣາກວາຍ",
+ "symbol": "PYG"
+ },
+ "GYD": {
+ "name": "ກາຍ​ຢາ​ນີ​ສ ໂດ​ລ່າ",
+ "symbol": "GYD"
+ },
+ "KHR": {
+ "name": "ກຳ​ປູ​ເຈຍ ຣຽວ",
+ "symbol": "KHR"
+ },
+ "GNF": {
+ "name": "ກິ​ນຽນ ຟຣັງ",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ກິບ​ຣາ​ທາ ພາ​ວດ໌",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "ກົວເຕມາລານ ເຄັດຊອນ",
+ "symbol": "GTQ"
+ },
+ "KRW": {
+ "name": "ເກົາ​ຫລີໃຕ້ ວອນ",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "ເກົາ​ຫລີ​ເໜືອ ວອນ",
+ "symbol": "KPW"
+ },
+ "GMD": {
+ "name": "​ແກມ​ບຽນ ດາ​ລາ​ຊິ",
+ "symbol": "GMD"
+ },
+ "SVC": {
+ "name": "ໂກລອງ ເອກາວາດໍ",
+ "symbol": "SVC"
+ },
+ "KGS": {
+ "name": "ຄ​ຣີ​ກິສ​​ຖາ​ນິ ໂຊມ",
+ "symbol": "KGS"
+ },
+ "CDF": {
+ "name": "ຄອງ​ໂກ​ລີສ ຟຣັງ",
+ "symbol": "CDF"
+ },
+ "KZT": {
+ "name": "ຄາ​ຊັກ​ສະ​ຖາ​ນິ ເຕັງ​ເຈ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "ຄາ​ຕາ​ຣິ ຣຽວ",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "ຄິວແບນ ຄອນເວີດຕິໂບ ເປໂຊ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "ຄິວແບນ ເປໂຊ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "ຄູ​ເວ​ຕິ ດິ​ນາ",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "ເຄນ​ຢັນ ຊິວ​ລິງ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "ເຄບ ເວີດ​ດີນ ເອ​ສ​ຄູ​ໂດ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "ເຄ​ແມນ ໄອ​ແລນ ໂດ​ລ່າ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ໂຄສຕາ ຣິກັນ ໂຄລອນ",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ໂຄ​ໂມ​ຣຽນ ຟຣັງ",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "ໂຄຣ​ເອ​ທຽນ ຄູ​ນາ",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "ໂຄ​ຣູ​ນາ ເຊກ",
+ "symbol": "CZK"
+ },
+ "COP": {
+ "name": "ໂຄ​ລົມ​ບຽນ ເປ​ໂຊ",
+ "symbol": "COP"
+ },
+ "GEL": {
+ "name": "ຈໍ​ຈຽນ ລາ​ຣິ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ຈໍ​ແດ​ນຽນ ດິ​ນາ",
+ "symbol": "JOD"
+ },
+ "JMD": {
+ "name": "​ຈາ​ໄມ​ກັນ ໂດ​ລ່າ",
+ "symbol": "JMD"
+ },
+ "CNY": {
+ "name": "ຈີນ ຢວນ",
+ "symbol": "CN¥"
+ },
+ "SZL": {
+ "name": "ສະ​ວາ​ຊິ ລິ​ລັນ​ກິ​ນີ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ສະ​ວິ​ສ ຟ​ຣັງ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ສະ​ວີ​ດິ​ຊ ໂຄຣ​ນາ",
+ "symbol": "SEK"
+ },
+ "AED": {
+ "name": "ສະ​ຫະ​ລັດ​ອາ​ຣັບ​ອາ​ມິ​ເຣດ ເດີ​ແຮມ",
+ "symbol": "AED"
+ },
+ "SGD": {
+ "name": "ສິງ​ກະ​ໂປ ໂດ​ລ່າ",
+ "symbol": "SGD"
+ },
+ "LKR": {
+ "name": "ສີ​ລັງ​ກາ ຣູ​ປີ",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "ຊາ​ໂມນ ທາ​ລາ",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "ຊາ​ອູ​ດິ ຣິ​ຢອນ",
+ "symbol": "SAR"
+ },
+ "CLP": {
+ "name": "ຊິ​ລຽນ ເປ​ໂຊ",
+ "symbol": "CLP"
+ },
+ "SYP": {
+ "name": "ຊີ​ຣຽນ ພາວດ໌",
+ "symbol": "SYP"
+ },
+ "XPF": {
+ "name": "ຊີ​ເອັບ​ພີ ຟຣັງ",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "ຊູ​ດານ​ນີ​ສ ພາວດ໌",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ຊູ​ຣິ​ນາ​ມີ​ສ ໂດ​ລ່າ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ເຊ​ເຊວ​ລອຍ​ສ໌ ຣູ​ປີ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "ເຊຍ​ນາ ​ເລໂອ​ນຽນ ເລ​ໂອນ",
+ "symbol": "SLL"
+ },
+ "GHS": {
+ "name": "ເຊ​ດິ ກາ​ນາ​ອຽນ",
+ "symbol": "GHS"
+ },
+ "SHP": {
+ "name": "ເຊນ ເຮ​ເລ​ນາ ພາວດ໌",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "ເຊີ​ບຽນ ດິ​ນາ",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "ເຊົາ ໂທ​ເມ ແອນ ພ​ຣິນ​ຊິ​ປີ ໂດບຣາ",
+ "symbol": "STD"
+ },
+ "SSP": {
+ "name": "ເຊົາ​ທ໌ ຊູ​ດານ​ນີ​ສ ພາວດ໌",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "ເຊົາທ໌ ອາ​ຟຣິ​ກັນ ແຣນດ໌",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ແຊມ​ບຽນ ຄວາ​ຊາ",
+ "symbol": "ZMW"
+ },
+ "SOS": {
+ "name": "ໂຊ​ມາ​ລິ ຊິວ​ລິງ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ໂຊ​ໂລມອນ ໄອ​ແລນ ໂດ​ລ່າ",
+ "symbol": "SBD"
+ },
+ "JPY": {
+ "name": "ຍີ່​ປຸ່ນ ເຢນ",
+ "symbol": "JP¥"
+ },
+ "ZWL": {
+ "name": "ດອນລາ ຊິມບັບເວ (2009)",
+ "symbol": "ZWL"
+ },
+ "DJF": {
+ "name": "​ດິ​ບູ​ຈຽນ ຟຣັງ",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "ແດນ​ນິ​ຊ ໂຄຣນ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ໂດ​ມິ​ນິ​ກັນ ເປ​ໂຊ",
+ "symbol": "DOP"
+ },
+ "BBD": {
+ "name": "ໂດລ່າ ບາບາດຽນ",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ໂດລ່າ ບາຮາມຽນ",
+ "symbol": "BSD"
+ },
+ "CAD": {
+ "name": "ໂດລ່າຄານາດາ",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "​ໂດ​ລ່າ​ສະ​ຫະ​ລັດຯ",
+ "symbol": "US$"
+ },
+ "BZD": {
+ "name": "ໂດ​ລ່າ​ເບ​ລິ​ຊ",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "ໂດ​ລ່າ​ເບີ​ມິວ​ດາ",
+ "symbol": "BMD"
+ },
+ "TOP": {
+ "name": "ຕອງ​ກັນ ປາ​ອັງ​ກາ",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ຕູ​ນິ​ຊຽນ ດິ​ນາ",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ເຕີກ​ເມ​ນິ​ສ​ຖາ​ນິ ມາ​ນັດ",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ເຕີ​ກິ​ຊ ລິ​ຣາ",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ທ​ຣິ​ນິ​ແດດ ແອນ ໂທ​ບາ​ໂກ ໂດ​ລ່າ",
+ "symbol": "TTD"
+ },
+ "TJS": {
+ "name": "ທາ​ຈິ​ກິ​​ຖາ​ນິ ໂຊ​ໂມ​ນິ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ທານ​ຊາ​ນຽນ ຊິວ​ລິງ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "ໄທ ບາດ",
+ "symbol": "฿"
+ },
+ "NOK": {
+ "name": "ນໍ​ເວ​ກຽນ ​ໂຄຣນ",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "ນາ​ມິ​ບຽນ ໂດ​ລ່າ",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "ນິກາຣາກວນ ໂຄໂດບາ",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "ນິວ ໄຕ້​ຫວັນ ໂດ​ລ່າ",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ນິວ​ຊີ​ແລນ ໂດ​ລ່າ",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "ເນ​ເທີ​ແລນ ແອນ​ຕິ​ລຽນ ກິວ​ເດີ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ເນ​ປານ ຣູ​ປີ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ໄນ​ຣາ ​ໄນເຈີ​ຣຽນ",
+ "symbol": "NGN"
+ },
+ "BRL": {
+ "name": "ບຣາ​ຊິ​ລຽນ ຣຽວ",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ບຣູ​ໄນ ໂດ​ລ່າ",
+ "symbol": "BND"
+ },
+ "BAM": {
+ "name": "ບອ​ສ​ເນຍ-ເຮີ​ເຊ​ໂກວິ​ນາ ຄອນ​ເວີດ​ຕິ​ໂບ ມາກ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ບອດ​ສະ​ວາ​ນານ ພູ​ລາ",
+ "symbol": "BWP"
+ },
+ "BGN": {
+ "name": "ບັງ​ກາ​ຣຽນ ເລບ",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "ບັງ​ຄລາ​ເທດ ຕາ​ກາ",
+ "symbol": "BDT"
+ },
+ "BHD": {
+ "name": "ບາ​ໄຣ​ນິ ດິ​ນາ",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "ບຸ​ຣັນ​ດຽນ ຟຣັງ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "ເບ​ລາ​ຣຸ​ສ​ຊຽນ ຣູ​ເບິນ",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "ໂບ​ລິ​ວຽນ ໂບ​ລິ​ເວຍ​ໂນ",
+ "symbol": "BOB"
+ },
+ "PKR": {
+ "name": "ປາ​ກິ​ສຖານ ຣູ​ປີ",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ປາ​ປົວ ນິວ ກິ​ນຽນ ກິ​ນາ",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "ເປ​ຣູ​ວຽນ ນູ​ໂວ ໂຊ​ລ໌",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ໂປ​ລິ​ຊ ຊະ​ລໍ​ຕີ",
+ "symbol": "PLN"
+ },
+ "PAB": {
+ "name": "ພານາມານຽນ ບອນບົວ",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "ພາວ​ດ໌ ສະ​ເຕີ​ຣິງ (ອັງ​ກິດ)",
+ "symbol": "£"
+ },
+ "BTN": {
+ "name": "ພູ​ຖານ ງຸນດຣັມ",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "ຟຣັງ ເຊຟານ ທະນາຄານລັດອາຟຣິກາກາງ",
+ "symbol": "FCFA"
+ },
+ "FKP": {
+ "name": "ຟອ​ລ໌ກ​ແລນ ໄອ​ແລນ​ສ໌ ພາວ​ດ໌",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "ຟັງເຊຟານ ອາຟຣິກາຕາເວັນຕົກ",
+ "symbol": "CFA"
+ },
+ "FJD": {
+ "name": "ຟິ​ຈຽນ ໂດ​ລ່າ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ຟິ​ລິບ​ປິນ ເປ​ໂຊ",
+ "symbol": "PHP"
+ },
+ "MAD": {
+ "name": "ມໍ​ຣັອກ​ແຄນ​ ເດີ​ແຮມ",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "ມອງ​ໂກ​ລຽນ ຕູກຣິກ",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "ມອນ​ໂດ​ແວນ ເລ​ອູ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "ມັ​ລ​ດິ​ວຽນ ຣູ​ຟິ​ຢາ",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "ມາ​ເກົ້າ ປາ​​ຕາ​ກາ",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "ມາ​ລາ​ກາ​ຊີ ອາ​ເຣຍ​ຣີ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ມາ​ລາ​ວຽນ ຄວາ​ຊາ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ມາ​ເລ​ເຊຍ ຣິງ​ກິດ",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "ມົວ​ຣິ​ທາ​ນຽນ ອູ​ກິວ​ຢາ",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "ມຽນ​ມາ ຈ໊າດ",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "ເມັກຊິກັນ ເປໂຊ",
+ "symbol": "MX$"
+ },
+ "MUR": {
+ "name": "ເມົາ​ຣິ​ທຽນ ຣູ​ປີ",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "ແມັກ​ເຊ​ໂດ​ນຽນ ເດ​ນາ",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ໂມ​ແຊມ​ບິ​ກັນ ເມ​ທິ​ຄອນ",
+ "symbol": "MZN"
+ },
+ "UAH": {
+ "name": "ຢູ​ເຄຣ​ນຽນ ຮະ​ຣີບ​ເນຍ",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "ຢູ​ໂຣ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "ເຢ​ເມ​ນິ ຣຽວ",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "ຣະ​ວັນ​ດັນ ຟຣັງ",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ຣັສ​ຊຽນ ຣູ​ເບິນ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ໂຣ​ມາ​ນຽນ ເລ​ອູ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "ລາວ ກີບ",
+ "symbol": "₭"
+ },
+ "LTL": {
+ "name": "ລິ​ທົວ​ນຽນ ລິ​ທັ​ສ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ລິບ​ບຽນ ດິ​ນາ",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "ລິ​ເບີ​ຣຽນ ໂດ​ລ່າ",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ເລ​ບາ​ນີ​ສ ພາວດ໌",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ໂລຕິ ເລໂຊໂຕ",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "​ວາ​ນົວ​ຕູ ວາ​ຕູ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ເວ​ເນ​ຊູ​ເອ​ລັນ ໂບ​ລິ​ວາ",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ຫວຽດ​ນາມ ດົງ",
+ "symbol": "₫"
+ },
+ "AUD": {
+ "name": "ອອສ​ເຕຣ​ລຽນ ໂດ​ລ່າ",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "ອະຣູແບນ ຟລໍຣິນ",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ອັຟ​ກັນ ອັຟ​ກາ​ນິ",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "ອັລ​ເຈີ​ຣຽນ ດິ​ນາ",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ອັລ​ບາ​ນຽນ ເລກ",
+ "symbol": "ALL"
+ },
+ "ARS": {
+ "name": "ອາ​ເຈນ​ທິ​ນາ ເປ​ໂຊ",
+ "symbol": "ARS"
+ },
+ "AZN": {
+ "name": "ອາ​ເຊີ​ໄບ​ຈາ​ນິ ມາ​ນັດ",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "ອາ​ເມ​ນຽນ ແດຣມ",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "ອິສ​ຣາ​ເອວ​ລິ ນິວ ເຊ​ເກວ",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "ອິນ​ເດຍ ຣູ​ປີ",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ອິນ​ໂດ​ເນ​ຊຽນ ໂດ​ລ່າ",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ອິ​ຣັກ​ກິ ດິ​ນາ",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ອິ​ຣາ​ນິ ຣຽວ",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "ອິ​ຣິ​ທຣຽນ ແນກ​ຟ​າ",
+ "symbol": "ERN"
+ },
+ "XCD": {
+ "name": "ອີ​ສ ຄາ​ຣິ​ບຽນ ໂດ​ລ່າ",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "ອີ​ຢິບ​ທຽນ ພາວດ໌",
+ "symbol": "EGP"
+ },
+ "UZS": {
+ "name": "ອຸສ​ເບ​ກິ​ສ​ຖານ ໂຊມ",
+ "symbol": "UZS"
+ },
+ "UGX": {
+ "name": "ອູ​ກັນ​ດັນ ຊິວ​ລິງ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "ອູ​ຣຸ​ກົວ​ຢານ ເປ​ໂຊ",
+ "symbol": "UYU"
+ },
+ "ETB": {
+ "name": "ເອ​ທິ​ໂອ​ປຽນ ເບີ​ຣ໌",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "ແອງ​ໂກ​ລັນ ຄວນ​ຊາ",
+ "symbol": "AOA"
+ },
+ "OMR": {
+ "name": "ໂອ​ມາ​ນິ ຣຽວ",
+ "symbol": "OMR"
+ },
+ "ISK": {
+ "name": "ໄອ​ສ໌​ແລນ​ດິກ ໂຄຣ​ນາ",
+ "symbol": "ISK"
+ },
+ "HKD": {
+ "name": "ຮອງ​ກົງ ໂດ​ລ່າ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ຮອນດູແຣນ ເລມພິຣາ",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "ຮັງ​ກາ​ຣຽນ ຟໍ​ຣິນ",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ໄຮ​ຕຽນ ກົວ​ເດ",
+ "symbol": "HTG"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lt.json b/library/intl/resources/currency/lt.json
new file mode 100644
index 000000000..3035cdf12
--- /dev/null
+++ b/library/intl/resources/currency/lt.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistano afganis",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanijos lekas",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžyro dinaras",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolos kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinos pesas",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armėnijos dramas",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubos guldenas",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijos doleris",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbaidžano manatas",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamų doleris",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreino dinaras",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Baltarusijos rublis",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "Bangladešo taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoso doleris",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizo doleris",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudos doleris",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Bolivijos bolivijanas",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnijos ir Hercegovinos konvertuojamoji markė",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvanos pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilijos realas",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "Brunėjaus doleris",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarijos levas",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundžio frankas",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butano ngultrumas",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA BCEAO frankas",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "CFA BEAC frankas",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "CFP frankas",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "Čekijos krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čilės pesas",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danijos krona",
+ "symbol": "DKK"
+ },
+ "GBP": {
+ "name": "Didžiosios Britanijos svaras sterlingų",
+ "symbol": "GBP"
+ },
+ "DOP": {
+ "name": "Dominikos pesas",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibučio frankas",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipto svaras",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrėjos nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijos biras",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euras",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "Falklando salų svaras",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidžio doleris",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinų pesas",
+ "symbol": "PHP"
+ },
+ "GYD": {
+ "name": "Gajanos doleris",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Gambijos dalasis",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganos sedis",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltaro svaras",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijos laris",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Gvatemalos ketcalis",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinėjos frankas",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haičio gurdas",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondūro lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkongo doleris",
+ "symbol": "HKD"
+ },
+ "INR": {
+ "name": "Indijos rupija",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Indonezijos rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irako dinaras",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Irano rialas",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandijos krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Izraelio naujasis šekelis",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "Jamaikos doleris",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japonijos jena",
+ "symbol": "JPY"
+ },
+ "USD": {
+ "name": "JAV doleris",
+ "symbol": "USD"
+ },
+ "YER": {
+ "name": "Jemeno rialas",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanijos dinaras",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "Jungtinių Arabų Emyratų dirhamas",
+ "symbol": "AED"
+ },
+ "KYD": {
+ "name": "Kaimanų salų doleris",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžos rielis",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanados doleris",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Kataro rialas",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazachstano tengė",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijos šilingas",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kinijos ženminbi juanis",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgizijos somas",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijos pesas",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoro frankas",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo frankas",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kosta Rikos kolonas",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Kroatijos kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubos konvertuojamasis pesas",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubos pesas",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveito dinaras",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoso kipas",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "Lenkijos zlotas",
+ "symbol": "PLN"
+ },
+ "LSL": {
+ "name": "Lesoto lotis",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libano svaras",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijos doleris",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijos dinaras",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lietuvos litas",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagaskaro ariaris",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonijos denaras",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaizijos ringitas",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malavio kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldyvų rufija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Maroko dirhamas",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijaus rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijos ugija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksikos pesas",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mianmaro kijatas",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldovos lėja",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolijos tugrikas",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambiko metikalis",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijos doleris",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Naujosios Zelandijos doleris",
+ "symbol": "NZD"
+ },
+ "NPR": {
+ "name": "Nepalo rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijos naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvos kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegijos krona",
+ "symbol": "NOK"
+ },
+ "ANG": {
+ "name": "Olandijos Antilų guldenas",
+ "symbol": "ANG"
+ },
+ "OMR": {
+ "name": "Omano rialas",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistano rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamos balboja",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Naujosios Gvinėjos kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajaus guaranis",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru naujasis solis",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "Pietų Afrikos Respublikos randas",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Pietų Korėjos vonas",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Pietų Sudano svaras",
+ "symbol": "SSP"
+ },
+ "XCD": {
+ "name": "Rytų Karibų doleris",
+ "symbol": "XCD"
+ },
+ "RWF": {
+ "name": "Ruandos frankas",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunijos lėja",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rusijos rublis",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Saliamono salų doleris",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadoro kolonas",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoa tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "San Tomės ir Principės dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudo Arabijos rijalas",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelių rupija",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbijos dinaras",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Siera Leonės leonė",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapūro doleris",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijos svaras",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Somalio šilingas",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Sudano svaras",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surimano doleris",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svazilando lilangenis",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Šiaurės Korėjos vonas",
+ "symbol": "KPW"
+ },
+ "LKR": {
+ "name": "Šri Lankos rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "Šv. Elenos salų svaras",
+ "symbol": "SHP"
+ },
+ "SEK": {
+ "name": "Švedijos krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Šveicarijos frankas",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadžikistano somonis",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tailando batas",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "Taivano naujasis doleris",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tanzanijos šilingas",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongo paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidado ir Tobago doleris",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniso dinaras",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkijos lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmėnistano manatas",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandos šilingas",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainos grivina",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajaus pesas",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistano sumas",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu vatas",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesuelos bolivaras",
+ "symbol": "VEF"
+ },
+ "HUF": {
+ "name": "Vengrijos forintas",
+ "symbol": "HUF"
+ },
+ "VND": {
+ "name": "Vietnamo dongas",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijos kvača",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabvės doleris (2009)",
+ "symbol": "ZWL"
+ },
+ "CVE": {
+ "name": "Žaliojo Kyšulio eskudas",
+ "symbol": "CVE"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lu.json b/library/intl/resources/currency/lu.json
new file mode 100644
index 000000000..a82c98852
--- /dev/null
+++ b/library/intl/resources/currency/lu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bira wa Etshiopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra wa Sao Tome ne Presipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikuludo wa Kapevere",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "EUR": {
+ "name": "Iro",
+ "symbol": "€"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "AOA": {
+ "name": "Kwanza wa Angola",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwasha wa Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwasha wa Zambi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti wa Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira wa Nizerya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa wa Elitle",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ndalasi wa Ngambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Ndina wa Alijeri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Ndina wa Bahrene",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Ndina wa Libi",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Ndina wa Suda",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Ndina wa Tinizi",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Ndiriha wa Lemila alabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Ndiriha wa Maroke",
+ "symbol": "MAD"
+ },
+ "USD": {
+ "name": "Ndola wa Ameriki",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Ndola wa Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Ndola wa Liberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Ndola wa Namibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Ndola wa Ositali",
+ "symbol": "A$"
+ },
+ "XOF": {
+ "name": "Nfalanga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Nfalanga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Nfalanga wa Bulundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Nfalanga wa Dzibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Nfalanga wa Komoru",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Nfalanga wa Kongu",
+ "symbol": "FC"
+ },
+ "MGA": {
+ "name": "Nfalanga wa Madagasikare",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Nfalanga wa Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Nfalanga wa Swise",
+ "symbol": "CHF"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "KES": {
+ "name": "Nshili wa Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Nshili wa Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Nshili wa Tanzani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Nshili wa Uganda",
+ "symbol": "UGX"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pauni wa Angeletele",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pauni wa Mushidi",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni wa Santu Elena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula wa Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rande wa Afrika wa Mwinshi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyale wa Alabu Nsawu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi wa Inde",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia wa Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupya wa Seshele",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya wa Moritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni wa Zapɔ",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuani Renminbi wa Shine",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/luo.json b/library/intl/resources/currency/luo.json
new file mode 100644
index 000000000..82027831e
--- /dev/null
+++ b/library/intl/resources/currency/luo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr mar Ethiopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dola",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dola mar Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola mar Liberia",
+ "symbol": "LRD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paund mar Misri",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Pauni mar Uingereza",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula mar Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Siling mar Kenya",
+ "symbol": "Ksh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen mar Japan",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/luy.json b/library/intl/resources/currency/luy.json
new file mode 100644
index 000000000..b92aaa572
--- /dev/null
+++ b/library/intl/resources/currency/luy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "Sirinji ya Kenya",
+ "symbol": "Ksh"
+ },
+ "TZS": {
+ "name": "Sirinji ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Sirinji ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lv.json b/library/intl/resources/currency/lv.json
new file mode 100644
index 000000000..72837602a
--- /dev/null
+++ b/library/intl/resources/currency/lv.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistānas afgāns",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albānijas leks",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžīrijas dinārs",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolas kvanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Apvienoto Arābu Emirātu dirhēms",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentīnas peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armēnijas drams",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubas guldenis",
+ "symbol": "AWG"
+ },
+ "USD": {
+ "name": "ASV dolārs",
+ "symbol": "$"
+ },
+ "AUD": {
+ "name": "Austrālijas dolārs",
+ "symbol": "AU$"
+ },
+ "XCD": {
+ "name": "Austrumkarību dolārs",
+ "symbol": "EC$"
+ },
+ "AZN": {
+ "name": "Azerbaidžānas manats",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamu dolārs",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinas dinārs",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Baltkrievijas rubelis",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "Bangladešas taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosas dolārs",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizas dolārs",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudu dolārs",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Bolīvijas boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnijas un Hercogovinas marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvanas pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazīlijas reāls",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunejas dolārs",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgārijas leva",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi franks",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butānas ngultrums",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "Centrālāfrikas CFA franks",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franks",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Čehijas krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čīles peso",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Dānijas krona",
+ "symbol": "DKK"
+ },
+ "ZAR": {
+ "name": "Dienvidāfrikas rends",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Dienvidkorejas vona",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Dienvidsudānas mārciņa",
+ "symbol": "SSP"
+ },
+ "DOP": {
+ "name": "Dominikānas peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutijas franks",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Ēģiptes mārciņa",
+ "symbol": "EGP"
+ },
+ "EUR": {
+ "name": "eiro",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritrejas nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijas birs",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "Fidži dolārs",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipīnu peso",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklenda Salu mārciņa",
+ "symbol": "FKP"
+ },
+ "GYD": {
+ "name": "Gajānas dolārs",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Gambijas dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganas sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltāra mārciņa",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijas lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Gvatemalas ketsals",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejas franks",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haiti gurds",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurasas lempīra",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkongas dolārs",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Horvātijas kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijas rūpija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonēzijas rūpija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irākas dinārs",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Irānas riāls",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Īslandes krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Izraēlas šekelis",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikas dolārs",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japānas jena",
+ "symbol": "¥"
+ },
+ "NZD": {
+ "name": "Jaunzēlandes dolārs",
+ "symbol": "NZ$"
+ },
+ "YER": {
+ "name": "Jemenas riāls",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordānas dinārs",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaboverdes eskudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Kaimanu salu dolārs",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžas riels",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanādas dolārs",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Kataras riāls",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstānas tenge",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "KDR franks",
+ "symbol": "CDF"
+ },
+ "KES": {
+ "name": "Kenijas šiliņš",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizstānas soms",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijas peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoru franks",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Kostarikas kolons",
+ "symbol": "CRC"
+ },
+ "RUB": {
+ "name": "Krievijas rublis",
+ "symbol": "RUB"
+ },
+ "CUC": {
+ "name": "Kubas konvertējamais peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubas peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveitas dinārs",
+ "symbol": "KWD"
+ },
+ "CNY": {
+ "name": "Ķīnas juaņs",
+ "symbol": "CN¥"
+ },
+ "LAK": {
+ "name": "Laosas kips",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libānas mārciņa",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Libērijas dolārs",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Lībijas dinārs",
+ "symbol": "LYD"
+ },
+ "GBP": {
+ "name": "Lielbritānijas sterliņu mārciņa",
+ "symbol": "£"
+ },
+ "LTL": {
+ "name": "Lietuvas lits",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagaskaras ariari",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Maķedonijas denārs",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaizijas ringits",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malāvijas kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldīvijas rūfija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokas dirhēms",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Maurīcijas rūpija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritānijas ugija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksikas peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmas kjats",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldovas leja",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolijas tugriks",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikas metikals",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namībijas dolārs",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepālas rūpija",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Nīderlandes Antiļu guldenis",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigērijas naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvas kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvēģijas krona",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omānas riāls",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistānas rūpija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamas balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Jaungvinejas kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajas guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru jaunais sols",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polijas zlots",
+ "symbol": "PLN"
+ },
+ "XOF": {
+ "name": "Rietumāfrikas CFA franks",
+ "symbol": "CFA"
+ },
+ "RWF": {
+ "name": "Ruandas franks",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumānijas leja",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "Salvadoras kolons",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoa tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santome un Prinsipi dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saūda riāls",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelu salu rūpija",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbijas dinārs",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "Singapūras dolārs",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sīrijas mārciņa",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "Sjerraleones leone",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Somālijas šiliņš",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Sudānas mārciņa",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamas dolārs",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv.Helēnas salas mārciņa",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazilendas lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Šrilankas rūpija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Šveices franks",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadžikistānas somons",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Taivānas jaunais dolārs",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "Taizemes bāts",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Tanzānijas šiliņš",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongas paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidādas un Tobāgo dolārs",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisijas dinārs",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turcijas lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistānas manats",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandas šiliņš",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainas grivna",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungārijas forints",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Urugvajas peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistānas sums",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuēlas bolivārs",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vjetnamas dongi",
+ "symbol": "₫"
+ },
+ "SBD": {
+ "name": "Zālamana Salu dolārs",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Zambijas kvača",
+ "symbol": "ZMW"
+ },
+ "KPW": {
+ "name": "Ziemeļkorejas vona",
+ "symbol": "KPW"
+ },
+ "ZWL": {
+ "name": "Zimbabves dolārs (2009)",
+ "symbol": "ZWL"
+ },
+ "SEK": {
+ "name": "Zviedrijas krona",
+ "symbol": "SEK"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mas.json b/library/intl/resources/currency/mas.json
new file mode 100644
index 000000000..150439fe3
--- /dev/null
+++ b/library/intl/resources/currency/mas.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ZAR": {
+ "name": "Iropiyianí e Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Iropiyianí e Algeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Iropiyianí e Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Iropiyianí e Austria",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Iropiyianí e Bahareini",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Iropiyianí e Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Iropiyianí e Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Iropiyianí e Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Iropiyianí e CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Iropiyianí e CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Iropiyianí e China",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "Iropiyianí e Eritrea",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Iropiyianí e Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Iropiyianí e India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Iropiyianí e Japani",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Iropiyianí e Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Iropiyianí e Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Iropiyianí e Kenya",
+ "symbol": "Ksh"
+ },
+ "CVE": {
+ "name": "Iropiyianí e Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Iropiyianí e Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Iropiyianí e Kongo",
+ "symbol": "CDF"
+ },
+ "SLL": {
+ "name": "Iropiyianí e leoni",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Iropiyianí e Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Iropiyianí e Liberia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Iropiyianí e Libya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Iropiyianí e lilangeni",
+ "symbol": "SZL"
+ },
+ "MWK": {
+ "name": "Iropiyianí e Malawi",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "Iropiyianí e Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Iropiyianí e Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Iropiyianí e Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Iropiyianí e Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Iropiyianí e Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Iropiyianí e Nijeria",
+ "symbol": "NGN"
+ },
+ "GBP": {
+ "name": "Iropiyianí e Nkɨ́resa",
+ "symbol": "£"
+ },
+ "RWF": {
+ "name": "Iropiyianí e Rwanda",
+ "symbol": "RWF"
+ },
+ "ZMW": {
+ "name": "Iropiyianí e Sambia",
+ "symbol": "ZMW"
+ },
+ "SHP": {
+ "name": "Iropiyianí e Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Iropiyianí e Saotome",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Iropiyianí e Saudi",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Iropiyianí e Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Iropiyianí e Somalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Iropiyianí e Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Iropiyianí e Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Iropiyianí e Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Iropiyianí e Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Iropiyianí e Uhabeshi",
+ "symbol": "ETB"
+ },
+ "CHF": {
+ "name": "Iropiyianí e Uswisi",
+ "symbol": "CHF"
+ },
+ "EUR": {
+ "name": "Iropiyianí e yuro",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "Iropiyianí ɔ́ɔ̄ lamarekani",
+ "symbol": "US$"
+ },
+ "AED": {
+ "name": "Iropiyianí ɔ́ɔ̄ lmarabu",
+ "symbol": "AED"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mer.json b/library/intl/resources/currency/mer.json
new file mode 100644
index 000000000..ca2586a0c
--- /dev/null
+++ b/library/intl/resources/currency/mer.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariarĩ ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bĩrũ ya Ithiopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Anjĩria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Baharini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme cia Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dola ya Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dola ya Austrĩlia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisilandi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paũndi ya Misri",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Paũndi ya Ngeretha",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Paũndi ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Paũndi ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika ya Sauthi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudi Arĩbia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Maurĩtiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya japani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Mauritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mfe.json b/library/intl/resources/currency/mfe.json
new file mode 100644
index 000000000..9bde9c3cf
--- /dev/null
+++ b/library/intl/resources/currency/mfe.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "birr etiopien",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar alzerien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinar libien",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinar soudane",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinar tinizien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham Emira arab ini",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marokin",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra santomeen",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar amerikin",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "dolar kanadien",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolar liberien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibien",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "dolar ostralien",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskudo kapverdien",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "fran burunde",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "fran CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "fran CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "fran djiboutien",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "fran komorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "fran kongole",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "fran malgas",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "fran rwande",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "fran swis",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "kwacha malawit",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zanbien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angole",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leonn Sierra-Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "EGP": {
+ "name": "liv ezipsien",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "liv Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "liv sterlin",
+ "symbol": "£"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti lezoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka erythreen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nizerian",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "ouguiya moritanien",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya botswane",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rand sid-afrikin",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "INR": {
+ "name": "roupi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "roupi morisien",
+ "symbol": "Rs"
+ },
+ "SCR": {
+ "name": "roupi seselwa",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shiling kenyan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shiling ougande",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "shiling tanzanien",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "shilingi somalien",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen zapone",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi sinwa",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mg.json b/library/intl/resources/currency/mg.json
new file mode 100644
index 000000000..d652606bb
--- /dev/null
+++ b/library/intl/resources/currency/mg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary",
+ "symbol": "Ar"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir etiopianina",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi gambianina",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "Dinar tonizianina",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Dinara alzerianina",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "Dinara Libyanina",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinara Sodaney",
+ "symbol": "SDG"
+ },
+ "AED": {
+ "name": "Dirham",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marokianina",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolara amerikanina",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dolara aostralianina",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dôlara Kanadianina",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dôlara Liberianina",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolara namibianina",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Eoro",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Escudo",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Farantsa Borondi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Farantsa CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Farantsa CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Farantsa Djibotianina",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Farantsa Komorianina",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Farantsa kôngôley",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Farantsa Roande",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Farantsa soisa",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambianina",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angoley",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigerianina",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfà Eritreanina",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya moritanianina",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pola botsoaney",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand afrikanina tatsimo",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rial saodianina",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "INR": {
+ "name": "Ropia Indianina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Ropia maorisianina",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Ropia Seysheloà",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilling kenianina",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Shilling ogandianina",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Shilling somalianina",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling tanzanianina",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "EGP": {
+ "name": "vola venty ejipsiana",
+ "symbol": "EGP"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen Japoney",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yoan sinoa Renminbi",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mgh.json b/library/intl/resources/currency/mgh.json
new file mode 100644
index 000000000..787e5005c
--- /dev/null
+++ b/library/intl/resources/currency/mgh.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MTn"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mk.json b/library/intl/resources/currency/mk.json
new file mode 100644
index 000000000..743e02a19
--- /dev/null
+++ b/library/intl/resources/currency/mk.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "Авганистански авгани",
+ "symbol": "AFN"
+ },
+ "AUD": {
+ "name": "Австралиски долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Азербејџански манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албански Лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирски Динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Американски долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Анголска Кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Аргентински Пезос",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Арубиски флорин",
+ "symbol": "AWG"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадоски долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Бахамски долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Бахреински Динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белизиски Долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Белоруска рубља",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "Бермудски долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливиски боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Босанско-Херцеговска конвертибилна марка",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Боцванска Пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилски реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Британска Фунта",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Брунејски долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Бугарски лев",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Бурундиски Франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутански нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Ванатски вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Венецуелски боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Виетнамски донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "Гамбиски даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гански седи",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Гватемалски кветцал",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Гвијански Долар",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "Гвинејски франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтарска фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Грузиски лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Данска круна",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Добра на Сао Томе и Принсипе",
+ "symbol": "STD"
+ },
+ "KYD": {
+ "name": "Долар на кајмански острови",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "Долар на Тринидад и Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "Доминикански Пезос",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египетска Фунта",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Еритрејска Накфа",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "Ермениски Драм",
+ "symbol": "AMD"
+ },
+ "ETB": {
+ "name": "Етиописки Бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "Замбијска квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Зелено’ртски ескудо",
+ "symbol": "CVE"
+ },
+ "ILS": {
+ "name": "Израелски нов шекел",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "Индијска рупија",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Индонезиска рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Ирански риал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "Исландска крона",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Источно карибиски долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Јамајкански долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Јапонски јен",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "Јеменски риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Јордански динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Јужно корејски вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Јужносуданска фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "Казахстанска тенга",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "Камбоџиски рел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канадски долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катарски риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кениски шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Кинески јуан",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Киргистански сом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Колумбиски Пезос",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморски долар",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конголски франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костарикански колон",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "Кубански пезос",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Кубански пезос (конвертибилен)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Кувајтски динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаоски кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Лесотско лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Либанска фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Либериски долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Либијски динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литваниска лита",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "Мавританска рупија",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Мавританска угија",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Макао патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Македонски денар",
+ "symbol": "ден"
+ },
+ "MWK": {
+ "name": "Малависка квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагасиски ариари",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "Малазиски рингит",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Малдивиска руфија",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокански Дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Мексикански пезос",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Мјанмарски киат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбиски метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдавски леу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монголиски тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Намибиски долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непалска рупија",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигериска наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Никарагванска кордоба",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Новозеландски долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Норвешка круна",
+ "symbol": "NOK"
+ },
+ "AED": {
+ "name": "Обединети Арапски Емирати Дирхам",
+ "symbol": "AED"
+ },
+ "OMR": {
+ "name": "Омански риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистанска рупија",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамска балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа новогвинејска кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвајска гуарана",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перуански нов сол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Полска злота",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Романска леи",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Руандски франк",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "Руска рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Салвадорски колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанска тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Саудиски ријал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазилендски лиланген",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Северно корејски вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сејшелска рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сиералеонско леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапурски долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сиријска фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломонски долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомалијски шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Српски динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Суданска фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринамски долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Таи бат",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "Тајвански нов долар",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Танзаниски шилинг",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "Таџикистански сомони",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "Тонганска панга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Тунизиски динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Туркменист. манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Турска лира",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Угандиски шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекистански сом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Украинска хривнија",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Унгарска форинта",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Уругвајски пезос",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Филипински пезос",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Фиџиски долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Фолкландска фунта",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Фунта на Света Елена",
+ "symbol": "SHP"
+ },
+ "HTG": {
+ "name": "Хаитски гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Холандски антилски гилдер",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HKD"
+ },
+ "HNL": {
+ "name": "Хондурска лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "Хрватска Куна",
+ "symbol": "HRK"
+ },
+ "XPF": {
+ "name": "ЦФП франк",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Чешка корона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чилеански пезос",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "Џибути франк",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Швајцарски Франк",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Шведска круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шриланканска рупија",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ml.json b/library/intl/resources/currency/ml.json
new file mode 100644
index 000000000..ec7c58867
--- /dev/null
+++ b/library/intl/resources/currency/ml.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ഫ്രാങ്ക് BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA ഫ്രാങ്ക് BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP ഫ്രാങ്ക്",
+ "symbol": "CFPF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "അഫ്‌ഗാൻ അഫ്‌‌ഗാനി",
+ "symbol": "AFN"
+ },
+ "AOA": {
+ "name": "അംഗോളൻ ‍ക്വാൻസ",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "അർജൻറീൻ പെസോ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "അർമേനിയൻ ഡ്രാം",
+ "symbol": "AMD"
+ },
+ "ALL": {
+ "name": "അൽബേനിയൻ ലെക്",
+ "symbol": "ALL"
+ },
+ "AZN": {
+ "name": "അസർബൈജാനി മനത്",
+ "symbol": "AZN"
+ },
+ "DZD": {
+ "name": "അൾജീരിയൻ ദിനാർ",
+ "symbol": "DZD"
+ },
+ "AWG": {
+ "name": "അറൂബൻ ഫ്ലോറിൻ",
+ "symbol": "AWG"
+ },
+ "IDR": {
+ "name": "ഇന്തോനേഷ്യൻ റുപിയ",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ഇന്ത്യൻ രൂപ",
+ "symbol": "₹"
+ },
+ "ILS": {
+ "name": "ഇസ്രായേലി ന്യൂ ഷെക്കെൽ",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ഇറാഖി ദിനാർ",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ഇറാനിയൻ റിയാൽ",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ഈജിപ്‌ഷ്യൻ പൗണ്ട്",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ഉക്രേനിയൻ ഹ്രിവ്‌നിയ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ഉഗാണ്ടൻ ഷില്ലിംഗ്",
+ "symbol": "UGX"
+ },
+ "KPW": {
+ "name": "ഉത്തര കൊറിയൻ വോൺ",
+ "symbol": "KPW"
+ },
+ "UZS": {
+ "name": "ഉസ്‌ബെക്കിസ്ഥാൻ സോം",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ഉറുഗ്വേയൻ പെസോ",
+ "symbol": "UYU"
+ },
+ "ETB": {
+ "name": "എത്യോപ്യൻ ബിർ",
+ "symbol": "ETB"
+ },
+ "SVC": {
+ "name": "എൽ സാൽവഡോർ കോളൻ",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "എറിത്രിയൻ നക്ഫ",
+ "symbol": "ERN"
+ },
+ "ISK": {
+ "name": "ഐസ്‌ലാൻഡിക് ക്രോണ",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ഒമാനി റിയാൽ",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "ഓസ്ട്രേലിയൻ ഡോളർ",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "കനേഡിയൻ ഡോളർ",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "കംബോഡിയൻ റീൽ",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "കസാക്കിസ്ഥാൻ ടെംഗെ",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "കിർഗിസ്ഥാനി സോം",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "കിഴക്കൻ കരീബിയൻ ഡോളർ",
+ "symbol": "EC$"
+ },
+ "KWD": {
+ "name": "കുവൈറ്റി ദിനാർ",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "കെനിയൻ ഷില്ലിംഗ്",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "കേപ് വെർദിയൻ എസ്‌ക്യുഡോ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "കേമാൻ ഐലൻഡ്‌സ് ഡോളർ",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "കൊമോറിയൻ ഫ്രാങ്ക്",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "കൊളംബിയൻ പെസോ",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "കോങ്കളീസ് ഫ്രാങ്ക്",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "കോസ്റ്റാ റിക്കൻ കോളൻ",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "ക്യൂബൻ കൺവേർട്ടബിൾ പെസോ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "ക്യൂബൻ പെസോ",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "ക്രൊയേഷൻ ക്യുന",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "ഖത്തർ റിയാൽ",
+ "symbol": "QAR"
+ },
+ "GYD": {
+ "name": "ഗയാനീസ് ഡോളർ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ഗാംബിയൻ ദലാസി",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "ഗിനിയൻ ഫ്രാങ്ക്",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ഗ്വാട്ടിമാലൻ ക്വെറ്റ്‌സൽ",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ഘാനയൻ കെഡി",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ചിലിയൻ പെസോ",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "ചെക്ക് റിപ്പബ്ലിക് കൊരുണ",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "ചൈനീസ് യുവാൻ",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ജപ്പാനീസ് യെൻ",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "ജമൈക്കൻ ഡോളർ",
+ "symbol": "JMD"
+ },
+ "GIP": {
+ "name": "ജിബ്രാൾട്ടർ പൗണ്ട്",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ജോർജ്ജിയൻ ലാറി",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ജോർദ്ദാനിയൻ ദിനാർ",
+ "symbol": "JOD"
+ },
+ "TRY": {
+ "name": "ടർക്കിഷ് ലിറ",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "ടാൻസാനിയൻ ഷില്ലിംഗ്",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "ടുണീഷ്യൻ ദിനാർ",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ടോംഗൻ പാംഗ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ട്രിനിഡാഡ് അന്റ് ടുബാഗോ ഡോളർ",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "ഡാനിഷ് ക്രോണെ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ഡൊമിനിക്കൻ പെസോ",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "താജിക്കിസ്ഥാനി സൊമോനി",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "തായ് ബട്ട്",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "തുർക്ക്‌മെനിസ്ഥാനി മനത്",
+ "symbol": "TMT"
+ },
+ "KRW": {
+ "name": "ദക്ഷിണ കൊറിയൻ വോൺ",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "ദക്ഷിണ സുഡാനീസ് പൗണ്ട്",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "ദക്ഷിണാഫ്രിക്കൻ റാൻഡ്",
+ "symbol": "ZAR"
+ },
+ "DJF": {
+ "name": "ദിജിബൗട്ടിയൻ ഫ്രാങ്ക്",
+ "symbol": "DJF"
+ },
+ "NAD": {
+ "name": "നമീബിയൻ ഡോളർ",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "നിക്കരാഗ്വൻ കോർഡോബ",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "നെതർലാൻഡ്‌സ് ആന്റിലൻ ഗിൽഡർ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "നേപ്പാളീസ് റുപ്പീ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "നൈജീരിയൻ നൈറ",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "നോർവീജിയൻ ക്രോണെ",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "ന്യൂ തായ്‌വാൻ ഡോളർ",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ന്യൂസിലാന്റ് ഡോളർ",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "പനാമനിയൻ ബാൽബോവ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "പരാഗ്വേയൻ ഗ്വരനീ",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "പാക്കിസ്ഥാനി റുപ്പീ",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "പാപ്പുവ ന്യൂ ഗിനിയൻ കിന",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "പെറുവിയൻ ന്യൂവോ സോൾ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "പോളിഷ് സ്ലോട്ടി",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ഫാക്ക്‌ലാന്റ് ദ്വീപുകളുടെ പൗണ്ട്",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ഫിജിയൻ ഡോളർ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ഫിലിപ്പീനി പെസോ",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "ബംഗ്ലാദേശി ടാക്ക",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "ബഹാമിയൻ ഡോളർ",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ബഹ്റൈനി ദിനാർ",
+ "symbol": "BHD"
+ },
+ "BGN": {
+ "name": "ബൾഗേറിയൻ ലെവ്",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "ബറുണ്ടിയൻ ഫ്രാങ്ക്",
+ "symbol": "BIF"
+ },
+ "BBD": {
+ "name": "ബാർബഡോസ് ഡോളർ",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ബെർമുഡൻ ഡോളർ",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "ബെലാറുഷ്യൻ റൂബിൾ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ബെലീസ് ഡോളർ",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "ബൊളീവിയൻ ബൊളിവിയാനോ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ബോട്‌സ്വാനൻ പ്യുല",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ബോസ്‌നിയ-ഹെർസഗോവിന കൺവേർട്ടബിൾ മാർക്ക്",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ബ്രസീലിയൻ റിയാൽ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ബ്രിട്ടീഷ് പൗണ്ട് സ്‌റ്റെർലിംഗ്",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ബ്രൂണൈ ഡോളർ",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "ഭൂട്ടാനീസ് ഗൾട്രം",
+ "symbol": "BTN"
+ },
+ "MOP": {
+ "name": "മകാനീസ് പതാക്ക",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "മഡഗാസി ഏരിയറി",
+ "symbol": "MGA"
+ },
+ "MNT": {
+ "name": "മംഗോളിയൻ തുഗ്രിക്",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "മലാവിയൻ ക്വച്ചാ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "മലേഷ്യൻ റിംഗിറ്റ്",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "മാൽദീവിയൻ റുഫിയ",
+ "symbol": "MVR"
+ },
+ "MKD": {
+ "name": "മാസിഡോണിയൻ ദിനാർ",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "മെക്സിക്കൻ പെസോ",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "മൊസാംബിക്കൻ മെറ്റിക്കൽ",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "മൊൾഡോവൻ ലിയു",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "മൊറോക്കൻ ദിർഹം",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "മൗറിറ്റേനിയൻ ഔഗിയ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "മൗറീഷ്യൻ റുപ്പീ",
+ "symbol": "MUR"
+ },
+ "MMK": {
+ "name": "മ്യാൻമാർ ക്യാട്",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "യു.എസ്. ഡോളർ",
+ "symbol": "$"
+ },
+ "AED": {
+ "name": "യുണൈറ്റഡ് അറബ് എമിറേറ്റ്സ് ദിർഹം",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "യൂറോ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "യെമനി റിയാൽ",
+ "symbol": "YER"
+ },
+ "LAK": {
+ "name": "ലാവോഷിയൻ കിപ്",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "ലിത്വാനിയൻ ലിറ്റാസ്",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ലിബിയൻ ദിനാർ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ലെബനീസ് പൗണ്ട്",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ലെസോതോ ലോത്തി",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "ലൈബീരിയൻ ഡോളർ",
+ "symbol": "LRD"
+ },
+ "VUV": {
+ "name": "വന്വാതു വാതു",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "വിയറ്റ്നാമീസ് ഡോങ്",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "വെനിസ്വേലൻ ബൊളീവർ",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "ശ്രീലങ്കൻ റുപ്പീ",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "സമോവൻ താല",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "സാംബിയൻ ക്വാച്ച",
+ "symbol": "ZMW"
+ },
+ "STD": {
+ "name": "സാവോ ടോമി ആൻഡ് പ്രിൻസിപെ ഡോബ്ര",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "സിംഗപ്പൂർ ഡോളർ",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "സിയെറ ലിയോണിയൻ ലിയോൺ",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "സിറിയൻ പൗണ്ട്",
+ "symbol": "SYP"
+ },
+ "SCR": {
+ "name": "സീഷെലോയിസ് റുപ്പീ",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "സുഡാനീസ് പൗണ്ട്",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "സുരിനെയിമിസ് ഡോളർ",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "സെന്റ് ഹെലീന പൗണ്ട്",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "സെർബിയൻ ദിനാർ",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "സോമാലി ഷില്ലിംഗ്",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "സോളമൻ ദ്വീപുകളുടെ ഡോളർ",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "സൗദി റിയാൽ",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "സ്വാസി ലിലാംഗനി",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "സ്വിസ് ഫ്രാങ്ക്",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "സ്വീഡിഷ് ക്രോണ",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "ഹംഗേറിയൻ ഫോറിന്റ്",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ഹെയ്‌തിയൻ ഗൂർഡ്",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ഹോങ്കോങ്ങ് ഡോളർ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ഹോണ്ടുറൻ ലെംപിറ",
+ "symbol": "HNL"
+ },
+ "RUB": {
+ "name": "റഷ്യൻ റൂബിൾ",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "റുവാണ്ടൻ ഫ്രാങ്ക്",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "റൊമാനിയൻ ലെയു",
+ "symbol": "RON"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mn.json b/library/intl/resources/currency/mn.json
new file mode 100644
index 000000000..f0f2c73e2
--- /dev/null
+++ b/library/intl/resources/currency/mn.json
@@ -0,0 +1,634 @@
+{
+ "XPF": {
+ "name": "CFP франк",
+ "symbol": "CFPF"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "австрали доллар",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "азербайжаны манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "албанийн лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "алжир доллар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "америк доллар",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Ангол кванза",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "арабын нэгдсэн эмиратын дирхам",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "аргентин песо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "арменийн драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "арубын флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "афганистаний афгани",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багам доллар",
+ "symbol": "BSD"
+ },
+ "NPR": {
+ "name": "балба рупи",
+ "symbol": "NPR"
+ },
+ "BDT": {
+ "name": "бангладешийн така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "барбадос доллар",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "бахрейн динар",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "беларус рубль",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "белиз доллар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермуд доллар",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "болгарийн лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "боливи боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "босни-герцеговин хөрвөгч марк",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Ботсвани пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "бразилийн рил",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "британийн фунт стерлинг",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "бруней доллар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунд франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "бутаны нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "вануатугийн вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "венесуэлийн боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "вьетнамын донг",
+ "symbol": "₫"
+ },
+ "GYD": {
+ "name": "гайана доллар",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "гайтийн гоурд",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "Гамби даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана седи",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "гватемалийн кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвиней франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "гибралтар паунд",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "гондурасын лемпира",
+ "symbol": "HNL"
+ },
+ "GEL": {
+ "name": "гүржийн лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "данийн крон",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "доминикын песо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "египет паунд",
+ "symbol": "EGP"
+ },
+ "DJF": {
+ "name": "Жибоути франк",
+ "symbol": "DJF"
+ },
+ "ZMW": {
+ "name": "Замби квача",
+ "symbol": "ZMW"
+ },
+ "XCD": {
+ "name": "зүүн карибийн доллар",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "израйлийн шинэ шекел",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "индонези рупи",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ирак динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "иран риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "исландийн крон",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "йемен риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "йордан динар",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде эскудо",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "казахын тэнгэ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "кайман арлын доллар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "камбож риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канад доллар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "катар риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кени шиллинг",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "колумбын песо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Комор франк",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "коста рикагийн колон",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "кубийн песо",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "кубийн хөрвөгч песо",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "кувейт динар",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "кыргызын сом",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "лаосын кип",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Либери доллар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ливан паунд",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "ливи доллар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "литвийн литас",
+ "symbol": "LTL"
+ },
+ "MRO": {
+ "name": "Мавритан угия",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Мавритын рупи",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "макаогийн патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "македони динар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квача",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "малайзын рингит",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Малайн ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "мальдив руфия",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "мароккогийн дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мексикийн песо",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "Мозамбик метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдавийн леу",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "мьянмарын киат",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Намиби доллар",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Нигери найра",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нидерландын антиллъя гулдер",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "никарагуагийн кордоба",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "норвегийн крон",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "омани риал",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "орос рубль",
+ "symbol": "RUB"
+ },
+ "ZAR": {
+ "name": "Өмнөд Африкийн ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "өмнөд солонгос вон",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "өмнөд судан паунд",
+ "symbol": "SSP"
+ },
+ "PKR": {
+ "name": "пакистан рупи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панамын бальбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "папуа-шинэ гвинейн кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "парагвайн гуарани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "перугийн невосоль",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "польшийн злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руанд франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румыны леу",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "самоагийн тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сан-Томе ба Принсипи добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "сауди риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазиланд лилангени",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшел рупи",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "Сент Хелена паунд",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "серб динар",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "сингапур доллар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "сири паунд",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "соломон арлын доллар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомали шиллинг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "судан паунд",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "суринам доллар",
+ "symbol": "SRD"
+ },
+ "SLL": {
+ "name": "Сьерра Леоне леоне",
+ "symbol": "SLL"
+ },
+ "TJS": {
+ "name": "тажикийн сомон",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "тайландын бат",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Танзани шиллинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "тонгагийн панга",
+ "symbol": "TOP"
+ },
+ "MNT": {
+ "name": "төгрөг",
+ "symbol": "₮"
+ },
+ "TTD": {
+ "name": "тринидад ба тобаго доллар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "тунис доллар",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "туркийн лира",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "туркмен манат",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Уганд шиллинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "узбекын сом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "украйны гривня",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "унгарийн форинт",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "уругвайн песо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "фижи доллар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "филиппин песо",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "фолклэнд арлын паунд",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Франк КФА BCЕАО",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Франк КФА BEAC",
+ "symbol": "FCFA"
+ },
+ "KPW": {
+ "name": "хойд солонгос вон",
+ "symbol": "KPW"
+ },
+ "HKD": {
+ "name": "хонгконг доллар",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "хорватын куна",
+ "symbol": "HRK"
+ },
+ "CNY": {
+ "name": "хятад юань",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "чехийн коруна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чилийн песо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "шведийн крон",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "швейцарь франк",
+ "symbol": "CHF"
+ },
+ "NZD": {
+ "name": "шинэ зеланд доллар",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "шинэ тайван доллар",
+ "symbol": "NT$"
+ },
+ "LKR": {
+ "name": "шри-ланк рупи",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "энэтхэг рупи",
+ "symbol": "₹"
+ },
+ "ERN": {
+ "name": "Эритрей накфа",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Этиоп бирр",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "ямайк доллар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "япон иен",
+ "symbol": "JP¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mr.json b/library/intl/resources/currency/mr.json
new file mode 100644
index 000000000..df2614e5b
--- /dev/null
+++ b/library/intl/resources/currency/mr.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] फ्रँक [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] फ्रँक [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] फ्रँक",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "अँगोलन क्वॅन्झा",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "अझरबैझानी मानाट",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफगाण अफगाणी",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "अरुबा फ्लोरिन",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अर्जेंटाइन पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अल्जेरियन दिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अल्बानियन लेक",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "आइसलँडिक क्रोना",
+ "symbol": "ISK"
+ },
+ "AMD": {
+ "name": "आर्मेनियन द्रॅम",
+ "symbol": "AMD"
+ },
+ "IDR": {
+ "name": "इंडोनेशियन रुपैयाह",
+ "symbol": "IDR"
+ },
+ "EGP": {
+ "name": "इजिप्शियन पाउंड",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "इथिओपियन बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी दिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इराणी रियाल",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "इरिट्रियन नाफ्का",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "ईस्त्रायली न्यू शेकेल",
+ "symbol": "₪"
+ },
+ "UZS": {
+ "name": "उझबेकिस्तान सॉम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उत्तर कोरियन वॉन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरुग्वेचा पेसो",
+ "symbol": "UYU"
+ },
+ "AUD": {
+ "name": "ऑस्ट्रेलियन डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "कंबोडियन रियेल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "कझाकिस्तानी तेंगे",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "कतारी रियाल",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "काँगोलीज फ्रँक",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "किरगिस्तानी सॉम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कुवैती दिनार",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "कॅनडियन डॉलर",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "केनियन शिलिंग",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप व्हर्डेयन एस्कुडो",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केमेन आयलॅंड डॉलर",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "कोलंबियन पेसो",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "कोलोरियन फ्रँक",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "कोस्टा रिका कोलोन",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "क्यूबन पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "क्यूबन विनिमय पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "क्रोएशियन कूना",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गयाना डॉलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गाम्बियन डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनी फ्रँक",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ग्वाटेमालाचे क्वेत्झाल",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानीयन सेडी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पेसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी युआन",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "जपानी येन",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "जमैकन डॉलर",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "जिबौटियन फ्रँक",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिब्राल्टर पाउंड",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉर्जियन लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जॉर्डनियन दिनार",
+ "symbol": "JOD"
+ },
+ "ZMW": {
+ "name": "झांबियन क्वाचा",
+ "symbol": "ZMW"
+ },
+ "CZK": {
+ "name": "झेक प्रजासत्ताक कोरुना",
+ "symbol": "CZK"
+ },
+ "TZS": {
+ "name": "टांझानियन शिलिंग",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "टोंगा पाआंगा",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ट्यूनिशियन दिनार",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "डॅनिश क्रोन",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "ताजकीस्तानी सोमोनी",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "तुर्कमेनिस्तानी मानाट",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "तुर्की लिरा",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "त्रिनिदाद आणि टोबॅगो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बाहत",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दक्षिण आफ्रिकी रँड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दक्षिण कोरियन वॉन",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "दक्षिण सुदानी पाउंड",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "नमिबियन डॉलर",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "नायजेरियन नायरा",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "निकाराग्वेचा कोर्डोबा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलँडचा अँटिलीन गिल्डर",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाळी रुपया",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉर्वेजियन क्रोन",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "न्यू तैवान डॉलर",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "न्यूझीलँड डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामा बाल्बोआ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "पराग्वे ग्वारानी",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "पाकिस्तानी रुपया",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापुआ न्यू गिनीयन किना",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "पूर्व कॅरीबियन डॉलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरुवियन नुइव्हो सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश झ्लॉटी",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "फिजियन डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "फॉकलंड आयलंड पाउंड",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "बर्मुडा डॉलर",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "बल्गेरियन लेव",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "बहामी डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांगलादेशी टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बार्बाडियन डॉलर",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "बाहरिनी दिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बुरुडियन फ्रँक",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "बेलारुशियन रुबल",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीझ डॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोट्सवाना पुला",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिव्हियन बोलिव्हियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोस्निया-हर्जेगोविना विनिमय मार्क",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ब्राझिलियन रियाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ब्रिटिश पाऊंड स्टर्लिंग",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ब्रुनेई डॉलर",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "भारतीय रुपया",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "भूतानी एंगल्ट्रम",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "मंगोलियन टुग्रिक",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "मलेशियन रिंगिट",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "मालदीवियन रुफिया",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी एरियारी",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "मालावियन क्वाचा",
+ "symbol": "MWK"
+ },
+ "MOP": {
+ "name": "मॅकॅनीज् पटाका",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "मॅसेडोनियन देनार",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "मेक्सिको पेसो",
+ "symbol": "MX$"
+ },
+ "MRO": {
+ "name": "मॉरिटानियन ओगिया",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "मॉरिशियन रुपी",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "मोझांबिकन मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोक्को दिरहॅम",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "मोल्डोवन लेउ",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "म्यानमार क्याट",
+ "symbol": "MMK"
+ },
+ "UAH": {
+ "name": "युक्रेनियन रिवनिया",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "युगांडा शिलिंग",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "युरो",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "यूएस डॉलर",
+ "symbol": "$"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "रवांडा फ्रँक",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रशियन रुबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियन लेऊ",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "लाइबेरियन डॉलर",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "लिथुआनियन लिटास",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लिबियाचा दिनार",
+ "symbol": "LYD"
+ },
+ "LAK": {
+ "name": "लेओशियन किप",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "लेबनीज पाउंड",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "लेसोटो लोटी",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "वानाटु वाटु",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "व्हिएतनामी डोंग",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "व्हेनेझुएला बोलिव्हार",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "श्रीलंकन रुपी",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयुक्त अरब अमीरात दिरहॅम",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सर्बियन दिनार",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "साओ टोम आणि प्रिन्सिपे डोबरा",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोअन टाला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिंगापूर डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सिएरा लिऑनचा लिऑन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियन पाउंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सुदानी पाउंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सुरिनामी डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलेना पाउंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेलोईस रुपी",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिंग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन आयलँड्स डॉलर",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "सौदी रियाल",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "स्वाझी लीलांगेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "स्विस फ्रँक",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "स्वीडिश क्रोना",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियन फॉरिन्ट",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "हाँगकाँग डॉलर",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "हैती गोअर्ड",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होंडुरा लेम्पियरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ms.json b/library/intl/resources/currency/ms.json
new file mode 100644
index 000000000..cbecbb720
--- /dev/null
+++ b/library/intl/resources/currency/ms.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malagasy",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Thai",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colon Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Cordoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar Iraq",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Jordan",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham Emiriah Arab Bersatu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Maghribi",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra Sao Tome dan Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolar AS",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "Dolar Australia",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dolar Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolar Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dolar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolar Brunei",
+ "symbol": "BND"
+ },
+ "XCD": {
+ "name": "Dolar Caribbean Timur",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Dolar Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolar Jamaica",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "Dolar Kanada",
+ "symbol": "CAD"
+ },
+ "KYD": {
+ "name": "Dolar Kepulauan Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dolar Kepulauan Solomon",
+ "symbol": "SBD"
+ },
+ "LRD": {
+ "name": "Dolar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dolar New Zealand",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singapura",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dolar Surinam",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dolar Taiwan Baru",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "Dolar Trinidad dan Tobago",
+ "symbol": "TTD"
+ },
+ "VND": {
+ "name": "Dong Vietnam",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Escudo Tanjung Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungary",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundia",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comoria",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Switzerland",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antillean Netherland",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ukraine",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua New Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Republik Czech",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona Iceland",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Sweden",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmark",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norway",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanma",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lithuania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Boleh Tukar Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metikal Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Pataca Macau",
+ "symbol": "MOP"
+ },
+ "GIP": {
+ "name": "Paun Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "Paun Kepulauan Falkland",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Paun Lubnan",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "Paun Mesir",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paun Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Paun Sterling British",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Paun Sudan",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Paun Sudan selatan",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Paun Syria",
+ "symbol": "SYP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CUC": {
+ "name": "Peso Boleh Tukar Cuba",
+ "symbol": "CUC"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Peso Dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipina",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso Mexico",
+ "symbol": "MXN"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afrika Selatan",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yaman",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Kemboja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "RM"
+ },
+ "SAR": {
+ "name": "Riyal Saudi",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Ruble Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Ruble Rusia",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maldives",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Mauritia",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel Baru Israel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som Kyrgystani",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "KES": {
+ "name": "Syiling Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Syiling Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Syiling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Syiling Uganda",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakhstan",
+ "symbol": "KZT"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Korea Selatan",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won Korea Utara",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Jepun",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Yuan Cina",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloty Poland",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mt.json b/library/intl/resources/currency/mt.json
new file mode 100644
index 000000000..18f1b4991
--- /dev/null
+++ b/library/intl/resources/currency/mt.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "ewro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mua.json b/library/intl/resources/currency/mua.json
new file mode 100644
index 000000000..135efb022
--- /dev/null
+++ b/library/intl/resources/currency/mua.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "ZAR": {
+ "name": "Solai Africa nekǝsǝŋ",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "solai Algerya",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Solai Amerika",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "solai Angola",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Solai Arabiya",
+ "symbol": "AED"
+ },
+ "AUD": {
+ "name": "solai Australya",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "solai Barenya",
+ "symbol": "BHD"
+ },
+ "XOF": {
+ "name": "solai BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "solai BEAC",
+ "symbol": "FCFA"
+ },
+ "BWP": {
+ "name": "solai Botswana",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "solai Britaniya",
+ "symbol": "£"
+ },
+ "BIF": {
+ "name": "solai Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "solai Djibouti",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "solai Egypt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "solai Eritre",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "solai Etiopia",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "solai Euro",
+ "symbol": "€"
+ },
+ "GMD": {
+ "name": "solai Gambiya",
+ "symbol": "GMD"
+ },
+ "SHP": {
+ "name": "Solai Helena",
+ "symbol": "SHP"
+ },
+ "INR": {
+ "name": "solai India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "solai Japoŋ",
+ "symbol": "JP¥"
+ },
+ "CAD": {
+ "name": "solai Kanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "solai Kapverdiya",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "solai Kenia",
+ "symbol": "KES"
+ },
+ "KMF": {
+ "name": "solai Komorya",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "solai Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "solai Lesotho",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "solai Liberiya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "solai Libya",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Solai Malagasya",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Solai Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "Solai Marok",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Solai Mauricǝ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Solai Mauritaniya",
+ "symbol": "MRO"
+ },
+ "NAD": {
+ "name": "Solai Namibiya",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Solai Nigeriya",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Solai Rwanda",
+ "symbol": "RWF"
+ },
+ "SCR": {
+ "name": "Solai Saichel",
+ "symbol": "SCR"
+ },
+ "STD": {
+ "name": "Solai Sao Tome",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Solai Saudiya",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "solai Sierra leonǝ",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Solai Somaliya",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Solai Sudaŋ ma dii ne dinar",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "solai Swaziland",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Solai Swiss",
+ "symbol": "CHF"
+ },
+ "CNY": {
+ "name": "solai Syiŋ",
+ "symbol": "CN¥"
+ },
+ "TZS": {
+ "name": "Solai Tanzaniya",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Solai Tunisiya",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Solai Uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "Solai Zambiya",
+ "symbol": "ZMW"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/my.json b/library/intl/resources/currency/my.json
new file mode 100644
index 000000000..0b184fdbe
--- /dev/null
+++ b/library/intl/resources/currency/my.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "XPF": {
+ "name": "XPFဖရန့်",
+ "symbol": "CFPF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CAD": {
+ "name": "ကနေဒါ ဒေါ်လာ",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "ကာတာရီအော်လ်",
+ "symbol": "QAR"
+ },
+ "KWD": {
+ "name": "ကူဝိတ်ဒီနာ",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "ကေမန် ကျွန်းစု ဒေါ်လာ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ကော့စ်တာရီကာ ခိုလုံး",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ကိုမိုရိုစ် ဖရန့်",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ကိုလံဘီယာ ပီဆို",
+ "symbol": "COP"
+ },
+ "KES": {
+ "name": "ကင်ညာသျှီလင်",
+ "symbol": "KES"
+ },
+ "XAF": {
+ "name": "ကင်မရွန်းဖရန့်",
+ "symbol": "FCFA"
+ },
+ "KHR": {
+ "name": "ကမ္ဘောဒီးယား ရီးယဲ",
+ "symbol": "KHR"
+ },
+ "CUP": {
+ "name": "ကျူးဘား ပီဆို",
+ "symbol": "CUP"
+ },
+ "CDF": {
+ "name": "ကွန်ဂို ဖရန့်",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "ခရူဂစ်စတန်ဆော်မ်",
+ "symbol": "KGS"
+ },
+ "KZT": {
+ "name": "ခရူဂစ်စတန်ထိန်ဂျီ",
+ "symbol": "KZT"
+ },
+ "HRK": {
+ "name": "ခရိုအေးရှားခူးနာ",
+ "symbol": "HRK"
+ },
+ "CVE": {
+ "name": "ခေ့ပ်ဗာဒူ အက်စ်ခူဒို",
+ "symbol": "CVE"
+ },
+ "CLP": {
+ "name": "ချီလီ ပီဆို",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "ချက်ခိုရိုနာ",
+ "symbol": "CZK"
+ },
+ "GHS": {
+ "name": "ဂါနာ ဆဲဒီ",
+ "symbol": "GHS"
+ },
+ "GNF": {
+ "name": "ဂီးနီ ဖရန့်",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "ဂူရာနာ ဒေါ်လာ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ဂန်ဘီယာ ဒါလာစီ",
+ "symbol": "GMD"
+ },
+ "JPY": {
+ "name": "ဂျပန်ယန်း",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "ဂျမေကာ ဒေါ်လာ",
+ "symbol": "JMD"
+ },
+ "GIP": {
+ "name": "ဂျီဘရော်လ်တာ ပေါင်",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "ဂျီဘူတီ ဖရန့်",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ဂျော်ဂျီယာလားရီ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ဂျော်ဒန်ဒီနား",
+ "symbol": "JOD"
+ },
+ "GTQ": {
+ "name": "ဂွာတီမာလာ ခက်ဇော်လ်",
+ "symbol": "GTQ"
+ },
+ "WST": {
+ "name": "စမိုအထားလာ",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "စင်္ကာပူ ဒေါ်လာ",
+ "symbol": "SGD"
+ },
+ "STD": {
+ "name": "စိန့်တိုမီနှင့်ပရင်စီပ့် ဒိုဘရာ",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "စိန့်ဟဲလီနာ ပေါင်",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "စွာဇီလန်လီလန်းဂီနီ",
+ "symbol": "SZL"
+ },
+ "RSD": {
+ "name": "ဆားဘီးယားဒယ်နား",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "ဆီအဲရာ လီအိုနီယန် လီအိုနီ",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "ဆီးရီးယား ပေါင်",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ဆူဒန် ပေါင်",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ဆူရီနိမ်း ဒေါ်လာ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ဆေးရှလ်ရူးပီး",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ဆော်ဒီအာရေးဗီးယားရီယော်လ်",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "ဆော်လမွန်ကျွန်းစု ဒေါ်လာ",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "ဆိုမာလီသျှီလင်",
+ "symbol": "SOS"
+ },
+ "SEK": {
+ "name": "ဆွီဒင် ခရိုဏာ",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "ဆွစ် ဖရန့်",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ဇင်ဘာဘွေခွါးချာ",
+ "symbol": "ZMW"
+ },
+ "CNY": {
+ "name": "တရုတ် ယွမ်",
+ "symbol": "CN¥"
+ },
+ "TJS": {
+ "name": "တာဂျီကစ္စတန်ဆိုမိုနီ",
+ "symbol": "TJS"
+ },
+ "TND": {
+ "name": "တူနီရှားဒီနာ",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "တူရကီ လိုင်ရာ",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "တာခ်မီန့စ်တန်မာနတ်",
+ "symbol": "TMT"
+ },
+ "KRW": {
+ "name": "တောင်ကိုးရီးယား ဝမ်",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "တောင်ဆူဒန်ပေါင်",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "တောင်အဖရိက ရန်း",
+ "symbol": "ZAR"
+ },
+ "TZS": {
+ "name": "တန်ဇန်းနီးယားသျှီလင်",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "တွန်ဂါဗန်ဂါ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ထရိုင်နီဒတ်နှင့်တိုဘာဂိုဒေါ်လာ",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "ထိုင်ဝမ် ဒေါ်လာအသစ်",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "ထိုင်းဘတ်",
+ "symbol": "฿"
+ },
+ "DOP": {
+ "name": "ဒိုမီနီကန် ပီဆို",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ဒိန်းမတ်ခရိုဏာ",
+ "symbol": "DKK"
+ },
+ "NZD": {
+ "name": "နယူးဇီလန် ဒေါ်လာ",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "နီကာရာဂွာ ခိုးဒိုဘာ",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "နီပေါ ရူပီး",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "နော်ဝေ ခရိုဏာ",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "နိုင်ဂျီးရီးယားနိုင်းရာ",
+ "symbol": "NGN"
+ },
+ "CUC": {
+ "name": "နိုင်ငံခြားငွေလဲလှယ်နိုင်သော ကျူးဘားပီဆိုငွေ",
+ "symbol": "CUC"
+ },
+ "NAD": {
+ "name": "နမ်မီးဘီးယား ဒေါ်လာ",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "နယ်သာလန် အန်တီလန် ဂင်းဒါး",
+ "symbol": "ANG"
+ },
+ "PAB": {
+ "name": "ပနားမား ဘလ်ဘိုးအာ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "ပါကစ္စတန် ရူပီး",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ပါပူရာနယူးဂီနီခီးနာ",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ပါရာဂွေးဂွါးအ်နီး",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ပီရူး နူအီဗိုဆိုးလ်",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ပိုလန် ဇ‌လော့တီ",
+ "symbol": "PLN"
+ },
+ "PHP": {
+ "name": "ဖိလစ်ပိုင် ပီဆို",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ဖီဂျီ ဒေါ်လာ",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ဖောက်ကလန် ကျွန်းစု ပေါင်",
+ "symbol": "FKP"
+ },
+ "VUV": {
+ "name": "ဗာနုအာတူဗားထူ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ဗီယက်နမ် ဒေါင်",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "ဗင်နီဇွဲလား ဘိုလီဗာ",
+ "symbol": "VEF"
+ },
+ "GBP": {
+ "name": "ဗြိတိသျှ ပေါင်",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "ဘရာဇီး ရီးယဲ",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ဘရူနိုင်း ဒေါ်လာ",
+ "symbol": "BND"
+ },
+ "BSD": {
+ "name": "ဘဟားမား ဒေါ်လာ",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "ဘာဘဒီယံဒေါ်လာ",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ဘာမူဒါ ဒေါ်လာ",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "ဘာရိန်းဒီနား",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "ဘီလာရုစ် ရူဘယ်",
+ "symbol": "BYR"
+ },
+ "BGN": {
+ "name": "ဘူဂေးရီးယားလက်ဖ်",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "ဘူတန်အံဂါလ်ထရန်",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "ဘူရွန်ဒီ ဖရန့်",
+ "symbol": "BIF"
+ },
+ "BZD": {
+ "name": "ဘေလီဇ် ဒေါ်လာ",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနားမတ်က်",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ဘော့စ်ဝါနာ ပုလ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ဘိုလီဘီယံ ဘိုလီဘီအားနို",
+ "symbol": "BOB"
+ },
+ "BDT": {
+ "name": "ဘင်္ဂလားဒေ့ရှ် တာကာ",
+ "symbol": "BDT"
+ },
+ "MOP": {
+ "name": "မကာအိုပါတားကား",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "မလာဂစ်စီ အရီရရီ ငွေကြေး",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "မလေးရှား ရင်းဂစ်",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "မာစီဒိုးနီးယားဒီနာ",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "မာလာဝီခွါးချာ",
+ "symbol": "MWK"
+ },
+ "MRO": {
+ "name": "မောရီတာနီအာအူဂီးယာ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "မော်ရေရှားစ် ရူပီ",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "မော်လ်ဒိုက်ရူးဖီရာ",
+ "symbol": "MVR"
+ },
+ "MZN": {
+ "name": "မိုဇန်ဘစ်မက်တီခယ်လ်",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "မိုရိုကို ဒရမ်",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "မက္ကဆီကို ပီဆို",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "မောလ်ဒိုဗာလယ်အို",
+ "symbol": "MDL"
+ },
+ "KPW": {
+ "name": "မြောက်ကိုးရီးယား ဝမ်",
+ "symbol": "KPW"
+ },
+ "MMK": {
+ "name": "မြန်မာကျပ်",
+ "symbol": "K"
+ },
+ "MNT": {
+ "name": "မွန်ဂိုးလီးယားထူးဂရခ်",
+ "symbol": "MNT"
+ },
+ "YER": {
+ "name": "ယီမင်ရီအော်လ်",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "ယူကရိန်း",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ယူဂန္ဓာသျှီလင်",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "ယူရို",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "ရဝန်ဒါ ဖရန့်",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ရုရှ ရူဘယ်",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ရိုမေးနီယားလယ်အို",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "လာအိုခိပ်",
+ "symbol": "LAK"
+ },
+ "LYD": {
+ "name": "လီဗျာ ဒီနာ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "လက်ဘနွန် ပေါင်",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "လိုင်ဘေးရီးယား ဒေါ်လာ",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "လစ်သူယေးနီးယားလီတားစ်",
+ "symbol": "LTL"
+ },
+ "LKR": {
+ "name": "သီရိလင်္ကာ ရူပီး",
+ "symbol": "LKR"
+ },
+ "HTG": {
+ "name": "ဟေတီဂူးအော်ဒ်",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ဟောင်ကောင် ဒေါ်လာ",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "ဟန်ဂေရီယံဖော်ရင့်တ်",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "ဟွန်ဒူးရပ်စ် လန်းပီးရာ",
+ "symbol": "HNL"
+ },
+ "AZN": {
+ "name": "အဇာဘိုင်ဂျန်မာနတ်",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "အမေရိကန် ဒေါ်လာ",
+ "symbol": "US$"
+ },
+ "AWG": {
+ "name": "အရူဘန် ဂင်းဒါး",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "အရှေ့ကာရီဘီယံဒေါ်လာ",
+ "symbol": "EC$"
+ },
+ "ARS": {
+ "name": "အာဂျင်တီးနား ပီဆို",
+ "symbol": "ARS"
+ },
+ "AFN": {
+ "name": "အာဖဂန်အာဖဂါနီ",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "အာမေးနီးယားဒရမ်း",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "အာရပ်ဒူဟမ်း",
+ "symbol": "AED"
+ },
+ "EGP": {
+ "name": "အီဂျစ် ပေါင်",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "အီရီတရီအာနာ့ခ်ဖာ",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "အီရန်ရီအော်လ်",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "အီရပ်ဒီနား",
+ "symbol": "IQD"
+ },
+ "ETB": {
+ "name": "အီသီယိုးပီးယားဘီးယာ",
+ "symbol": "ETB"
+ },
+ "UZS": {
+ "name": "ဥဘက်ကစ္စတန်ဆော်မ်",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ဥရုဂွေးပီဆို",
+ "symbol": "UYU"
+ },
+ "DZD": {
+ "name": "အဲလ်ဂျီရီယန် ဒီနာ",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "ဩစတြေးလျ ဒေါ်လာ",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "အိုမန်ရီအော်လ်",
+ "symbol": "OMR"
+ },
+ "ISK": {
+ "name": "အိုက်စလန် ခရိုဏာ",
+ "symbol": "ISK"
+ },
+ "AOA": {
+ "name": "အင်ဂိုလာ ကန်ဇာ",
+ "symbol": "AOA"
+ },
+ "IDR": {
+ "name": "အင်ဒိုနီးရှား ရူပီးယား",
+ "symbol": "IDR"
+ },
+ "XOF": {
+ "name": "အိုင်ဗရီးကိုးစ်ဖရန့်",
+ "symbol": "CFA"
+ },
+ "ILS": {
+ "name": "အစ္စရေးရှဲကလ်အသစ်",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "အိန္ဒိယ ရူပီး",
+ "symbol": "₹"
+ },
+ "ALL": {
+ "name": "အယ်လ်ဘီးနီးယားလီခ်",
+ "symbol": "ALL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/naq.json b/library/intl/resources/currency/naq.json
new file mode 100644
index 000000000..c6d0c0180
--- /dev/null
+++ b/library/intl/resources/currency/naq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angolan Kwanzab",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "Australian Dollari",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahrain Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswanan Pulab",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "British Ponds",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Franc",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "Canadian Dollari",
+ "symbol": "CA$"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Chinese Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "Djibouti Franc",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egytian Ponds",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreian Nakfa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Escudo Caboverdiano",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eurob",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambia Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Japanese Yenni",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Malagasy Franc",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwachab",
+ "symbol": "MWK"
+ },
+ "MRO": {
+ "name": "Mauritania Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius Rupeeb",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibia Dollari",
+ "symbol": "$"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Franci",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome and Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "Seychelles Rupee",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somali Shillings",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Randi",
+ "symbol": "ZAR"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "St Helena Ponds",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudanese Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swiss Franci",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzanian Shillings",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Ugandan Shillings",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "USD": {
+ "name": "US Dollari",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwachab",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nb.json b/library/intl/resources/currency/nb.json
new file mode 100644
index 000000000..4c47f844d
--- /dev/null
+++ b/library/intl/resources/currency/nb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanske lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriske dinarer",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "amerikanske dollar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolanske kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinske pesos",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenske dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubiske floriner",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "aserbajdsjanske manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "australske dollar",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "bahamanske dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainske dinarer",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshiske taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadiske dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "beliziske dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudiske dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanske ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "bolivianske boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinske konvertible mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanske pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasilianske real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britiske pund sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiske dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarske lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiske franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "caymanske dollar",
+ "symbol": "KYD"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "chilenske pesos",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombianske pesos",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costaricanske colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "danske kroner",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "djiboutiske franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikanske pesos",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "egyptiske pund",
+ "symbol": "EGP"
+ },
+ "AED": {
+ "name": "emiratarabiske dirham",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "eritreiske nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiske birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandspund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fijianske dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinske pesos",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiske dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiske lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanesiske cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarske pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalanske quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineanske franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanske dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiske gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduranske lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-dollar",
+ "symbol": "HKD"
+ },
+ "BYR": {
+ "name": "hviterussiske rubler",
+ "symbol": "BYR"
+ },
+ "INR": {
+ "name": "indiske rupier",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonesiske rupier",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakske dinarer",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranske rialer",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandske kroner",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "jamaikanske dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanske yen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenittiske rialer",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanske dinarer",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodsjanske riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiske dollar",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "kappverdiske escudos",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakhstanske tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyanske shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesiske yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgisiske som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komoriske franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesiske franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatiske kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "kubanske konvertible pesos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanske pesos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitiske dinarer",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laotiske kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothiske loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesiske pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiske dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyske dinarer",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauiske lita",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagassiske ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaoiske pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonske denarer",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawiske kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysiske ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldiviske rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkanske dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritanske ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritiske rupier",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "meksikanske pesos",
+ "symbol": "MXN"
+ },
+ "MDL": {
+ "name": "moldovske leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolske tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikiske metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarske kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiske dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nederlandske antillegylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalske rupier",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "newzealandske dollar",
+ "symbol": "NZD"
+ },
+ "NIO": {
+ "name": "nicaraguanske córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigerianske naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreanske won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norske kroner",
+ "symbol": "kr"
+ },
+ "ILS": {
+ "name": "nye israelske shekler",
+ "symbol": "ILS"
+ },
+ "TWD": {
+ "name": "nye taiwanske dollar",
+ "symbol": "TWD"
+ },
+ "OMR": {
+ "name": "omanske rialer",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanske rupier",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamanske balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuanske kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayanske guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruanske nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polske zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarske rialer",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumenske leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "russiske rubler",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandiske franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salomonske dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoranske colon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanske tala",
+ "symbol": "WST"
+ },
+ "SHP": {
+ "name": "sankthelenske pund",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "São Tomé og Príncipe-dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiarabiske riyaler",
+ "symbol": "SAR"
+ },
+ "XAF": {
+ "name": "sentralafrikanske CFA-franc",
+ "symbol": "XAF"
+ },
+ "RSD": {
+ "name": "serbiske dinarer",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychelliske rupier",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonske leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporske dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliske shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankiske rupier",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanske pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamske dollar",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "sveitsiske franc",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svenske kroner",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "swazilandske lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syriske pund",
+ "symbol": "SYP"
+ },
+ "ZAR": {
+ "name": "sørafrikanske rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sørkoreanske won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "sørsudanske pund",
+ "symbol": "SSP"
+ },
+ "TJS": {
+ "name": "tadsjikiske somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzanianske shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailandske baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tonganske paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadiske dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "tsjekkiske koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tunisiske dinarer",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenske manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "tyrkiske lire",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandiske shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainske hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungarske forinter",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayanske pesos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekiske som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatiske vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelanske bolivar",
+ "symbol": "VEF"
+ },
+ "XOF": {
+ "name": "vestafrikanske CFA-franc",
+ "symbol": "CFA"
+ },
+ "VND": {
+ "name": "vietnamesiske dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambiske kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwisk dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "østkaribiske dollar",
+ "symbol": "XCD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nd.json b/library/intl/resources/currency/nd.json
new file mode 100644
index 000000000..21a9284a1
--- /dev/null
+++ b/library/intl/resources/currency/nd.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi yase Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinali yase Aljeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari yase Bhahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari yase Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari yase Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari yase Tunisiya",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham yase Morokho",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra yase Sao Tome lo Principe",
+ "symbol": "STD"
+ },
+ "AED": {
+ "name": "Dola laseArab",
+ "symbol": "AED"
+ },
+ "ETB": {
+ "name": "Dola laseEthiopia",
+ "symbol": "ETB"
+ },
+ "USD": {
+ "name": "Dola yase Amelika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dola yase Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola yase Khanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola yase Libheriya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola yase Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Escudo Caboverdiano",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Fulenki CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fulenki CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Fulenki yase Bhurundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fulenki yase Jibhuthi",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fulenki yase Khomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fulenki yase Khongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Fulenki yase Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Fulenki yase Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fulenki yase Swisi",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha yase Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha yase Zambiya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza yase Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leyoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lothi yase Lesotho",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakfa yase Eritrea",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira yase Nijeriya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "EGP": {
+ "name": "Phawundi laseGibhide",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Phawundi yase Ngilandi",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Phawundindi laseSt Helena",
+ "symbol": "SHP"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "BWP": {
+ "name": "Phula yase Botswana",
+ "symbol": "BWP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi yase Afrika ye Zanzi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal yase Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi yase Indiya",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi yase Morishasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi yase Seyisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi yase Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi yase Somaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi yase Tanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi yase Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya yase Moritaniya",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni yase Japhani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi yase China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ne-IN.json b/library/intl/resources/currency/ne-IN.json
new file mode 100644
index 000000000..a4703e899
--- /dev/null
+++ b/library/intl/resources/currency/ne-IN.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "अजरबैजानी मानात",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफ्गान अफ्गानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमेरिकी डलर",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "अर्जेन्टिनी पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अल्जेरियाली डिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अल्बानियन लेक",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "अष्ट्रेलियन डलर",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "आइसल्याण्डिक क्रोना",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "आरूबन फ्लोरिन",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "आर्मेनियाली ड्राम",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "इजरायली नयाँ शेकेल",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "इजिप्सियन पाउन्ड",
+ "symbol": "EGP"
+ },
+ "IDR": {
+ "name": "इण्डोनेशियाली रूपियाँ",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "इथियोपियाली बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी डिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इरानियाली रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उज्बेकिस्तान सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उत्तर कोरियाली वन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरूगुवायाली पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "एङ्गोलान क्वान्जा",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "एरिट्रियन नाक्फा",
+ "symbol": "ERN"
+ },
+ "OMR": {
+ "name": "ओमनी रियल",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "कङ्गोली फ्रान्क",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "कतारी रियल",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "कम्बोडिनेयाली रियल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "काजाखस्तानी टेन्ज",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "किर्गिस्तानी सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कुवेती डिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केन्याली शिलिङ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप भर्डियन एस्कुडो",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केम्यान टापुहरूका डलर",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "कोमोरियन फ्रान्क",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलम्वियन पेसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोष्टारिकन कोलोन",
+ "symbol": "CRC"
+ },
+ "CAD": {
+ "name": "क्यानाडियाली डलर",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "क्यूवाली पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "क्यूवाली रूपान्तरणयोग्य पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "क्रोएशियाली कुना",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गाइनिज डलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गाम्वियाली डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनियाली फ्रान्क",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ग्वाटेमाला क्वेट्जाल",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानाली सेडी",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "चिनिँया युआन",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "चिलियन पेसो",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "चेख गणतञ्त्र कोरूना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाइकाली डलर",
+ "symbol": "JMD"
+ },
+ "GEL": {
+ "name": "जर्जियाली लारी",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "जाम्बियाली क्वाचा",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबौंटियाली फ्रान्क",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिब्राल्टर पाउण्ड",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "जोर्डानियाली डलर",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टङ्गन पाङ्गा",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "टर्किश लिरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "टुनिसियाली डिनार",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "टुर्क्मेनिस्तानी मानात",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ड्यानिश क्रोन",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ताजिक्स्तानी सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ताञ्जानियाली शिलिङ",
+ "symbol": "TZS"
+ },
+ "TTD": {
+ "name": "त्रिनिडाड र टोबागो डलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई भाट",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दक्षिण अफ्रिकी र्‍यान्ड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दक्षिण कोरियाली वन",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "दक्षिण सुडानी पाउन्ड",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नयाँ ताइवान डलर",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "नर्वेजियाली क्रोन",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "नाइजेरियन नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामिबियन डलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागुवान कोर्डोवा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरल्याण्ड्स एन्टिलियन गिल्डर",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रूपैयाँ",
+ "symbol": "नेरू"
+ },
+ "NZD": {
+ "name": "न्यूजिल्याण्ड डलर",
+ "symbol": "NZ$"
+ },
+ "PGK": {
+ "name": "पपुआ न्यू गिनियाली किना",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "पाकिस्तानी रूपियाँ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "पानामानियाली बाल्बोआ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "पारागुयाली गुरानी",
+ "symbol": "PYG"
+ },
+ "XCD": {
+ "name": "पूर्वी क्यारिबियन डलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूभियाली न्यूभो सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश ज्लोटाई",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फक्‌ल्याण्ड टापुहरूका पाउन्ड",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फिजीयाली डलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "बङ्गलादेशी टाका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बर्बाडियन डलर",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "बर्मुडन डलर",
+ "symbol": "BMD"
+ },
+ "BSD": {
+ "name": "बहामियाली डलर",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "बाहारैनी डिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बुरूण्डियाली फ्रान्क",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बुल्गारियाली लेभ",
+ "symbol": "BGN"
+ },
+ "GBP": {
+ "name": "बेलायती पाउण्ड स्टर्लिङ",
+ "symbol": "£"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "बोट्सवानान पुला",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिभियन बोलिभियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोस्निया-हर्जगोभिनिया रूपान्तरयोग्य मार्क",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ब्राजिलियन रियल",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ब्रुनाई डलर",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "भानुआतू भातु",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "भारतीय रूपिँया",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "भियतनामी डङ्",
+ "symbol": "₫"
+ },
+ "BTN": {
+ "name": "भुटानी एन्‌गुल्ट्रुम",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "भेनेजुएलन बोलिभर",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "मङ्गोलियाली टुग्रिक",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "मलाविअन क्वाचा",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "मलेशियाली रिङ्गेट",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "माउरिटानियानली औगुइया",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "माउरिटियन रूपी",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "माकानिज पटाका",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "मालडिभियाली रूफियाँ",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी एरिआरी",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "माल्डोभन लेउ",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "मेक्सिकन पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोजाम्विकन मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोक्काली डिर्‌हाम",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "म्यान्मा क्याट",
+ "symbol": "MMK"
+ },
+ "MKD": {
+ "name": "म्यासेडोनियाली डेनार",
+ "symbol": "MKD"
+ },
+ "UAH": {
+ "name": "युक्रेनी हिर्भिनिया",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "युगाण्डाली शिलिङ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "युरो",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाली लेऊ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "र्‌वाण्डाली फ्रान्क",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथुनियाली लिटास",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "लिबेरियाली डलर",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "लिवियाली डिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनाली पाउन्ड",
+ "symbol": "LBP"
+ },
+ "BZD": {
+ "name": "वेलिज डलर",
+ "symbol": "BZD"
+ },
+ "LKR": {
+ "name": "श्रीलङ्काली रूपिया",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयुक्त अरब एमिराट्स डिर्हाम",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सर्बियाली डिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियालहरू",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साओ टोम र प्रिन्सिप डोब्रा",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोआन ताला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिङ्गापुर डलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सियरा लियोनेन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सिरियाली पाउन्ड",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "सीएफ्‌ए फ्रान्क बीइएसी",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "सीएफ्‌ए फ्रान्क बीसीइएओ",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "सीएफ्‌पी फ्रान्क",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "सुडानी पाउन्ड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सुरिनामिज डलर",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "सेचेलोइस रूपी",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "सेन्ट हेलेना पाउन्ड",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिङ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन टापुहरूका डलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "स्वाजी लिलान्गेनी",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "स्विडिश क्रोना",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "स्विस् फ्रैङ्क",
+ "symbol": "CHF"
+ },
+ "HKD": {
+ "name": "हङकङ डलर",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "हङ्गेरियन फोरिन्ट",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हैटियाली गुर्ड",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होन्डुरान लेम्पिरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ne.json b/library/intl/resources/currency/ne.json
new file mode 100644
index 000000000..2cebfcca8
--- /dev/null
+++ b/library/intl/resources/currency/ne.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "अजरबैजानी मानात",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफ्गान अफ्गानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमेरिकी डलर",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "अर्जेन्टिनी पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अल्जेरियाली डिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अल्बानियन लेक",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "अष्ट्रेलियन डलर",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "आइसल्याण्डिक क्रोना",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "आरूबन फ्लोरिन",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "आर्मेनियाली ड्राम",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "इजरायली नयाँ शेकेल",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "इजिप्सियन पाउन्ड",
+ "symbol": "EGP"
+ },
+ "IDR": {
+ "name": "इण्डोनेशियाली रूपियाँ",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "इथियोपियाली बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी डिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इरानियाली रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उज्बेकिस्तान सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उत्तर कोरियाली वन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरूगुवायाली पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "एङ्गोलान क्वान्जा",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "एरिट्रियन नाक्फा",
+ "symbol": "ERN"
+ },
+ "OMR": {
+ "name": "ओमनी रियल",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "कङ्गोली फ्रान्क",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "कतारी रियल",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "कम्बोडिनेयाली रियल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "काजाखस्तानी टेन्ज",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "किर्गिस्तानी सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कुवेती डिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केन्याली शिलिङ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप भर्डियन एस्कुडो",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केम्यान टापुहरूका डलर",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "कोमोरियन फ्रान्क",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलम्वियन पेसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोष्टारिकन कोलोन",
+ "symbol": "CRC"
+ },
+ "CAD": {
+ "name": "क्यानाडियाली डलर",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "क्यूवाली पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "क्यूवाली रूपान्तरणयोग्य पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "क्रोएशियाली कुना",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गाइनिज डलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गाम्वियाली डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनियाली फ्रान्क",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ग्वाटेमाला क्वेट्जाल",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानाली सेडी",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "चिनिँया युआन",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "चिलियन पेसो",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "चेख गणतञ्त्र कोरूना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाइकाली डलर",
+ "symbol": "JMD"
+ },
+ "GEL": {
+ "name": "जर्जियाली लारी",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JP¥"
+ },
+ "ZMW": {
+ "name": "जाम्बियाली क्वाचा",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबौंटियाली फ्रान्क",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिब्राल्टर पाउण्ड",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "जोर्डानियाली डलर",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टङ्गन पाङ्गा",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "टर्किश लिरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "टुनिसियाली डिनार",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "टुर्क्मेनिस्तानी मानात",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ड्यानिश क्रोन",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ताजिक्स्तानी सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ताञ्जानियाली शिलिङ",
+ "symbol": "TZS"
+ },
+ "TTD": {
+ "name": "त्रिनिडाड र टोबागो डलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई भाट",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दक्षिण अफ्रिकी र्‍यान्ड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दक्षिण कोरियाली वन",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "दक्षिण सुडानी पाउन्ड",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नयाँ ताइवान डलर",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "नर्वेजियाली क्रोन",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "नाइजेरियन नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामिबियन डलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागुवान कोर्डोवा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरल्याण्ड्स एन्टिलियन गिल्डर",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रूपैयाँ",
+ "symbol": "नेरू"
+ },
+ "NZD": {
+ "name": "न्यूजिल्याण्ड डलर",
+ "symbol": "NZ$"
+ },
+ "PGK": {
+ "name": "पपुआ न्यू गिनियाली किना",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "पाकिस्तानी रूपियाँ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "पानामानियाली बाल्बोआ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "पारागुयाली गुरानी",
+ "symbol": "PYG"
+ },
+ "XCD": {
+ "name": "पूर्वी क्यारिबियन डलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूभियाली न्यूभो सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश ज्लोटाई",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फक्‌ल्याण्ड टापुहरूका पाउन्ड",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फिजीयाली डलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "बङ्गलादेशी टाका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बर्बाडियन डलर",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "बर्मुडन डलर",
+ "symbol": "BMD"
+ },
+ "BSD": {
+ "name": "बहामियाली डलर",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "बाहारैनी डिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बुरूण्डियाली फ्रान्क",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बुल्गारियाली लेभ",
+ "symbol": "BGN"
+ },
+ "GBP": {
+ "name": "बेलायती पाउण्ड स्टर्लिङ",
+ "symbol": "£"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "बोट्सवानान पुला",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिभियन बोलिभियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोस्निया-हर्जगोभिनिया रूपान्तरयोग्य मार्क",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "ब्राजिलियन रियल",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ब्रुनाई डलर",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "भानुआतू भातु",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "भारती रूपिँया",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "भियतनामी डङ्",
+ "symbol": "₫"
+ },
+ "BTN": {
+ "name": "भुटानी एन्‌गुल्ट्रुम",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "भेनेजुएलन बोलिभर",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "मङ्गोलियाली टुग्रिक",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "मलाविअन क्वाचा",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "मलेशियाली रिङ्गेट",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "माउरिटानियानली औगुइया",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "माउरिटियन रूपी",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "माकानिज पटाका",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "मालडिभियाली रूफियाँ",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी एरिआरी",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "माल्डोभन लेउ",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "मेक्सिकन पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोजाम्विकन मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोक्काली डिर्‌हाम",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "म्यान्मा क्याट",
+ "symbol": "MMK"
+ },
+ "MKD": {
+ "name": "म्यासेडोनियाली डेनार",
+ "symbol": "MKD"
+ },
+ "UAH": {
+ "name": "युक्रेनी हिर्भिनिया",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "युगाण्डाली शिलिङ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "युरो",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाली लेऊ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "र्‌वाण्डाली फ्रान्क",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथुनियाली लिटास",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "लिबेरियाली डलर",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "लिवियाली डिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनाली पाउन्ड",
+ "symbol": "LBP"
+ },
+ "BZD": {
+ "name": "वेलिज डलर",
+ "symbol": "BZD"
+ },
+ "LKR": {
+ "name": "श्रीलङ्काली रूपिया",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयुक्त अरब एमिराट्स डिर्हाम",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सर्बियाली डिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियालहरू",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साओ टोम र प्रिन्सिप डोब्रा",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोआन ताला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिङ्गापुर डलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सियरा लियोनेन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सिरियाली पाउन्ड",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "सीएफ्‌ए फ्रान्क बीइएसी",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "सीएफ्‌ए फ्रान्क बीसीइएओ",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "सीएफ्‌पी फ्रान्क",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "सुडानी पाउन्ड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सुरिनामिज डलर",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "सेचेलोइस रूपी",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "सेन्ट हेलेना पाउन्ड",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिङ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन टापुहरूका डलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "स्वाजी लिलान्गेनी",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "स्विडिश क्रोना",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "स्विस् फ्रैङ्क",
+ "symbol": "CHF"
+ },
+ "HKD": {
+ "name": "हङकङ डलर",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "हङ्गेरियन फोरिन्ट",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हैटियाली गुर्ड",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होन्डुरान लेम्पिरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nl.json b/library/intl/resources/currency/nl.json
new file mode 100644
index 000000000..5b8db07bd
--- /dev/null
+++ b/library/intl/resources/currency/nl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghaanse afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerijnse dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanse dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentijnse peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanse gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australische dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbeidzjaanse manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamaanse dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "Barbadaanse dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizaanse dollar",
+ "symbol": "BZD"
+ },
+ "BDT": {
+ "name": "Bengalese taka",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutaanse ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanse boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnische convertibele mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswaanse pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliaanse real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brits pond sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundese frank",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodjaanse riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadese dollar",
+ "symbol": "C$"
+ },
+ "KYD": {
+ "name": "Caymaneilandse dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "Chileense peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese yuan renminbi",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Colombiaanse peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorese frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Ricaanse colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Cubaanse convertibele peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cubaanse peso",
+ "symbol": "CUP"
+ },
+ "DKK": {
+ "name": "Deense kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutiaanse frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominicaanse peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptisch pond",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopische birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandeilands pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fiji-dollar",
+ "symbol": "FJ$"
+ },
+ "PHP": {
+ "name": "Filipijnse peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiaanse dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgische lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarees pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalteekse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyaanse dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanse gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hongaarse forint",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "Hongkongse dollar",
+ "symbol": "HK$"
+ },
+ "ISK": {
+ "name": "IJslandse kroon",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indiase roepie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraanse rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israëlische nieuwe shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaicaanse dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanse yen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "Jemenitische rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanse dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaapverdische escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kazachse tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanse shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizische som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "Kroatische kuna",
+ "symbol": "HRK"
+ },
+ "LAK": {
+ "name": "Laotiaanse kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothaanse loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanees pond",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanse dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libische dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litouwse litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macause pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonische denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagassische ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawische kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivische rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisische ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkaanse dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaanse ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanse roepie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexicaanse peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldavische leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolse tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikaanse metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarese kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibische dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlands-Antilliaanse gulden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanse córdoba",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Nieuw-Zeelandse dollar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Nieuwe Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "Nigeriaanse naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Noord-Koreaanse won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noorse kroon",
+ "symbol": "NOK"
+ },
+ "UGX": {
+ "name": "Oegandese shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Oekraïense hryvnia",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbeekse sum",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanse rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Oost-Caribische dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistaanse roepie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papoea-Nieuw-Guinese kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayaanse guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanse nieuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poolse zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarese rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Roemeense leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russische roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon-dollar",
+ "symbol": "SI$"
+ },
+ "SVC": {
+ "name": "Salvadoraanse colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoaanse tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santomese dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabische riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Servische dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelse roepie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleoonse leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporese dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint-Heleens pond",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Soedanees pond",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somalische shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanse roepie",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "Surinaamse dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazische lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisch pond",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadzjiekse somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniaanse shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanse paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjechische kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesische dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lira",
+ "symbol": "TRY"
+ },
+ "UYU": {
+ "name": "Uruguayaanse peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuaanse vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolaanse bolivar",
+ "symbol": "VEF"
+ },
+ "AED": {
+ "name": "Verenigde Arabische Emiraten-dirham",
+ "symbol": "AED"
+ },
+ "VND": {
+ "name": "Vietnamese dong",
+ "symbol": "₫"
+ },
+ "BYR": {
+ "name": "Wit-Russische roebel",
+ "symbol": "BYR"
+ },
+ "ZMW": {
+ "name": "Zambiaanse kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwaanse dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "ZAR": {
+ "name": "Zuid-Afrikaanse rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Zuid-Koreaanse won",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Zuid-Soedanees pond",
+ "symbol": "SSP"
+ },
+ "SEK": {
+ "name": "Zweedse kroon",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Zwitserse frank",
+ "symbol": "CHF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nmg.json b/library/intl/resources/currency/nmg.json
new file mode 100644
index 000000000..06722f742
--- /dev/null
+++ b/library/intl/resources/currency/nmg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dɔ́llɔ Amɛŕka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dɔ́llɔ Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dɔ́llɔ Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dɔ́llɔ Namibia",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dɔ́llɔ Ɔstralia",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "CDF": {
+ "name": "Fraŋ bó Kongolɛ̌",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Fraŋ bó Kɔmɔr",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "Fraŋ Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Fraŋ CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fraŋ CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Fraŋ Jibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Fraŋ Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fraŋ Suisse",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "ZAR": {
+ "name": "Mɔn Afrik yí sí",
+ "symbol": "ZAR"
+ },
+ "EGP": {
+ "name": "Mɔn Ägyptɛn",
+ "symbol": "EGP"
+ },
+ "DZD": {
+ "name": "Mɔn Algeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Mɔn Angola",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Mɔn B ´Arabe",
+ "symbol": "AED"
+ },
+ "BHD": {
+ "name": "Mɔn Bahrein",
+ "symbol": "BHD"
+ },
+ "CNY": {
+ "name": "Mɔn bó Chinois",
+ "symbol": "CN¥"
+ },
+ "BWP": {
+ "name": "Mɔn Botswana",
+ "symbol": "BWP"
+ },
+ "ERN": {
+ "name": "Mɔn Erytré",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Mɔn Ethiopia",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Mɔn Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Mɔn India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Mɔn Japɔn",
+ "symbol": "JP¥"
+ },
+ "CVE": {
+ "name": "Mɔn Kapvɛrt",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Mɔn Kɛnya",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "Mɔn Leɔne",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Mɔn Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Mɔn Libya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Mɔn Ligangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "Mɔn má Saint Lina",
+ "symbol": "SHP"
+ },
+ "MGA": {
+ "name": "Mɔn Madagaskar",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Mɔn Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "Mɔn Marɔk",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mɔn Moriss",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔn Moritania",
+ "symbol": "MRO"
+ },
+ "GBP": {
+ "name": "Mɔn Ngɛ̄lɛ̄n",
+ "symbol": "£"
+ },
+ "STD": {
+ "name": "Mɔn Sao tomé na prinship",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Mɔn Saudi Arabia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Mɔn Seychɛlle",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Mɔn Somalía",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Mɔn Sudan",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Mɔn Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Mɔn Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Mɔn Uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "Mɔn Zambia",
+ "symbol": "ZMW"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naïra Nigeria",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nn.json b/library/intl/resources/currency/nn.json
new file mode 100644
index 000000000..cc9301092
--- /dev/null
+++ b/library/intl/resources/currency/nn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algerisk dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "amerikansk dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angolsk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armensk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubisk gylden",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "aserbajdsjansk manat",
+ "symbol": "AZN"
+ },
+ "XCD": {
+ "name": "austkaribisk dollar",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "australsk dollar",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "bahamisk dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadisk dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizisk dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudisk dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutansk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinsk mark (konvertibel)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasiliansk real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britisk pund sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarsk ny lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundisk franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "caymansk dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombiansk peso",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costaricansk colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "DKK": {
+ "name": "dansk krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikansk peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "egyptisk pund",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreisk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-pund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fijiansk dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinsk peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanesisk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarsk pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indisk rupi",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indonesisk rupi",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraksk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandsk krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelsk ny shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaikansk dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japansk yen",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "jemenittisk rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordansk dinar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodsjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadisk dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kappverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakhstansk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesisk yuan renminbi",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "kirgisisk som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesisk franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubansk peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "BYR": {
+ "name": "kviterussisk rubel",
+ "symbol": "BYR"
+ },
+ "LAK": {
+ "name": "laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesisk pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberisk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauisk lita",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagassisk ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaosk pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonsk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritansk ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritansk rupi",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "meksikansk peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldovsk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolsk tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikisk metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarsk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nederlansk antillegylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalsk rupi",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "new zealandsk dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "nicaraguansk cordoba oro",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norsk krone",
+ "symbol": "kr"
+ },
+ "OMR": {
+ "name": "omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistansk rupi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayansk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polsk zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarsk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumensk leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "russisk rubel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandisk franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salomonsk dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoransk colon",
+ "symbol": "SVC"
+ },
+ "SHP": {
+ "name": "sankthelensk pund",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Sao Tome og Principe-dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiarabisk rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychellisk rupi",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporsk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankisk rupi",
+ "symbol": "LKR"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "sudansk pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamsk dollar",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "sveitsisk franc",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svensk krone",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "swazilandsk lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syrisk pund",
+ "symbol": "SYP"
+ },
+ "ZAR": {
+ "name": "sørafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sørkoreansk won",
+ "symbol": "₩"
+ },
+ "TJS": {
+ "name": "tadsjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "taiwansk ny dollar",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "tanzaniansk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailandsk baht",
+ "symbol": "THB"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadisk dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "tsjekkisk koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tunisisk dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "tyrkisk lire",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainsk hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungarsk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelansk bolivar",
+ "symbol": "VEF"
+ },
+ "WST": {
+ "name": "vestsamoisk tala",
+ "symbol": "WST"
+ },
+ "VND": {
+ "name": "vietnamesisk dong",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nus.json b/library/intl/resources/currency/nus.json
new file mode 100644
index 000000000..d7e43ee93
--- /dev/null
+++ b/library/intl/resources/currency/nus.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nyn.json b/library/intl/resources/currency/nyn.json
new file mode 100644
index 000000000..38f4d562b
--- /dev/null
+++ b/library/intl/resources/currency/nyn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari ya Maragariita",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr ya Ethiopiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Arigyeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham za Buharabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirram ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Purinsipo",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doora ya America",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doora ya Austureeriya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doora ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doora ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doora ya Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "SOS": {
+ "name": "Eshiringi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Eshiringi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Eshiringi ya Uganda",
+ "symbol": "USh"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faranga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faranga ya Gyibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwaca ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angora",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Naigyeriya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritireya",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougwiya ya Mouriteeniya",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Paundi ya Bungyereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paundi ya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi ya Senti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Sausi Afirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riya ya Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiiha ya Mauritiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiiha ya Sherisheri",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya India",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shiringi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japaani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/or.json b/library/intl/resources/currency/or.json
new file mode 100644
index 000000000..3366914d6
--- /dev/null
+++ b/library/intl/resources/currency/or.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "INR": {
+ "name": "ଟଙକା",
+ "symbol": "₹"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pa.json b/library/intl/resources/currency/pa.json
new file mode 100644
index 000000000..9c0bf94be
--- /dev/null
+++ b/library/intl/resources/currency/pa.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "UZS": {
+ "name": "ਉਜ਼ਬੇਕਿਸਤਾਨ ਸੋਮ",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੋਨ",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ਉਰੂਗੁਵਾਇਨ ਪੇਸੋ",
+ "symbol": "UYU"
+ },
+ "OMR": {
+ "name": "ਓਮਾਨੀ ਰਿਆਲ",
+ "symbol": "OMR"
+ },
+ "AOA": {
+ "name": "ਅੰਗੋਲਾ ਕਵਾਂਜਾ",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨ ਮਾਨਤ",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "ਅਫ਼ਗਾਨ ਅਫ਼ਗਾਨੀ",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "ਅਰਜਨਟੀਨੀ ਪੇਸੋ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ਅਰਮੀਨੀਆਈ ਦਰਮ",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "ਅਰੂਬਨ ਫਲੋਰਿਨ",
+ "symbol": "AWG"
+ },
+ "DZD": {
+ "name": "ਅਲਜੀਰਿਆਈ ਦਿਨਾਰ",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ਅਲਬਾਨੀਆਈ ਲੇਕ",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ",
+ "symbol": "ISK"
+ },
+ "AUD": {
+ "name": "ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ",
+ "symbol": "A$"
+ },
+ "ILS": {
+ "name": "ਇਜ਼ਰਾਈਲੀ ਨਵੀਂ ਸ਼ੇਕੇਲ",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੁਪਿਆਹ",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ਇਥੋਪੀਆਈ ਬਿਰ",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ਇਰਾਕੀ ਦਿਨਾਰ",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "ਇਰੀਟ੍ਰਿਆਈ ਨਾਫ਼ਾ",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "ਈਰਾਨੀ ਰਿਆਲ",
+ "symbol": "IRR"
+ },
+ "AED": {
+ "name": "ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ ਦਿਰਹਾਮ",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "ਸਰਬੀਆਈ ਦਿਨਾਰ",
+ "symbol": "RSD"
+ },
+ "SZL": {
+ "name": "ਸਵਾਜ਼ੀ ਲਾਇਲੈਂਗਨੀ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ਸਵਿਸ ਫ੍ਰੈਂਕ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ਸਵੀਡਿਸ਼ ਕਰੋਨਾ",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ਸ੍ਰੀਲੰਕਾਈ ਰੁਪਇਆ",
+ "symbol": "LKR"
+ },
+ "STD": {
+ "name": "ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "ਸਾਊਦੀ ਰਿਆਲ",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "ਸਾਮੋਆਈ ਤਾਲਾ",
+ "symbol": "WST"
+ },
+ "SLL": {
+ "name": "ਸਿਏਰਾ ਲਿਓਨੀਅਨ ਲਿਓਨ",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "ਸਿੰਗਾਪੁਰ ਡਾਲਰ",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "ਸੀਰੀਆਈ ਪੌਂਡ",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ਸੂਡਾਨੀ ਪੌਂਡ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ਸੂਰੀਨਾਮੀ ਡਾਲਰ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ਸੇਸ਼ਲਸ ਰੁਪਇਆ",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "ਸੇਂਟ ਹੇਲੇਨਾ ਪੌਂਡ",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ਸੋਮਾਲੀ ਸ਼ਿਲਿੰਗ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਡਾਲਰ",
+ "symbol": "SBD"
+ },
+ "HUF": {
+ "name": "ਹੰਗਰੀ ਫੋਰਿੰਟ",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "ਹਾਂਗ ਕਾਂਗ ਡਾਲਰ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ਹਾਨਡੂਰਨ ਲੇਮਪਿਰਾ",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "ਹੈਤੀ ਗੌਰਡੇ",
+ "symbol": "HTG"
+ },
+ "KZT": {
+ "name": "ਕਜ਼ਾਖਸਤਾਨੀ ਤੇਂਗੇ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "ਕਤਰੀ ਰਿਆਲ",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "ਕੰਬੋਡੀਆਈ ਰੀਅਲ",
+ "symbol": "KHR"
+ },
+ "HRK": {
+ "name": "ਕਰੋਏਸ਼ੀਆਈ ਕੁਨਾ",
+ "symbol": "HRK"
+ },
+ "CDF": {
+ "name": "ਕਾਂਗੋਲੀਜ਼ ਫ੍ਰੈਂਕ",
+ "symbol": "CDF"
+ },
+ "CUP": {
+ "name": "ਕਿਊਬਨ ਪੇਸੋ",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "ਕਿਊਬਨ ਬਦਲਣਯੋਗ ਪੇਸੋ",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "ਕਿਰਗਿਸਤਾਨੀ ਸੋਮ",
+ "symbol": "KGS"
+ },
+ "KES": {
+ "name": "ਕੀਨੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "ਕੁਵੈਤੀ ਦਿਨਾਰ",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ਕੇਨੇਡਿਆਈ ਡਾਲਰ",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "ਕੇਪ ਵਰਡੀਅਨ ਸਕੂਡੋ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "ਕੇਮੈਨ ਆਈਲੈਂਡਸ ਡਾਲਰ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ਕੋਸਟਾ ਰੀਕਨ ਕੋਲਨ",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ਕੋਮੋਰੀਅਨ ਫ੍ਰੈਂਕ",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ਕੋਲੰਬਿਆਈ ਪੇਸੋ",
+ "symbol": "COP"
+ },
+ "GNF": {
+ "name": "ਗਿਨੀ ਫ੍ਰੈਂਕ",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ਗੁਆਟੇਮਾਲਾ ਕੁਏਟਜ਼ਲ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "ਗੁਆਨਾਆਈ ਡਾਲਰ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ਗੈਂਬੀਆਈ ਦਲਾਸੀ",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ਘਾਨਾਈ ਸੇਡੀ",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ਚਿਲੀ ਪੇਸੋ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ਚੀਨੀ ਯੁਆਨ",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "ਚੈਕ ਗਣਰਾਜ ਕੋਰੁਨਾ",
+ "symbol": "CZK"
+ },
+ "JPY": {
+ "name": "ਜਪਾਨੀ ਯੇਨ",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "ਜਮਾਇਕਨ ਡਾਲਰ",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "ਜ਼ਾਮਬੀਆਈ ਕਵਾਚਾ",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "ਜਾਰਜੀਆਈ ਲਾਰੀ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ਜਾਰਡਨ ਦਿਨਾਰ",
+ "symbol": "JOD"
+ },
+ "GIP": {
+ "name": "ਜਿਬਰਾਲਟਰ ਪੌਂਡ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "ਜ਼ੀਬੂਤੀਅਨ ਫ੍ਰੈਂਕ",
+ "symbol": "DJF"
+ },
+ "TTD": {
+ "name": "ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ ਡਾਲਰ",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ਟਿਉਨੀਸ਼ੀਆਈ ਦਿਨਾਰ",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ਟੌਂਗਨ ਪੈਂਗਾ",
+ "symbol": "TOP"
+ },
+ "DKK": {
+ "name": "ਡੈਨਿਸ਼ ਕਰੌਨ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ਡੌਮਿਨਿਕਨ ਪੇਸੋ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "ਤਨਜ਼ਾਨੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਾਨਤ",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ਤੁਰਕੀ ਲੀਰਾ",
+ "symbol": "TRY"
+ },
+ "THB": {
+ "name": "ਥਾਈ ਬਾਹਤ",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "ਦੱਖਣੀ ਅਫਰੀਕੀ ਰੈਂਡ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "ਦੱਖਣੀ ਸੂਡਾਨੀ ਪੌਂਡ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੋਨ",
+ "symbol": "₩"
+ },
+ "TWD": {
+ "name": "ਨਵਾਂ ਤਾਇਵਾਨ ਡਾਲਰ",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "ਨਾਇਜੀਰੀਆਈ ਨਾਇਰਾ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ਨਾਮੀਬੀਆਈ ਡਾਲਰ",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "ਨਾਰਵੇਜੀਆਈ ਕਰੌਨ",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "ਨਿਊਜ਼ੀਲੈਂਡ ਡਾਲਰ",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਡੋਬਾ",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "ਨੀਦਰਲੈਂਡਸ ਐਂਟੀਲੀਅਨ ਗਿਲਡਰ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ਨੇਪਾਲੀ ਰੁਪਇਆ",
+ "symbol": "NPR"
+ },
+ "PAB": {
+ "name": "ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "ਪਾਕਿਸਤਾਨੀ ਰੁਪਇਆ",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕੀਨਾ",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "ਪੂਰਬੀ ਕੈਰੇਬੀਅਨ ਡਾਲਰ",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "ਪੇਰੂਵੀਅਨ ਨਿਊਵੋ ਸੋਲ",
+ "symbol": "PEN"
+ },
+ "PYG": {
+ "name": "ਪੈਰਾਗੁਵਾਇਨ ਗੁਆਰਾਨੀ",
+ "symbol": "PYG"
+ },
+ "PLN": {
+ "name": "ਪੋਲੈਂਡੀ ਜ਼ਲੌਟੀ",
+ "symbol": "PLN"
+ },
+ "XOF": {
+ "name": "ਫ੍ਰੈਂਕ (CFA BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ਫ੍ਰੈਂਕ (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ਫ੍ਰੈਂਕ (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਪੌਂਡ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ਫ਼ਿਜ਼ੀ ਡਾਲਰ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ਫਿਲਿਪੀਨੀ ਪੇਸੋ",
+ "symbol": "PHP"
+ },
+ "BHD": {
+ "name": "ਬਹਿਰੀਨੀ ਦਿਨਾਰ",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "ਬਰਮੂਡਾ ਡਾਲਰ",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "ਬਰੂਨੇਈ ਡਾਲਰ",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "ਬ੍ਰਾਜ਼ੀਲੀਆਈ ਰੀਅਲ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ਬ੍ਰਿਟਿਸ਼ ਪੌਂਡ ਸਟਰਲਿੰਗ",
+ "symbol": "£"
+ },
+ "BSD": {
+ "name": "ਬਾਹਾਮੀਅਨ ਡਾਲਰ",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "ਬਾਰਬਾਡੀਅਨ ਡਾਲਰ",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "ਬੁਰੁੰਡੀਆਈ ਫ੍ਰੈਂਕ",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "ਬੁਲਗਾਰੀਆਈ ਲੇਵ",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "ਬੇਲਾਰੂਸੀ ਰੂਬਲ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ਬੇਲੀਜ਼ ਡਾਲਰ",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "ਬੋਸਨੀਆ-ਹਰਜ਼ੇਗੋਵੀਨਾ ਬਦਲਣਯੋਗ ਮਾਰਕ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ਬੋਟਸਵਾਨਾ ਪੁਲਾ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ਬੋਲੀਵੀਅਨ ਬੋਲੀਵੀਅਨੋ",
+ "symbol": "BOB"
+ },
+ "INR": {
+ "name": "ਭਾਰਤੀ ਰੁਪਇਆ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ਭੂਟਾਨੀ ਐਂਗਲਟ੍ਰਮ",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "ਮੰਗੋਲੀਆਈ ਤੁਗਰਿਕ",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "ਮਲੇਸ਼ੀਆਈ ਰਿੰਗਿਟ",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "ਮਾਲਦੀਵੀ ਰੁਫੀਆ",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "ਮਾਲਾਗਾਸੀ ਅਰਾਇਰੀ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ਮਾਲਾਵੀਆਈ ਕਵਾਚਾ",
+ "symbol": "MWK"
+ },
+ "MMK": {
+ "name": "ਮਿਆਂਮਾਰ ਕਿਆਤ",
+ "symbol": "MMK"
+ },
+ "EGP": {
+ "name": "ਮਿਸਰੀ ਪੌਂਡ",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "ਮੇਕਾਨੀ ਪਟਾਕਾ",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "ਮੈਕਸੀਕਨ ਪੇਸੋ",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "ਮੈਕਡੋਨੀਆਈ ਡੇਨਾਰ",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ਮੋਜ਼ਾਮਬੀਕਨ ਮੈਟੀਕਲ",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "ਮੋਰੱਕਨ ਦਿਰਹਾਮ",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "ਮੋਰਿਟਾਨੀਆਈ ਊਗੀਆ",
+ "symbol": "MRO"
+ },
+ "MDL": {
+ "name": "ਮੋਲਡੋਵਨ ਲੇਉ",
+ "symbol": "MDL"
+ },
+ "MUR": {
+ "name": "ਮੌਰਿਸ਼ੀਆਈ ਰੁਪਇਆ",
+ "symbol": "MUR"
+ },
+ "YER": {
+ "name": "ਯਮਨੀ ਰਿਆਲ",
+ "symbol": "YER"
+ },
+ "USD": {
+ "name": "ਯੂ.ਐਸ. ਡਾਲਰ",
+ "symbol": "US$"
+ },
+ "UAH": {
+ "name": "ਯੂਕਰੇਨੀਆਈ ਰਿਵਨਿਆ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ਯੂਗਾਂਡੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "ਯੂਰੋ",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "ਰਵਾਂਡਨ ਫ੍ਰੈਂਕ",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ਰੂਸੀ ਰੂਬਲ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ਰੋਮਾਨੀਆਈ ਲੇਉ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "ਲਾਓਟਿਆਈ ਕਿਪ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "ਲਾਈਬੀਰੀਆਈ ਡਾਲਰ",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "ਲਿਥੁਆਨੀਆਈ ਲਿਤਾਸ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ਲੀਬੀਅਨ ਦਿਨਾਰ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ਲੈਬਨਾਨੀ ਪੌਂਡ",
+ "symbol": "LBP"
+ },
+ "VUV": {
+ "name": "ਵਾਨੂਆਟੂ ਵਾਟੂ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ਵੀਅਤਨਾਮੀ ਡੋਂਗ",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "ਵੇਨੇਜ਼ੂਏਲਨ ਬੋਲੀਵਰ",
+ "symbol": "VEF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pl.json b/library/intl/resources/currency/pl.json
new file mode 100644
index 000000000..a83973d7a
--- /dev/null
+++ b/library/intl/resources/currency/pl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaski",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tajski",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panamski",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopski",
+ "symbol": "ETB"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "VEF": {
+ "name": "boliwar wenezuelski",
+ "symbol": "VEF"
+ },
+ "GHS": {
+ "name": "cedi ghański",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colon kostarykański",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colon salwadorski",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba nikaraguańska",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi gambijskie",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macedoński",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algierski",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahrański",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iracki",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordański",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwejcki",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libijski",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbski",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunezyjski",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham arabski",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marokański",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra Wysp Świętego Tomasza i Książęcej",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar amerykański",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "dolar australijski",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dolar bahamski",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dolar Barbadosu",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dolar belizeński",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dolar bermudzki",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dolar brunejski",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dolar fidżi",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dolar gujański",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dolar hongkoński",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dolar jamajski",
+ "symbol": "JMD"
+ },
+ "KYD": {
+ "name": "dolar kajmański",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "dolar kanadyjski",
+ "symbol": "CAD"
+ },
+ "LRD": {
+ "name": "dolar liberyjski",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibijski",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dolar nowozelandzki",
+ "symbol": "NZD"
+ },
+ "SGD": {
+ "name": "dolar singapurski",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dolar surinamski",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dolar Trynidadu i Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dolar wschodniokaraibski",
+ "symbol": "EC$"
+ },
+ "SBD": {
+ "name": "dolar Wysp Salomona",
+ "symbol": "SBD"
+ },
+ "ZWL": {
+ "name": "dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong wietnamski",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armeński",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo zielonoprzylądkowe",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florin arubański",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint węgierski",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "frank burundyjski",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "frank CFA",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "frank CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "frank CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "frank dżibutyjski",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "frank gwinejski",
+ "symbol": "GNF"
+ },
+ "KMF": {
+ "name": "frank komoryjski",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "frank kongijski",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "frank ruandyjski",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "frank szwajcarski",
+ "symbol": "CHF"
+ },
+ "EGP": {
+ "name": "funt egipski",
+ "symbol": "EGP"
+ },
+ "FKP": {
+ "name": "funt falklandzki",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "funt gibraltarski",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "funt libański",
+ "symbol": "LBP"
+ },
+ "SSP": {
+ "name": "funt południowosudański",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "funt sudański",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "funt syryjski",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "funt szterling",
+ "symbol": "GBP"
+ },
+ "SHP": {
+ "name": "funt Wyspy Świętej Heleny",
+ "symbol": "SHP"
+ },
+ "HTG": {
+ "name": "gourde haitańskie",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paragwajskie",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "gulden antylski",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "hrywna ukraińska",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "jen japoński",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "juan chiński",
+ "symbol": "CNY"
+ },
+ "MMK": {
+ "name": "kiat birmański",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina Papua Nowa Gwinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laotański",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "korona czeska",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "korona duńska",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "korona islandzka",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "korona norweska",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "korona szwedzka",
+ "symbol": "SEK"
+ },
+ "HRK": {
+ "name": "kuna chorwacka",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawska",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambijska",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolańska",
+ "symbol": "AOA"
+ },
+ "GEL": {
+ "name": "lari gruzińskie",
+ "symbol": "GEL"
+ },
+ "MDL": {
+ "name": "lej mołdawski",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "lej rumuński",
+ "symbol": "RON"
+ },
+ "ALL": {
+ "name": "lek albański",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira honduraska",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierraleoński",
+ "symbol": "SLL"
+ },
+ "BGN": {
+ "name": "lew bułgarski",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni Suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turecka",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "lit litewski",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerski",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmeński",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marka zamienna Bośni i Hercegowiny",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicki",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeryjska",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa erytrejska",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum bhutański",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nowy dolar tajwański",
+ "symbol": "TWD"
+ },
+ "PEN": {
+ "name": "nowy sol peruwiański",
+ "symbol": "PEN"
+ },
+ "ILS": {
+ "name": "nowy szekel izraelski",
+ "symbol": "ILS"
+ },
+ "MRO": {
+ "name": "ouguiya mauretańska",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongijska",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca Makau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentyńskie",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilijskie",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "peso dominikańskie",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipińskie",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "peso kolumbijskie",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso kubańskie",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso kubańskie wymienialne",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "peso meksykańskie",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso urugwajskie",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botswańska",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal gwatemalski",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand południowoafrykański",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brazylijski",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial irański",
+ "symbol": "IRR"
+ },
+ "YER": {
+ "name": "rial jemeński",
+ "symbol": "YER"
+ },
+ "QAR": {
+ "name": "rial katarski",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "rial omański",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudyjski",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "riel kambodżański",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malezyjski",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rubel białoruski",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubel rosyjski",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "rupia indonezyjska",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "rupia indyjska",
+ "symbol": "INR"
+ },
+ "LKR": {
+ "name": "rupia lankijska",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rupia malediwska",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "rupia maurytyjska",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalska",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistańska",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seszelska",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som kirgiski",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbecki",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tadżyckie",
+ "symbol": "TJS"
+ },
+ "KES": {
+ "name": "szyling kenijski",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "szyling somalijski",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "szyling tanzański",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "szyling ugandyjski",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "taka bengalska",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoańska",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazachskie",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongolski",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "won południowokoreański",
+ "symbol": "KRW"
+ },
+ "KPW": {
+ "name": "won północnokoreański",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "złoty polski",
+ "symbol": "zł"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ps.json b/library/intl/resources/currency/ps.json
new file mode 100644
index 000000000..7b16abf01
--- /dev/null
+++ b/library/intl/resources/currency/ps.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "افغانۍ",
+ "symbol": "؋"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-AO.json b/library/intl/resources/currency/pt-AO.json
new file mode 100644
index 000000000..844336fb4
--- /dev/null
+++ b/library/intl/resources/currency/pt-AO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "Kz"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-CV.json b/library/intl/resources/currency/pt-CV.json
new file mode 100644
index 000000000..b9dd815a0
--- /dev/null
+++ b/library/intl/resources/currency/pt-CV.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "​"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-GW.json b/library/intl/resources/currency/pt-GW.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-GW.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-MO.json b/library/intl/resources/currency/pt-MO.json
new file mode 100644
index 000000000..0847a2776
--- /dev/null
+++ b/library/intl/resources/currency/pt-MO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP$"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-MZ.json b/library/intl/resources/currency/pt-MZ.json
new file mode 100644
index 000000000..ddc75ff04
--- /dev/null
+++ b/library/intl/resources/currency/pt-MZ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MTn"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-PT.json b/library/intl/resources/currency/pt-PT.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-PT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-ST.json b/library/intl/resources/currency/pt-ST.json
new file mode 100644
index 000000000..b43b0f85a
--- /dev/null
+++ b/library/intl/resources/currency/pt-ST.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "Db"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-TL.json b/library/intl/resources/currency/pt-TL.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-TL.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt.json b/library/intl/resources/currency/pt.json
new file mode 100644
index 000000000..a884a1b21
--- /dev/null
+++ b/library/intl/resources/currency/pt.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegane afegão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht tailandês",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa panamenha",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ganês",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colón costarriquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba nicaraguense",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "Coroa tcheca",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar bareinita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedônio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisiano",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirrã dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirrã marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dólar americano",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Dólar bahamense",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizenho",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadense",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caiman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "TTD": {
+ "name": "Dólar de Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "Dólar do Caribe Oriental",
+ "symbol": "EC$"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "FJD": {
+ "name": "Dólar fijiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dólar guianense",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dólar namibiano",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dólar singapuriano",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dólar surinamês",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram armênio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florim arubano",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA de BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA de BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franco djibutiense",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia ucraniano",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "PGK": {
+ "name": "Kina papuásia",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha malawiana",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat mianmarense",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira hondurenha",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldávio",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "Libra malvinense",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat azeri",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat turcomeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegovino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical moçambicano",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum butanês",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya mauritana",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga tonganesa",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca macaense",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsuanesa",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal guatemalense",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "QAR": {
+ "name": "Rial catariano",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial omanense",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal saudita",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "LKR": {
+ "name": "Rupia ceilandesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "Rupia maldiva",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som quirguiz",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som uzbeque",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni tadjique",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka bengalesa",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge cazaque",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu vanuatuense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "₩"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somaliano",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "Zloti polonês",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rm.json b/library/intl/resources/currency/rm.json
new file mode 100644
index 000000000..8efa15337
--- /dev/null
+++ b/library/intl/resources/currency/rm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary madagasc",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandais",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa dal Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopic",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar venezuelan",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanais",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "colon da l’El Salvador",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "colon da la Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "cordoba oro nicaraguan",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "cruna danaisa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "cruna islandaisa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "cruna norvegiaisa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "cruna svedaisa",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "cruna tscheca",
+ "symbol": "CZK"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "dalasi gambic",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar algerian",
+ "symbol": "DZD"
+ },
+ "MKD": {
+ "name": "dinar da la Macedonia",
+ "symbol": "MKD"
+ },
+ "BHD": {
+ "name": "dinar dal Bahrain",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "dinar dal Kuwait",
+ "symbol": "KWD"
+ },
+ "IQD": {
+ "name": "dinar iracais",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanic",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "dinar libic",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serb",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunesian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham dals Emirats Arabs Unids",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocan",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra da São Tomé e Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dollar canadais",
+ "symbol": "CA$"
+ },
+ "BBD": {
+ "name": "dollar da Barbados",
+ "symbol": "BBD"
+ },
+ "HKD": {
+ "name": "dollar da Hongkong",
+ "symbol": "HK$"
+ },
+ "XCD": {
+ "name": "dollar da la Caribica Orientala",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "dollar da la Guyana",
+ "symbol": "GYD"
+ },
+ "NZD": {
+ "name": "dollar da la Nova Zelanda",
+ "symbol": "NZ$"
+ },
+ "BSD": {
+ "name": "dollar da las Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "dollar da las Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dollar da las Inslas Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar da las Salomonas",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dollar da Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "BZD": {
+ "name": "dollar dal Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dollar dal Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dollar dal Fidschi",
+ "symbol": "FJD"
+ },
+ "SGD": {
+ "name": "dollar dal Singapur",
+ "symbol": "SGD"
+ },
+ "USD": {
+ "name": "dollar dals Stadis Unids da l’America",
+ "symbol": "$"
+ },
+ "JMD": {
+ "name": "dollar giamaican",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar liberian",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibian",
+ "symbol": "NAD"
+ },
+ "SRD": {
+ "name": "dollar surinam",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "dong vietnamais",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "dram armen",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo dal Cap Verd",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "flurin da l’Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "flurin da las Antillas Olandaisas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forint ungarais",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franc comorian",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franc da la Guinea",
+ "symbol": "GNF"
+ },
+ "BIF": {
+ "name": "franc dal Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "franc dal Dschibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "franc ruandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc svizzer",
+ "symbol": "CHF"
+ },
+ "GIP": {
+ "name": "glivra da Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "glivra da Sontg’Elena",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "glivra dal Falkland",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "glivra egipziana",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "glivra libanaisa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "glivra siriana",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "glivra sterlina",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "glivra sudanaisa",
+ "symbol": "SDG"
+ },
+ "HTG": {
+ "name": "gourde haitian",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paraguaian",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ucranais",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina da la Papua Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laot",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "ZMW": {
+ "name": "kwacha da la sambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "kwacha dal Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza angolan",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat dal Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgian",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurian",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone da la Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldav",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumen",
+ "symbol": "RON"
+ },
+ "SZL": {
+ "name": "lilangeni dal Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituan",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti dal Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat aserbaidschanic",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "marc convertibel bosniac",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical dal mozambican",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreic",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nov dollar taiwanais",
+ "symbol": "NT$"
+ },
+ "BGN": {
+ "name": "nov lev bulgar",
+ "symbol": "BGN"
+ },
+ "PEN": {
+ "name": "nov sol peruan",
+ "symbol": "PEN"
+ },
+ "TRY": {
+ "name": "nova lira tirca",
+ "symbol": "TRY"
+ },
+ "MRO": {
+ "name": "ouguiya da la Mauretania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga da Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca dal Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilen",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso columbian",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cuban",
+ "symbol": "CUP"
+ },
+ "UYU": {
+ "name": "peso da l’Uruguay",
+ "symbol": "UYU"
+ },
+ "DOP": {
+ "name": "peso dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filippin",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexican",
+ "symbol": "MX$"
+ },
+ "BWP": {
+ "name": "pula da la Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal da la Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sidafrican",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilian",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "rial da l’Oman",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "rial dal Jemen",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "rial iranais",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "riel cambodschan",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit da la Malaisia",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal da Katar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "riyal saudit",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rubel bieloruss",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubel russ (nov)",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa da las Maledivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia da la Sri Lanka",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "rupia da las Seychellas",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "rupia dal Mauritius",
+ "symbol": "MUR"
+ },
+ "INR": {
+ "name": "rupia indica",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "rupia indonaisa",
+ "symbol": "IDR"
+ },
+ "NPR": {
+ "name": "rupia nepalaisa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistana",
+ "symbol": "PKR"
+ },
+ "KES": {
+ "name": "schilling kenian",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "schilling somalian",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "schilling tansanian",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "schilling ugandais",
+ "symbol": "UGX"
+ },
+ "ILS": {
+ "name": "sheqel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "som kirghis",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni dal Tadschikistan",
+ "symbol": "TJS"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "sum usbec",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladais",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala da la Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge casac",
+ "symbol": "KZT"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "MNT": {
+ "name": "tugrik mongolic",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu dal Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won da la Corea dal Nord",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won da la Corea dal Sid",
+ "symbol": "₩"
+ },
+ "JPY": {
+ "name": "yen giapunais",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinais",
+ "symbol": "CN¥"
+ },
+ "PLN": {
+ "name": "zloty polac",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rn.json b/library/intl/resources/currency/rn.json
new file mode 100644
index 000000000..907437e53
--- /dev/null
+++ b/library/intl/resources/currency/rn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ETB": {
+ "name": "Ibiri ryo muri Etiyopiya",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Idalasi ryo muri Gambiya",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "Idinari ry’iribahireyini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Idinari rya Libiya",
+ "symbol": "LYD"
+ },
+ "DZD": {
+ "name": "Idinari ryo muri Alijeriya",
+ "symbol": "DZD"
+ },
+ "TND": {
+ "name": "Idinari ryo muri Tuniziya",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Idiramu ryo muri Leta Zunze Ubumwe z’Abarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Idiramu ryo muri Maroke",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Idobura ryo muri Sawotome na Perensipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Idolari ry’abanyamerika",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Idolari rya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Idolari rya Liberiya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Idolari rya Namibiya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Idolari ryo muri Ositaraliya",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "RWF": {
+ "name": "Ifaranga ry’u Rwanda",
+ "symbol": "RWF"
+ },
+ "BIF": {
+ "name": "Ifaranga ry’Uburundi",
+ "symbol": "FBu"
+ },
+ "CHF": {
+ "name": "Ifaranga ry’Ubusuwisi",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Ifaranga rya Komore",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ifaranga rya Kongo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Ifaranga ryo muri Jibuti",
+ "symbol": "DJF"
+ },
+ "MWK": {
+ "name": "Ikwaca ryo muri Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Ikwaca ryo muri Zambiya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Ikwanza ryo muri Angola",
+ "symbol": "AOA"
+ },
+ "SLL": {
+ "name": "Ilewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Ililangeni",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "Iloti ryo muro Lesoto",
+ "symbol": "LSL"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "NGN": {
+ "name": "Inayira ryo muri Nijeriya",
+ "symbol": "NGN"
+ },
+ "EGP": {
+ "name": "Ipawundi rya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Ipawundi rya Sente Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Ipawundi rya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Ipawundi ryo mu Bwongereza",
+ "symbol": "£"
+ },
+ "BWP": {
+ "name": "Ipula ryo muri Botswana",
+ "symbol": "BWP"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ZAR": {
+ "name": "Irandi ryo muri Afurika y’Epfo",
+ "symbol": "ZAR"
+ },
+ "CVE": {
+ "name": "Irikaboveridiyano ryo muri Esikudo",
+ "symbol": "CVE"
+ },
+ "ERN": {
+ "name": "Irinakufa ryo muri Eritereya",
+ "symbol": "ERN"
+ },
+ "SAR": {
+ "name": "Iriyari ryo muri Arabiya Sawudite",
+ "symbol": "SAR"
+ },
+ "MGA": {
+ "name": "Iriyari ryo muri Madagasikari",
+ "symbol": "MGA"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "MUR": {
+ "name": "Irupiya ryo mu birwa bya Morise",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Irupiya ryo mu birwa bya Sayisheli",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Irupiya ryo mu Buhindi",
+ "symbol": "₹"
+ },
+ "UGX": {
+ "name": "Ishilingi ry’Ubugande",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Ishilingi rya Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Ishilingi rya Tanzaniya",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "Ishilingi ryo muri Somaliya",
+ "symbol": "SOS"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Iyeni ry’Ubuyapani",
+ "symbol": "JP¥"
+ },
+ "EUR": {
+ "name": "Iyero",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Iyuwani ryo mu Bushinwa",
+ "symbol": "CN¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ryo muri Moritaniya",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ro.json b/library/intl/resources/currency/ro.json
new file mode 100644
index 000000000..e509ea215
--- /dev/null
+++ b/library/intl/resources/currency/ro.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afgan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaș",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thailandez",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panameză",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopian",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar venezuelean",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivian",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanez",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colon costarican",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colon El Salvador",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba nicaraguană",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "coroană cehă",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "coroană daneză",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "coroană islandeză",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "coroană norvegiană",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "coroană suedeză",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi din Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar algerian",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar din Bahrain",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "dinar iordanian",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "dinar irakian",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "dinar kuweitian",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libian",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonean",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar sârbesc",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham din Emiratele Arabe Unite",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocan",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra Sao Tome și Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar american",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "dolar australian",
+ "symbol": "AUD"
+ },
+ "BBD": {
+ "name": "dolar Barbados",
+ "symbol": "BBD"
+ },
+ "CAD": {
+ "name": "dolar canadian",
+ "symbol": "CAD"
+ },
+ "BSD": {
+ "name": "dolar din Bahamas",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "dolar din Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dolar din Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dolar din Brunei",
+ "symbol": "BND"
+ },
+ "XCD": {
+ "name": "dolar din Caraibele de Est",
+ "symbol": "XCD"
+ },
+ "HKD": {
+ "name": "dolar din Hong Kong",
+ "symbol": "HKD"
+ },
+ "KYD": {
+ "name": "dolar din Insulele Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dolar din Insulele Solomon",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dolar din Trinidad-Tobago",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "dolar fijian",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dolar guyanez",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "dolar jamaican",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dolar liberian",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibian",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dolar neozeelandez",
+ "symbol": "NZD"
+ },
+ "TWD": {
+ "name": "dolar nou din Taiwan",
+ "symbol": "TWD"
+ },
+ "SGD": {
+ "name": "dolar Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dolar surinamez",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamez",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armenesc",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo din Capul Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florin aruban",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint maghiar",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundez",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franc comorian",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolez",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutian",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "franc elvețian",
+ "symbol": "CHF"
+ },
+ "GNF": {
+ "name": "franc guineean",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandez",
+ "symbol": "RWF"
+ },
+ "HTG": {
+ "name": "gourde din Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paraguayan",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "gulden din Antilele Olandeze",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "hryvna ucraineană",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina din Papua-Noua Guinee",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laoțian",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croată",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawiană",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambian",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angoleză",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat din Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgian",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "leka albaneză",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira honduriană",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone din Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldovenesc",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu românesc",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva bulgărească",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni din Swaziland",
+ "symbol": "SZL"
+ },
+ "GIP": {
+ "name": "liră din Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "liră din Insulele Falkland",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "liră egipteană",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "liră Insula Sf. Elena",
+ "symbol": "SHP"
+ },
+ "LBP": {
+ "name": "liră libaneză",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "liră siriană",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "liră sterlină",
+ "symbol": "GBP"
+ },
+ "SSP": {
+ "name": "liră sud-sudaneză",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "liră sudaneză",
+ "symbol": "SDG"
+ },
+ "TRY": {
+ "name": "liră turcească",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litu lituanian",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothian",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azer",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmen",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marcă convertibilă din Bosnia și Herțegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambican",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriană",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreeană",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum din Bhutan",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritană",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongană",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca din Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentinian",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilian",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso columbian",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubanez",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubanez convertibil",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipinez",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexican",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayan",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalez",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-african",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brazilian",
+ "symbol": "BRL"
+ },
+ "IRR": {
+ "name": "rial iranian",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanez",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatarian",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "rial saudit",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemenit",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgian",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malaiezian",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublă belarusă",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublă rusească",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa maldiviană",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupie din Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupie din Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupie indiană",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupie indoneziană",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupie mauritiană",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupie nepaleză",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupie pakistaneză",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "sol nou peruvian",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "som kârgâz",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjic",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum Uzbekistan",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "șechel israelian nou",
+ "symbol": "ILS"
+ },
+ "KES": {
+ "name": "șiling kenyan",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "șiling somalez",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "șiling tanzanian",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "șiling ugandez",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "taka din Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoană",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazahă",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu din Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coreean",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coreean",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonez",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan chinezesc",
+ "symbol": "CNY"
+ },
+ "PLN": {
+ "name": "zlot polonez",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rof.json b/library/intl/resources/currency/rof.json
new file mode 100644
index 000000000..154a48d65
--- /dev/null
+++ b/library/intl/resources/currency/rof.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "heleri sa Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "heleri sa Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "heleri sa Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "heleri sa Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "heleri sa Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "heleri sa Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "heleri sa Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "heleri sa Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "heleri sa CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "heleri sa CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "heleri sa China",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "heleri sa Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "heleri sa Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "heleri sa Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "heleri sa India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "heleri sa Japani",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "heleri sa Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "heleri sa Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "heleri sa Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "heleri sa Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "heleri sa Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "heleri sa Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "heleri sa Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "heleri sa Liberia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "heleri sa Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "heleri sa Malawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "heleri sa Marekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "heleri sa Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "heleri sa Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "heleri sa Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "heleri sa Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "heleri sa Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "heleri sa Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "heleri sa Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "heleri sa Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "heleri sa Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "heleri sa Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "heleri sa Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "heleri sa Somalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "heleri sa Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "heleri sa Tanzania",
+ "symbol": "TSh"
+ },
+ "TND": {
+ "name": "heleri sa Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "heleri sa Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "heleri sa Uhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "heleri sa Uingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "heleri sa Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "heleri sa Zambia",
+ "symbol": "ZMW"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ru.json b/library/intl/resources/currency/ru.json
new file mode 100644
index 000000000..71520f89b
--- /dev/null
+++ b/library/intl/resources/currency/ru.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "Австралийский доллар",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Азербайджанский манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албанский лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирский динар",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "Английский фунт стерлингов",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "Ангольская кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Аргентинское песо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Армянский драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Арубанский флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "Афганский афгани",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "Багамский доллар",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Бангладешская така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадосский доллар",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Бахрейнский динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белизский доллар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Белорусский рубль",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "Бермудский доллар",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "Болгарский лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Боливийский боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Ботсванская пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразильский реал",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Брунейский доллар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурундийский франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутанский нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вату Вануату",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "Венгерский форинт",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "Венесуэльский боливар",
+ "symbol": "VEF"
+ },
+ "XCD": {
+ "name": "Восточно-карибский доллар",
+ "symbol": "EC$"
+ },
+ "VND": {
+ "name": "Вьетнамский донг",
+ "symbol": "₫"
+ },
+ "HTG": {
+ "name": "Гаитянский гурд",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Гайанский доллар",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Гамбийский даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ганский седи",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Гватемальский кетсаль",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвинейский франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтарский фунт",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "Гондурасская лемпира",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Гонконгский доллар",
+ "symbol": "HK$"
+ },
+ "GEL": {
+ "name": "Грузинский лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Датская крона",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "Дирхам ОАЭ",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Добра Сант-Томе и Принсипи",
+ "symbol": "STD"
+ },
+ "ZWL": {
+ "name": "Доллар Зимбабве (2009)",
+ "symbol": "ZWL"
+ },
+ "KYD": {
+ "name": "Доллар Каймановых островов",
+ "symbol": "KYD"
+ },
+ "NAD": {
+ "name": "Доллар Намибии",
+ "symbol": "NAD"
+ },
+ "SBD": {
+ "name": "Доллар Соломоновых островов",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "Доллар США",
+ "symbol": "$"
+ },
+ "TTD": {
+ "name": "Доллар Тринидада и Тобаго",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "Доллар Фиджи",
+ "symbol": "FJD"
+ },
+ "DOP": {
+ "name": "Доминиканское песо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египетский фунт",
+ "symbol": "EGP"
+ },
+ "ZMW": {
+ "name": "Замбийская квача",
+ "symbol": "ZMW"
+ },
+ "INR": {
+ "name": "Индийская рупия",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Индонезийская рупия",
+ "symbol": "IDR"
+ },
+ "JOD": {
+ "name": "Иорданский динар",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Иракский динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Иранский риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Исландская крона",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йеменский риал",
+ "symbol": "YER"
+ },
+ "KZT": {
+ "name": "Казахский тенге",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "Камбоджийский риель",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канадский доллар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катарский риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кенийский шиллинг",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Кина Папуа — Новой Гвинеи",
+ "symbol": "PGK"
+ },
+ "KGS": {
+ "name": "Киргизский сом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Китайский юань",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "Колумбийское песо",
+ "symbol": "COP"
+ },
+ "BAM": {
+ "name": "Конвертируемая марка Боснии и Герцеговины",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "Конголезский франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костариканский колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Кубинское конвертируемое песо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Кубинское песо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейтский динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаосский кип",
+ "symbol": "LAK"
+ },
+ "SLL": {
+ "name": "Леоне",
+ "symbol": "SLL"
+ },
+ "LRD": {
+ "name": "Либерийский доллар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Ливанский фунт",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Ливийский динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литовский лит",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Лоти",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "Маврикийская рупия",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Мавританская угия",
+ "symbol": "MRO"
+ },
+ "MKD": {
+ "name": "Македонский динар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малавийская квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагасийский ариари",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "Малайзийский ринггит",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Мальдивская руфия",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокканский дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Мексиканское песо",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "Мозамбикский метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдавский лей",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монгольский тугрик",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "Мьянманский кьят",
+ "symbol": "MMK"
+ },
+ "ERN": {
+ "name": "Накфа",
+ "symbol": "ERN"
+ },
+ "NPR": {
+ "name": "Непальская рупия",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигерийская найра",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "Нидерландский антильский гульден",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Никарагуанская кордоба",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Новозеландский доллар",
+ "symbol": "NZ$"
+ },
+ "ILS": {
+ "name": "Новый израильский шекель",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Новый тайваньский доллар",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "Норвежская крона",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Оманский риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистанская рупия",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамское бальбоа",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Парагвайский гуарани",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "Патака Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "Перуанский новый соль",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Польский злотый",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "Российский рубль",
+ "symbol": "руб."
+ },
+ "RON": {
+ "name": "Румынский лей",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "Сальвадорский колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанская тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Саудовский риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазилендский лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Северокорейская вона",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сейшельская рупия",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Сербский динар",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "Сингапурский доллар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сирийский фунт",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Сомалийский шиллинг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Суданский фунт",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринамский доллар",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "Таджикский сомони",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Таиландский бат",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Танзанийский шиллинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонганская паанга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Тунисский динар",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Турецкая лира",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Туркменский новый манат",
+ "symbol": "ТМТ"
+ },
+ "UGX": {
+ "name": "Угандийский шиллинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекский сум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Украинская гривна",
+ "symbol": "₴"
+ },
+ "UYU": {
+ "name": "Уругвайское песо",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Филиппинское песо",
+ "symbol": "PHP"
+ },
+ "DJF": {
+ "name": "Франк Джибути",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Франк Коморских островов",
+ "symbol": "KMF"
+ },
+ "XAF": {
+ "name": "Франк КФА ВЕАС",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Франк КФА ВСЕАО",
+ "symbol": "CFA"
+ },
+ "RWF": {
+ "name": "Франк Руанды",
+ "symbol": "RWF"
+ },
+ "XPF": {
+ "name": "Французский тихоокеанский франк",
+ "symbol": "CFPF"
+ },
+ "SHP": {
+ "name": "Фунт острова Святой Елены",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "Фунт Фолклендских островов",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "Хорватская куна",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Чешская крона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чилийское песо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "Шведская крона",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Швейцарский франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "Шри-Ланкийская рупия",
+ "symbol": "LKR"
+ },
+ "CVE": {
+ "name": "Эскудо Кабо-Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Эфиопский быр",
+ "symbol": "ETB"
+ },
+ "ZAR": {
+ "name": "Южноафриканский рэнд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Южнокорейская вона",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Южносуданский фунт",
+ "symbol": "SSP"
+ },
+ "JMD": {
+ "name": "Ямайский доллар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Японская иена",
+ "symbol": "¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rwk.json b/library/intl/resources/currency/rwk.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/rwk.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/saq.json b/library/intl/resources/currency/saq.json
new file mode 100644
index 000000000..4202a5ffb
--- /dev/null
+++ b/library/intl/resources/currency/saq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "LRD": {
+ "name": "Dola eel Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola eel Marekani",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "ZAR": {
+ "name": "Njilingi eel Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Njilingi eel Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Njilingi eel Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Njilingi eel Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Njilingi eel Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Njilingi eel Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Njilingi eel Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Njilingi eel Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Njilingi eel CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Njilingi eel CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Njilingi eel China",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "Njilingi eel Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Njilingi eel Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "Njilingi eel Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Njilingi eel India",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Njilingi eel Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Njilingi eel Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Njilingi eel Kenya",
+ "symbol": "Ksh"
+ },
+ "CVE": {
+ "name": "Njilingi eel Kepuvede",
+ "symbol": "CVE"
+ },
+ "JPY": {
+ "name": "Njilingi eel Kijapani",
+ "symbol": "JP¥"
+ },
+ "KMF": {
+ "name": "Njilingi eel Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Njilingi eel Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Njilingi eel Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Njilingi eel Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Njilingi eel Malawi",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "Njilingi eel Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Njilingi eel Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Njilingi eel Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Njilingi eel Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Njilingi eel Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Njilingi eel Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Njilingi eel Rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Njilingi eel Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Njilingi eel Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Njilingi eel Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Njilingi eel Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Njilingi eel Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Njilingi eel Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Njilingi eel Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Njilingi eel Uhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "Njilingi eel Uingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "Njilingi eel Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Njilingi eel Zambia",
+ "symbol": "ZMW"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "SHP": {
+ "name": "Paunt eel Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Paunt eel Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sbp.json b/library/intl/resources/currency/sbp.json
new file mode 100644
index 000000000..d3cde118e
--- /dev/null
+++ b/library/intl/resources/currency/sbp.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ZAR": {
+ "name": "Ihela ya Afilika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Ihela ya Alijeliya",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ihela ya Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ihela ya Awusitilaliya",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Ihela ya Bahaleni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Ihela ya Botiswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Ihela ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Ihela ya Bulundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ihela ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ihela ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "ERN": {
+ "name": "Ihela ya Elitileya",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ihela ya Gambiya",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Ihela ya Indiya",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Ihela ya Japani",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Ihela ya Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Ihela ya Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Ihela ya Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "Ihela ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Ihela ya Komolo",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ihela ya Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Ihela ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Ihela ya Libeliya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Ihela ya Libiya",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "Ihela ya Lwanda",
+ "symbol": "RWF"
+ },
+ "MWK": {
+ "name": "Ihela ya Malawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "Ihela ya Malekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "Ihela ya Misili",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Ihela ya Molisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Ihela ya Molitaniya",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Ihela ya Moloko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Ihela ya Namibiya",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Ihela ya Nijeliya",
+ "symbol": "NGN"
+ },
+ "ZMW": {
+ "name": "Ihela ya Sambiya",
+ "symbol": "ZMW"
+ },
+ "SHP": {
+ "name": "Ihela ya Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Ihela ya Sao Tome ni Pilinsipe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Ihela ya Sawudiya",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Ihela ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "CNY": {
+ "name": "Ihela ya Shina",
+ "symbol": "CN¥"
+ },
+ "AED": {
+ "name": "Ihela ya Shitwa sha Shiyalabu",
+ "symbol": "AED"
+ },
+ "SLL": {
+ "name": "Ihela ya Siela Liyoni",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Ihela ya Somaliya",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Ihela ya Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Ihela ya Tansaniya",
+ "symbol": "TSh"
+ },
+ "TND": {
+ "name": "Ihela ya Tunisiya",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Ihela ya Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Ihela ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Ihela ya Ulaya",
+ "symbol": "€"
+ },
+ "SZL": {
+ "name": "Ihela ya Uswasi",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Ihela ya Uswisi",
+ "symbol": "CHF"
+ },
+ "GBP": {
+ "name": "Ihela ya Uwingelesa",
+ "symbol": "£"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/se.json b/library/intl/resources/currency/se.json
new file mode 100644
index 000000000..20cc838e3
--- /dev/null
+++ b/library/intl/resources/currency/se.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "Dkr"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norgga kruvdno",
+ "symbol": "kr"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SEK": {
+ "name": "ruoŧŧa kruvdno",
+ "symbol": "Skr"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/seh.json b/library/intl/resources/currency/seh.json
new file mode 100644
index 000000000..119049148
--- /dev/null
+++ b/library/intl/resources/currency/seh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "MWK": {
+ "name": "Cuacha do Maláui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Cuacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Cuanza angolano",
+ "symbol": "AOA"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi de Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar bareinita",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinar sudanês",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinar tunisiano",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirém dos Emirados Árabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirém marroquino",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dólar canadense",
+ "symbol": "CA$"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dólar norte-americano",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Franco de Comores",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "Franco de Madagascar",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Franco do Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Franco do Djibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JP¥"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MTn"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritréia",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula botsuanesa",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "Rupia das Seychelles",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "Rupia de Maurício",
+ "symbol": "MUR"
+ },
+ "INR": {
+ "name": "Rúpia indiana",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "TZS": {
+ "name": "Xelim da Tanzânia",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense (1966–1987)",
+ "symbol": "UGX"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi chinês",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ses.json b/library/intl/resources/currency/ses.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/ses.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sg.json b/library/intl/resources/currency/sg.json
new file mode 100644
index 000000000..051bbdb34
--- /dev/null
+++ b/library/intl/resources/currency/sg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "ariâri tî Madagasikära",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir tî Etiopïi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi tî gambïi",
+ "symbol": "GMD"
+ },
+ "LYD": {
+ "name": "dinäar tî Libïi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "dinära tî Tunizïi",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "dinäri tî Alzerïi",
+ "symbol": "DZD"
+ },
+ "AED": {
+ "name": "dirâm tî âEmirâti tî Arâbo Ôko",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirâm tî Marôko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dôbra tî Sâô Tomë na Prinsîpe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dol$ara ttî äLetäa-Ôko tî Amerîka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "dolära tî kanadäa",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolära tî Liberïa",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolära tî Namibïi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "dolära tî Ostralïi",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "dolùara tî Bahrâina",
+ "symbol": "BHD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskûêdo tî Kâpo-Vêre",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "farânga CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "farânga CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "farânga tî Burundïi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "farânga tî Dibutïi",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "farânga tî Kömôro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "farânga tî Kongöo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "farânga tî Ruandäa",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "farânga tî Sûîsi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "AOA": {
+ "name": "kwânza tî Angoläa",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "kwâtia tî Malawïi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwâtia tî Zambïi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leône tî Sierâ-Leône",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangùeni tî Swazïlânde",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti tî Lesôtho",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "nâîra tî Nizerïa",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakafa tî Eritrëe",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "pôndo tî Anglëe",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pôndo tî Kâmitâ",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "pôndo tî Sudäan",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "pôndo tî Zûâ Sênt-Helêna",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "pûla tî Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rânde tî Mbongo-Afrîka",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "riâli tî Saûdi Arabïi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupïi tî Ênnde",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupïi tî Mörîsi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "rupïi tî Sëyshêle",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilîngi tî Kenyäa",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilîngi tî Somalïi",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilîngi tî Tanzanïi",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "shilîngi tî Ugandäa",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugîya tî Moritanïi",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yêni tî Zapön",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi tî Shîni",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "zoröo",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/shi-Latn.json b/library/intl/resources/currency/shi-Latn.json
new file mode 100644
index 000000000..5eb2b53d7
--- /dev/null
+++ b/library/intl/resources/currency/shi-Latn.json
@@ -0,0 +1,634 @@
+{
+ "BWP": {
+ "name": "abula n butswana",
+ "symbol": "BWP"
+ },
+ "KES": {
+ "name": "acilin n kinya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "acilin n ṣṣumal",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "acilin n ṭanẓanya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "acilin n uɣanda",
+ "symbol": "UGX"
+ },
+ "BHD": {
+ "name": "adinar n bḥrayn",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "adinar n dzayr",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "adinar n libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "adinar n ssudan",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "adinar n tuns",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "adrim n limarat",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "adrim n lmɣrib",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "adubra n sanṭumi",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "adular n iwunak imunn",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "adular n kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "adular n libirya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "adular n namibya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "adular n ustralya",
+ "symbol": "A$"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "RWF": {
+ "name": "afrank n rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "afrank n swisra",
+ "symbol": "CHF"
+ },
+ "GBP": {
+ "name": "ajnih astrlini n nngliz",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ajnih n miṣṛ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ajnih n santilin",
+ "symbol": "SHP"
+ },
+ "ZMW": {
+ "name": "akwaca n zambya",
+ "symbol": "ZMW"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ZAR": {
+ "name": "arand n afriqya n iffus",
+ "symbol": "ZAR"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "INR": {
+ "name": "arubi n lhind",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "arubi n muris",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "arubi n ssicil",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "aryal n ssaɛudiya",
+ "symbol": "SAR"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "CNY": {
+ "name": "ayan n ccinwa",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ayan n lyaban",
+ "symbol": "JP¥"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir n ityubya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi n gambya",
+ "symbol": "GMD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "frank n burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "frank n djibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "frank n kungu",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "frank n madaɣacqar",
+ "symbol": "MGA"
+ },
+ "KMF": {
+ "name": "frank n qumuṛ",
+ "symbol": "KMF"
+ },
+ "XAF": {
+ "name": "frank ṣifa",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "frank ṣifa bisaw",
+ "symbol": "CFA"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CVE": {
+ "name": "iskudu n kabbirdi",
+ "symbol": "CVE"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "kwaca n malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza n angula",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "lilanjini",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "liyun",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "luti n liṣuṭu",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka n iritirya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "nayra n nijirya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "uqiyya n muṛiṭanya",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "uru",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/shi.json b/library/intl/resources/currency/shi.json
new file mode 100644
index 000000000..51578e02c
--- /dev/null
+++ b/library/intl/resources/currency/shi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "BWP": {
+ "name": "ⴰⴱⵓⵍⴰ ⵏ ⴱⵓⵜⵙⵡⴰⵏⴰ",
+ "symbol": "BWP"
+ },
+ "BHD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⴱⵃⵔⴰⵢⵏ",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⴷⵣⴰⵢⵔ",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵍⵉⴱⵢⴰ",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵙⵙⵓⴷⴰⵏ",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵜⵓⵏⵙ",
+ "symbol": "TND"
+ },
+ "STD": {
+ "name": "ⴰⴷⵓⴱⵔⴰ ⵏ ⵙⴰⵏⵟⵓⵎⵉ",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⴽⴰⵏⴰⴷⴰ",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵉⵡⵓⵏⴰⴽ ⵉⵎⵓⵏⵏ",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵍⵉⴱⵉⵔⵢⴰ",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵏⴰⵎⵉⴱⵢⴰ",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵓⵙⵜⵔⴰⵍⵢⴰ",
+ "symbol": "A$"
+ },
+ "AED": {
+ "name": "ⴰⴷⵔⵉⵎ ⵏ ⵍⵉⵎⴰⵔⴰⵜ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ",
+ "symbol": "MAD"
+ },
+ "RWF": {
+ "name": "ⴰⴼⵔⴰⵏⴽ ⵏ ⵔⵡⴰⵏⴷⴰ",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ⴰⴼⵔⴰⵏⴽ ⵏ ⵙⵡⵉⵙⵔⴰ",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ",
+ "symbol": "ZMW"
+ },
+ "GBP": {
+ "name": "ⴰⵊⵏⵉⵀ ⴰⵙⵜⵔⵍⵉⵏⵉ ⵏ ⵏⵏⴳⵍⵉⵣ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ⴰⵊⵏⵉⵀ ⵏ ⵎⵉⵚⵕ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ⴰⵊⵏⵉⵀ ⵏ ⵙⴰⵏⵜⵉⵍⵉⵏ",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "ⴰⵔⴰⵏⴷ ⵏ ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ",
+ "symbol": "ZAR"
+ },
+ "INR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵍⵀⵉⵏⴷ",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵎⵓⵔⵉⵙ",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵙⵙⵉⵛⵉⵍ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ⴰⵔⵢⴰⵍ ⵏ ⵙⵙⴰⵄⵓⴷⵉⵢⴰ",
+ "symbol": "SAR"
+ },
+ "KES": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⴽⵉⵏⵢⴰ",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵓⵖⴰⵏⴷⴰ",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵚⵚⵓⵎⴰⵍ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵟⴰⵏⵥⴰⵏⵢⴰ",
+ "symbol": "TZS"
+ },
+ "JPY": {
+ "name": "ⴰⵢⴰⵏ ⵏ ⵍⵢⴰⴱⴰⵏ",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "ⴰⵢⴰⵏ ⵏ ⵛⵛⵉⵏⵡⴰ",
+ "symbol": "CN¥"
+ },
+ "ETB": {
+ "name": "ⴱⵉⵔ ⵏ ⵉⵜⵢⵓⴱⵢⴰ",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "ⴷⴰⵍⴰⵙⵉ ⵏ ⴳⴰⵎⴱⵢⴰ",
+ "symbol": "GMD"
+ },
+ "BIF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴱⵓⵔⵓⵏⴷⵉ",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴷⵊⵉⴱⵓⵜⵉ",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴽⵓⵏⴳⵓ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⵇⵓⵎⵓⵕ",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ",
+ "symbol": "MGA"
+ },
+ "XAF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "ⴽⵡⴰⵏⵣⴰ ⵏ ⴰⵏⴳⵓⵍⴰ",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "ⴽⵡⴰⵛⴰ ⵏ ⵎⴰⵍⴰⵡⵉ",
+ "symbol": "MWK"
+ },
+ "CVE": {
+ "name": "ⵉⵙⴽⵓⴷⵓ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ",
+ "symbol": "CVE"
+ },
+ "SZL": {
+ "name": "ⵍⵉⵍⴰⵏⵊⵉⵏⵉ",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "ⵍⵉⵢⵓⵏ",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "ⵍⵓⵜⵉ ⵏ ⵍⵉⵚⵓⵟⵓ",
+ "symbol": "LSL"
+ },
+ "ERN": {
+ "name": "ⵏⴰⴼⴽⴰ ⵏ ⵉⵔⵉⵜⵉⵔⵢⴰ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ⵏⴰⵢⵔⴰ ⵏ ⵏⵉⵊⵉⵔⵢⴰ",
+ "symbol": "NGN"
+ },
+ "MRO": {
+ "name": "ⵓⵇⵉⵢⵢⴰ ⵏ ⵎⵓⵕⵉⵟⴰⵏⵢⴰ",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "ⵓⵔⵓ",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/si.json b/library/intl/resources/currency/si.json
new file mode 100644
index 000000000..49143a06d
--- /dev/null
+++ b/library/intl/resources/currency/si.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ISK": {
+ "name": "අයිස්ලන්තික ක්‍රෝනා",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "අරූබානු ෆ්ලෝරින්",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "අසර්බයිජානු මනාට්",
+ "symbol": "AZN"
+ },
+ "ARS": {
+ "name": "ආර්ජන්ටිනා පෙසෝ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ආර්මේනියානු ඩ්‍රෑම්",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "ඇන්ගෝලානු ක්වන්සා",
+ "symbol": "AOA"
+ },
+ "USD": {
+ "name": "ඇමරිකානු ඩොලර්",
+ "symbol": "US$"
+ },
+ "DZD": {
+ "name": "ඇල්ගේරියානු ඩිනාර්",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ඇල්බේනියානු ලෙක්",
+ "symbol": "ALL"
+ },
+ "AFN": {
+ "name": "ඇෆ්ගනිථාන ඇෆ්ගනි",
+ "symbol": "AFN"
+ },
+ "ETB": {
+ "name": "ඉතියෝපියානු බීර්",
+ "symbol": "ETB"
+ },
+ "INR": {
+ "name": "ඉන්දියානු රුපියල්",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ඉන්දුනීසියානු රුපියා",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ඉරාක ඩිනාර්",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ඉරාන රියාල්",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ඊජිප්තු පවුම්",
+ "symbol": "EGP"
+ },
+ "ILS": {
+ "name": "ඊශ්‍රායල නව ශෙකල්",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "උගන්ඩා ශිලිං",
+ "symbol": "UGX"
+ },
+ "KPW": {
+ "name": "උතුරු කොරියානු වොන්",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "උරුගුවේ පෙසෝ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "උස්බෙකිස්ථාන සම්",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "එක්සත් අරාබි එමිරේට්ස් ඩිරාම්",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "එරිත්‍රියානු නැක්ෆා",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ඔස්ට්‍රේලියානු ඩොලර්",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ඕමාන් රියාල්",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "කටාර් රියාල්",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "කසකස්ථාන ටෙන්ග",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "කාම්බෝජ රියේල්",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "කැනේඩියානු ඩොලර්",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "කියුබානු පැසෝ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "කිරිගිස්ථාන සම්",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "කුවේට් ඩිනාර්",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "කෙන්යානු ශිලිං",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "කේප් වර්ඩ් එස්කියුඩෝ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "කේමන් දූපත් ඩොලර්",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "කොංගෝ ෆ්‍රෑන්ක්",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "කොමොරියානු ෆ්‍රෑන්ක්",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "කොලොම්බියානු පෙසෝ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "කොස්ට රිකා කොලෝන්",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "ක්‍රොඒෂියානු කූනා",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "ගයනා ඩොලර්",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ගැම්බියානු දලාසි",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "ගිනියානු ෆ්රෑන්ක්",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ගෝතමාලානු ක්වෙට්සල්",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ඝානා සෙඩි",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "චිලි පැසෝ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "චීන යුආන්",
+ "symbol": "CN¥"
+ },
+ "CZK": {
+ "name": "චෙක් රිපබ්ලික් කොරූනා",
+ "symbol": "CZK"
+ },
+ "JPY": {
+ "name": "ජපන් යෙන්",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "ජැමෙයිකානු ඩොලර්",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ජිබූති ෆ්‍රෑන්ක්",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "ජිබ්‍රෝල්ටා පවුම්",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ජෝජියානු ලැරී",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ජෝර්දාන් ඩිනාර්",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "ටැන්සානියානු ශිලිං",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "ටියුනීසියානු ඩිනාර්",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ටොංගානු පාන්ගා",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ට්‍රිනිඩෑඩ් සහ ටොබෑගෝ ඩොලර්",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "ඩැනිෂ් ක්‍රෝන්",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ඩොමිනිකානු පෙසෝ",
+ "symbol": "DOP"
+ },
+ "TMT": {
+ "name": "තක්මෙනිස්ථාන මනාට්",
+ "symbol": "TMT"
+ },
+ "TJS": {
+ "name": "තජිකිස්ථාන සමොනි",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "තායි බාත්",
+ "symbol": "฿"
+ },
+ "TRY": {
+ "name": "තුර්කි ලිරා",
+ "symbol": "TRY"
+ },
+ "ZAR": {
+ "name": "දකුණු අප්‍රිකානු රැන්ඩ්",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "දකුණු කොරියානු වොන්",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "දකුණු සුඩාන පවුම්",
+ "symbol": "SSP"
+ },
+ "NGN": {
+ "name": "නයිජීරියානු නයිරා",
+ "symbol": "NGN"
+ },
+ "TWD": {
+ "name": "නව තායිවාන ඩොලර්",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "නවසීලන්ත ඩොලර්",
+ "symbol": "NZ$"
+ },
+ "XCD": {
+ "name": "නැගෙනහිර කැරිබියානු ඩොලර්",
+ "symbol": "EC$"
+ },
+ "NAD": {
+ "name": "නැමීබියානු ඩොලර්",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "නිකරගුවානු කොඩෝබා",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "නෙදර්ලන්ත ඇන්ටිලියන් ගිල්ඩර්",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "නේපාල රුපියල්",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "නොර්වීජියන් ක්‍රෝන්",
+ "symbol": "NOK"
+ },
+ "PKR": {
+ "name": "පාකිස්ථාන රුපියල්",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "පැනමා බැල්බෝ",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "පැපුවා නිව් ගිනියානු කිනා",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "පැරගුවේ ගුවරානි",
+ "symbol": "PYG"
+ },
+ "PHP": {
+ "name": "පිලිපීන පෙසෝ",
+ "symbol": "PHP"
+ },
+ "PEN": {
+ "name": "පේරු නියුවෝ සොල්",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "පොලිෂ් ස්ලොටි",
+ "symbol": "PLN"
+ },
+ "XPF": {
+ "name": "ප්‍රංශ පොලිනීසියානු ෆ්‍රෑන්ක්",
+ "symbol": "CFPF"
+ },
+ "BDT": {
+ "name": "බංග්ලාදේශ් ටකා",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "බර්මියුඩානු ඩොලර්",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "බල්ගේරියානු ලිව්",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "බහමානු ඩොලර්",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "බහරේන් ඩිනාර්",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "බාබේඩියානු ඩොලර්",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "බුරුන්දි ෆ්‍රෑන්ක්",
+ "symbol": "BIF"
+ },
+ "MMK": {
+ "name": "බුරුම ක්යාට්",
+ "symbol": "MMK"
+ },
+ "BND": {
+ "name": "බෘනායි ඩොලර්",
+ "symbol": "BND"
+ },
+ "BYR": {
+ "name": "බෙලරූස් රූබල්",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "බෙලීස් ඩොලර්",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "බොට්ස්වානා පුලා",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "බොලිවියානු බොලිවියානෝ",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "බොස්නියා හර්සගොවීනා පරිවර්ත්‍ය මාර්ක්",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "බ්‍රසීල රියල්",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "බ්‍රිතාන්‍ය ස්ටර්ලින් පවුම්",
+ "symbol": "£"
+ },
+ "BTN": {
+ "name": "භූතාන නගුල්ට්‍රම්",
+ "symbol": "BTN"
+ },
+ "MGA": {
+ "name": "මලගාසි අරියාරි",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "මලාවි ක්වාචා",
+ "symbol": "MWK"
+ },
+ "CUC": {
+ "name": "මාරුකළ හැකි කියුබානු පැසෝ",
+ "symbol": "CUC"
+ },
+ "MVR": {
+ "name": "මාලදිවයින් රුෆියා",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "මැකනීස් පටකා",
+ "symbol": "MOP"
+ },
+ "MYR": {
+ "name": "මැලේසියානු රින්ගිට්",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "මැසඩෝනියානු ඩිනාර්",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "මුරිසියානු රුපියල්",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "මුරුසි ඔයිගුයියා",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "මෙක්සිකානු ඩොලර්",
+ "symbol": "MX$"
+ },
+ "MNT": {
+ "name": "මොන්ගෝලියානු ටග්‍රික්",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "මොරොක්කෝ ඩිර්හැම්",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "මොසැම්බිකන් මෙටිකල්",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "මෝල්ඩෝවානු ලෙව්",
+ "symbol": "MDL"
+ },
+ "UAH": {
+ "name": "යුක්රේන හ්‍රිව්නියා",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "යුරෝ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "යේමන රියාල්",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "රුවන්ඩා ෆ්‍රෑන්ක්",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "රුසියන් රූබල්",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "රොමේනියානු ලෙව්",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "ලයිබේරියානු ඩොලර්",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "ලාඕස් කිප්",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "ලිතුවේනියානු",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ලිබියානු ඩිනාර්",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ලෙබනන පවුම්",
+ "symbol": "LBP"
+ },
+ "VUV": {
+ "name": "වනුවාටු වාටු",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "වියට්නාම ඩොන්",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "වෙනිසියුලානු බොලිවර්",
+ "symbol": "VEF"
+ },
+ "SHP": {
+ "name": "ශාන්ත හෙලේනා පවුම්",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "ශ්‍රී ලංකා රුපියල",
+ "symbol": "රු."
+ },
+ "RSD": {
+ "name": "සර්බියානු ඩිනාර්",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "සවුදි රියාල්",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "සාඕ තෝම් සහ ප්‍රින්සිප් දොබ්‍රා",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "සැමෝවා ටාලා",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "සැම්බියානු ක්වාචා",
+ "symbol": "ZMW"
+ },
+ "SGD": {
+ "name": "සිංගප්පූරු ඩොලර්",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "සියරා ලියොන් ලියොන්",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "සිරියානු පවුම්",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "සිෆ්එ ෆ්රෑන්ක් බිඊඑසි",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "සිෆ්එ ෆ්රෑන්ක් බිසීඊඑඔ",
+ "symbol": "සිෆ්එ"
+ },
+ "SCR": {
+ "name": "සීෂෙලියානු රුපියල",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "සුඩාන පවුම්",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "සුරිනාම් ඩොලර්",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "සොලමන් දූපත් ඩොලර්",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "සෝමාලියානු ශිලිං",
+ "symbol": "SOS"
+ },
+ "SZL": {
+ "name": "ස්වාසි ලිලන්ජනි",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ස්විස් ෆ්‍රෑන්ක්",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ස්වෙඩිෂ් ක්‍රෝනා",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "හංගේරියානු ෆරින්ට්",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "හයිටි ගෝර්ඩ්",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "හොංකොං ඩොලර්",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "හොන්ඩුරානු ලෙම්පිරා",
+ "symbol": "HNL"
+ },
+ "FJD": {
+ "name": "ෆිජියන් ඩොලර්",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ෆෝක්ලන්ඩ් දූපත් පවුම්",
+ "symbol": "FKP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sk.json b/library/intl/resources/currency/sk.json
new file mode 100644
index 000000000..18ee29641
--- /dev/null
+++ b/library/intl/resources/currency/sk.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganský afgání",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albánsky lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžírsky dinár",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "americký dolár",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolská kwanza",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "antilský gulden",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "argentínske peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "arménsky dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubský gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "austrálsky dolár",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžanský manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamský dolár",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrajnský dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladéšska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoský dolár",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizský dolár",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudský dolár",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutánsky ngultrum",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "bieloruský rubeľ",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "bolívijské boliviano",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "botswanská pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazílsky real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britská libra",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunejský dolár",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulharský lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundský frank",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "česká koruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "čilské peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "čínsky jüan",
+ "symbol": "CNY"
+ },
+ "DKK": {
+ "name": "dánska koruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikánske peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutský frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptská libra",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejská nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiópsky birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandská libra",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijský dolár",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipínske peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijské dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghanské cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltárska libra",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzínske lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalský quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guinejský frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanský dolár",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitské gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraská lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonský dolár",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "chorvátska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indická rupia",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonézska rupia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iracký dinár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iránsky rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandská koruna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelský šekel",
+ "symbol": "NIS"
+ },
+ "JMD": {
+ "name": "jamajský dolár",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonský jen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenský rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordánsky dinár",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "juhoafrický rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "juhokórejský won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "juhosudánska libra",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanský dolár",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžský riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadský dolár",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "kapverdské escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarský rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazašské tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenský šiling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgizský som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbijské peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorský frank",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "konvertibilná marka",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "konžský frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostarický colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubánske konvertibilné peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubánske peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtský dinár",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoský kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothský loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonská libra",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "libérijský dolár",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "líbyjský dinár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litovský litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macajská pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "macedónsky denár",
+ "symbol": "MKD"
+ },
+ "HUF": {
+ "name": "maďarský forint",
+ "symbol": "HUF"
+ },
+ "MYR": {
+ "name": "malajzijský ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawijská kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivská rupia",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "malgašský ariary",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "marocký dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "maurícijská rupia",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritánska ukija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexické peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "mjanmarský kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavský lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolský tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambický metical",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namíbijský dolár",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepálska rupia",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigérijská naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragujská córdoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "nórska koruna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "novozélandský dolár",
+ "symbol": "NZD"
+ },
+ "TWD": {
+ "name": "nový taiwanský dolár",
+ "symbol": "TWD"
+ },
+ "OMR": {
+ "name": "ománsky rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanská rupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamská balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuánska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguajské guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruánsky nový sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poľský zlotý",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "rumunský lei",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruský rubeľ",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandský frank",
+ "symbol": "RWF"
+ },
+ "AED": {
+ "name": "SAE dirham",
+ "symbol": "AED"
+ },
+ "SVC": {
+ "name": "Salvádorský colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samojská tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saudskoarabský rial",
+ "symbol": "SAR"
+ },
+ "KPW": {
+ "name": "severokórejský won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychelská rupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonský leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurský dolár",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somálsky šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbský dinár",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "srílanská rupia",
+ "symbol": "LKR"
+ },
+ "XAF": {
+ "name": "stredoafrický frank",
+ "symbol": "FCFA"
+ },
+ "SDG": {
+ "name": "sudánska libra",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamský dolár",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazijské lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "svätohelenská libra",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "svätotomášska dobra",
+ "symbol": "STD"
+ },
+ "SYP": {
+ "name": "sýrska libra",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "šalamúnsky dolár",
+ "symbol": "SBD"
+ },
+ "CHF": {
+ "name": "švajčiarsky frank",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "švédska koruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "tadžické somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzánsky šiling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thajský baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tongská paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadsko-tobažský dolár",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniský dinár",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turecká líra",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkménsky manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandský šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinská hrivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguajské peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbecký sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatské vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelský bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamský dong",
+ "symbol": "VND"
+ },
+ "XCD": {
+ "name": "východokaribský dolár",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijská kwacha",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "západoafrický frank",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "Zimbabwiansky dolár (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sl.json b/library/intl/resources/currency/sl.json
new file mode 100644
index 000000000..3da025916
--- /dev/null
+++ b/library/intl/resources/currency/sl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriški dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "avstralski dolar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "azerbajdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahranski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizejski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "beloruski rubelj",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BGN": {
+ "name": "bolgarski lev",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "bolivijski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosansko-hercegovska konvertibilna marka",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britanski funt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "brunejski dolar",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundski frank",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "češka krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "čilski peso",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "danska krona",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "dirham Združenih arabskih emiratov",
+ "symbol": "AED"
+ },
+ "TTD": {
+ "name": "dolar Trinidada in Tobaga",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "dominikanski peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egiptovski funt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "evro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski funt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "SHP": {
+ "name": "funt Sv. Helene",
+ "symbol": "SHP"
+ },
+ "GMD": {
+ "name": "gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarski funt",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "gvinejski frank",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "haitski gurd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "hrvaška kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indonezijska rupija",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "iranski rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "iraški dinar",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "islandska krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelski šekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamajški dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonski jen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafriški rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski von",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "južnosudanski funt",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kamboški riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenijski šiling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "KGS": {
+ "name": "kirgiški som",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "kitajski juan renminbi",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "kolumbijski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoški frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostariški kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubanski konvertibilni peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesoški loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonski funt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litovski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "madžarski forint",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makavska pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malavijska kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "malgaški ariarij",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "maroški dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mavretanska uguija",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mavricijska rupija",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mehiški peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavijski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambiški metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraška zlata kordova",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norveška krona",
+ "symbol": "NOK"
+ },
+ "TRY": {
+ "name": "nova turška lira",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "novozelandski dolar",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "omanski rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perujski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poljski novi zlot",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "romunski leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandski frank",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ruski rubelj",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "saotomejska dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudski rial",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "sieraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "sirijski funt",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somalski šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "sudanski funt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazijski lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "šrilanška rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "švedska krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "švicarski frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tajski baht",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "tanzanijski šiling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongovska paanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "tunizijski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanski novi manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "urugvajski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbeški sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatujski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vientnamski dong",
+ "symbol": "₫"
+ },
+ "XCD": {
+ "name": "vzhodnokaribski dolar",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijska kvača",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "zimbabvejski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sn.json b/library/intl/resources/currency/sn.json
new file mode 100644
index 000000000..56f9d154f
--- /dev/null
+++ b/library/intl/resources/currency/sn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ye Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dhinari re Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dhinari re Bhahareni",
+ "symbol": "BHD"
+ },
+ "CVE": {
+ "name": "Dhora re Escudo",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Dhora re Etiopia",
+ "symbol": "ETB"
+ },
+ "LYD": {
+ "name": "Dinari re Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari re Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari re Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Diramu re United Arab Emirates",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ye Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra re Sao Tome ne Principe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dora re Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dora re Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dora re Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dora re Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dora re Namibia",
+ "symbol": "NAD"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Furenki CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Furenki CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Furenki re Bhurundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Furenki re Jibhuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Furenki re Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Furenki re Kongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Furenki re Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Furenki re Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Furenki re Swisi",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ye Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ye Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ye Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ye Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ye Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa re Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paundi re Ijipita",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi re Senti Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Paundi ye Bhiriteni",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura re Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyali re Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupe re India",
+ "symbol": "₹"
+ },
+ "SCR": {
+ "name": "Rupi re Seyisheri",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "Rupi ye Morishasi",
+ "symbol": "MUR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shiringi re Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shiringi re Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shiringi re Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Shiringi ye Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ye Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ye Japani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ye China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/so.json b/library/intl/resources/currency/so.json
new file mode 100644
index 000000000..95d95398c
--- /dev/null
+++ b/library/intl/resources/currency/so.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "ETB": {
+ "name": "Birta Itoobbiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "USD": {
+ "name": "Doollar maraykan",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "DJF": {
+ "name": "Faran Jabbuuti",
+ "symbol": "DJF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyaalka Sacuudiga",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilin soomaali",
+ "symbol": "S"
+ },
+ "TZS": {
+ "name": "Shilin Tansaani",
+ "symbol": "TZS"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuuroo",
+ "symbol": "€"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sq.json b/library/intl/resources/currency/sq.json
new file mode 100644
index 000000000..89f842436
--- /dev/null
+++ b/library/intl/resources/currency/sq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani afgan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Arieri malagez",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "Balboa panameze",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "Bata tajlandeze",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "Bira etiopiane",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivari venezuelian",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviani i Bolivisë",
+ "symbol": "BOB"
+ },
+ "GMD": {
+ "name": "Dalasi gambian",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denari maqedonas",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinari algjerian",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari i Bahreinit",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinari irakian",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinari jordanez",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinari kuvajtian",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinari libian",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinari serb",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinari tunizian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirhami i Emirateve të Bashkuara Arabe",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirhami maroken",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra e Sao Tomes dhe Prinsipes",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dollari amerikan",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dollari australian",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Dollari barbadian",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "Dollari e Bermudeve",
+ "symbol": "BMD"
+ },
+ "GYD": {
+ "name": "Dollari guajanez",
+ "symbol": "GYD"
+ },
+ "BSD": {
+ "name": "Dollari i Bahamasit",
+ "symbol": "BSD"
+ },
+ "BND": {
+ "name": "Dollari i Bruneit",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dollari i Fixhit",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dollari i Hong Kongut",
+ "symbol": "HK$"
+ },
+ "BZD": {
+ "name": "Dollari i Ishujve Belize",
+ "symbol": "BZD"
+ },
+ "KYD": {
+ "name": "Dollari i Ishujve Kajman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollari i Ishujve Solomon",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "Dollari i Karaibeve Lindore",
+ "symbol": "EC$"
+ },
+ "NAD": {
+ "name": "Dollari i Namibisë",
+ "symbol": "NAD"
+ },
+ "SGD": {
+ "name": "Dollari i Singaporit",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dollari i Trinidadit dhe Tobagos",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "Dollari i Zelandës së Re",
+ "symbol": "NZ$"
+ },
+ "CAD": {
+ "name": "Dollari kanadez",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dollari liberian",
+ "symbol": "LRD"
+ },
+ "SRD": {
+ "name": "Dollari surinamez",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dollari tajvanez",
+ "symbol": "NT$"
+ },
+ "JMD": {
+ "name": "Dollari xhamajkan",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "Donga vietnameze",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dramia armene",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Eskudoja e Kepit të Gjelbër",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euroja",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florini aruban",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forinta hungareze",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franga burundiane",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franga e Bregut të Fildishtë",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "Franga franceze e Polinezisë",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Franga guinease",
+ "symbol": "GNF"
+ },
+ "XAF": {
+ "name": "Franga kamerunase",
+ "symbol": "FCFA"
+ },
+ "KMF": {
+ "name": "Franga komore",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franga kongole",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franga ruandeze",
+ "symbol": "RWF"
+ },
+ "DJF": {
+ "name": "Franga xhibutiane",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Franga zvicerane",
+ "symbol": "CHF"
+ },
+ "ANG": {
+ "name": "Gilderi antilian holandez",
+ "symbol": "ANG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaian",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "Gurdi haitian",
+ "symbol": "HTG"
+ },
+ "JPY": {
+ "name": "Jeni japonez",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "Juani kinez",
+ "symbol": "CN¥"
+ },
+ "MMK": {
+ "name": "Kiata e Mianmarit",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "Kina e Papua-Guineas së Re",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kipa e Laosit",
+ "symbol": "LAK"
+ },
+ "CRC": {
+ "name": "Koloni kostarikan",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Kordoba nikaraguane",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Korona daneze",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Korona islandeze",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Korona norvegjeze",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Korona suedeze",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "Koruna e Republikës Çeke",
+ "symbol": "CZK"
+ },
+ "ZMW": {
+ "name": "Kuaça e Zambikut",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Kuaça malaviane",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kuanza e Angolës",
+ "symbol": "AOA"
+ },
+ "GTQ": {
+ "name": "Kuecali i Guatemalës",
+ "symbol": "GTQ"
+ },
+ "HRK": {
+ "name": "Kuna kroate",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "Laria gjeorgjiane",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Leku shqiptar",
+ "symbol": "Lekë"
+ },
+ "HNL": {
+ "name": "Lempira hondurase",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leoni i Sierra Leones",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldav",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu rumun",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Leva bullgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni i Svazilandit",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turke",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Lita lituaneze",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manata e Azerbajxhanit",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manata turkmene",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marka e Bosnjë-Hercegovinës [e shkëmbyeshme]",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metikali i Mozambikut",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriane",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa e Eritresë",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrumi butanez",
+ "symbol": "BTN"
+ },
+ "TOP": {
+ "name": "Panga tongane",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataka e Makaos",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Pezoja argjentinase",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "Pezoja dominikane",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Pezoja filipinase",
+ "symbol": "PHP"
+ },
+ "CLP": {
+ "name": "Pezoja kiliane",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Pezoja kolumbiane",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Pezoja kubane",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Pezoja kubane e shkëmbyeshme",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Pezoja meksikane",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Pezoja uruguaiane",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsvane",
+ "symbol": "BWP"
+ },
+ "ZAR": {
+ "name": "Randa afrikano-jugore",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Reali brazilian",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "Riali i Jemenit",
+ "symbol": "YER"
+ },
+ "QAR": {
+ "name": "Riali i Katarit",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Riali i Omanit",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "Riali iranian",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "Riali kamboxhian",
+ "symbol": "KHR"
+ },
+ "SAR": {
+ "name": "Riali saudit",
+ "symbol": "SAR"
+ },
+ "MYR": {
+ "name": "Ringiti malajzian",
+ "symbol": "MYR"
+ },
+ "UAH": {
+ "name": "Rivnia ukrainase",
+ "symbol": "UAH"
+ },
+ "BYR": {
+ "name": "Rubla bjelloruse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rubla ruse",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiu i Maldivit",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "Rupia e Ishujve Sejçelë",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia e Sri Lankës",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiane",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indoneziane",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauritiane",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepaleze",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia pakistaneze",
+ "symbol": "PKR"
+ },
+ "GHS": {
+ "name": "Sejda ganeze",
+ "symbol": "GHS"
+ },
+ "PEN": {
+ "name": "Sola nuevo-peruane",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Soma kirgize",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Soma uzbeke",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somona taxhike",
+ "symbol": "TJS"
+ },
+ "GBP": {
+ "name": "Sterlina britanike",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "Sterlina e Gjibraltarit",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Sterlina libaneze",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Sterlina siriane",
+ "symbol": "SYP"
+ },
+ "FKP": {
+ "name": "Stërlina e Ishujve Folkland",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Stërlina e Ishullit të Shën Helenës",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "Stërlina e Sudanit të Jugut",
+ "symbol": "SSP"
+ },
+ "EGP": {
+ "name": "Stërlina egjiptiane",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "Stërlina sudaneze",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ILS": {
+ "name": "Shekeli izrealit",
+ "symbol": "₪"
+ },
+ "TZS": {
+ "name": "Shilinga e Tanzanisë",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Shilinga keniane",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilinga somaleze",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Shilinga ugandeze",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka e Bangladeshit",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoane",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenga kazake",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrika mongole",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "Ugija mauritane",
+ "symbol": "MRO"
+ },
+ "KRW": {
+ "name": "Uoni koreano-jugor",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Uoni koreano-verior",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "Vatuja e Vanuatusë",
+ "symbol": "VUV"
+ },
+ "PLN": {
+ "name": "Zllota polake",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Cyrl-BA.json b/library/intl/resources/currency/sr-Cyrl-BA.json
new file mode 100644
index 000000000..1bc85c78b
--- /dev/null
+++ b/library/intl/resources/currency/sr-Cyrl-BA.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "ERN": {
+ "name": "Eритрејска накфa",
+ "symbol": "ERN"
+ },
+ "KHR": {
+ "name": "Kамбоџански ријел",
+ "symbol": "KHR"
+ },
+ "TJS": {
+ "name": "Tаџихистански сомон",
+ "symbol": "TJS"
+ },
+ "AFN": {
+ "name": "Авганистански авгани",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Азербејџански манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албански лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирски динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Амерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Анголска кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Аргентински пезос",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Арубански флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Аустралијски долар",
+ "symbol": "AUD"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Бахамски долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Бахреински динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белиски долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Белоруска рубља",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Бермудски долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливијски Боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Боцванска пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилски реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Британска фунта стерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Брунејски долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Бугарски лев",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Бурундски франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутански нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануатски вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Венецуелански боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вијетнамски донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "Гамбијски даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гански седи",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "Гвајански долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Гватемалски кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвинејски франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтарска фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Грузијски лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Данска круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Доминикански пезос",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египатска фунта",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "Етиопијски бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "Замбијска квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Зеленортски ескудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Зимбабвеански долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "Израелски нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Индијска рупија",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Индонежанска рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Ирански риjал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "Исландска круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Источнокарипски долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Јамајчански долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Јапански јен",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Јеменски риjал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Јерменски драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Јордански динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Јужнокорејски Вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Јужносуданска фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "Казахстански тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "Кајмански долар",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Канадски долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катарски ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кенијски шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Кинески јуан",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Киргистански сом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Колумбијски пезос",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморски франак",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "Конвертибилна Марка",
+ "symbol": "КМ"
+ },
+ "CDF": {
+ "name": "Конгоански франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костарикански колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Кубански конвертибилни пезос",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Кубански пезос",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувајтски динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Лесото лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Либанска фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Либеријски долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Либијски динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литвански литас",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Мађарска форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Македонски денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малавијска квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагасијски ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "Малдивска руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Малезијски ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Марокански дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Мауританијска oгија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Маурицијска рупија",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Мексички пезос",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Мјанмарски кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбијски метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдавски леј",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монголски тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Намибијски долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непалскa рупиja",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигеријска наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Никарагванска златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Нови тајвански долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Новозеландски долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Норвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Омански ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистанскa рупиja",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамска балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуанска кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвајски гварани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перуански нуево сол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Пољски злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руандски франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Румунски леј (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Руска рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Салвадорски колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанска тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Саудијски ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленска фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Севернокорејски вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сејшелска рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапурски долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сиријска фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломонски долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомалијски шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Српски динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Суданска фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринамски долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Тајландски бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Танзанијски шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад-тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Туниски динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Туркменистански манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Турска лира",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "УАЕ дирхам",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Угандски шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекистански сом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Украјинска гривна",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Уругвајски пезос",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Филипински пезос",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Фиџијски долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Фокландска фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "Хаићански гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Холандскоантилски гулден",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "Хрватска куна",
+ "symbol": "HRK"
+ },
+ "XOF": {
+ "name": "ЦФА франак БЦЕАО",
+ "symbol": "CFA"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чилеански пезос",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "Џибутански франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Швајцарски франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Шведска круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шриланканскa рупиja",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Latn-BA.json b/library/intl/resources/currency/sr-Latn-BA.json
new file mode 100644
index 000000000..fe30ad268
--- /dev/null
+++ b/library/intl/resources/currency/sr-Latn-BA.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Američki dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "Avganistanski avgani",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Beloruska rublja",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski Boliviano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutanski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Evro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Foklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Holandskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irački dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Istočnokaripski dolar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Izraelski novi šekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamajčanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Južno-afrički rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski Von",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski šiling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertibilna Marka",
+ "symbol": "KM"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaniška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasijski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavijska kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ogija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksički pezos",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuanska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lej (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome i Principe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "Severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "Sijera-leonški leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalijski šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv. jelenska funta",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Šrilankanska rupija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Švajcarski franak",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Švedska kruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadžihistanski somon",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski bat",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Tanzanijski šiling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongonška Panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-tobagoški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Ugandski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijska kvača",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Latn.json b/library/intl/resources/currency/sr-Latn.json
new file mode 100644
index 000000000..b62497a07
--- /dev/null
+++ b/library/intl/resources/currency/sr-Latn.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Američki dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "Avganistanski avgani",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Beloruska rublja",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosansko-hercegovačka konvertibilna marka",
+ "symbol": "KM"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutanski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Evro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Foklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Holandskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irački dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Istočnokaripski dolar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Izraelski novi šekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamajčanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Južno-afrički rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski Von",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski šiling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaniška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasijski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavijska kvača",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ogija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksički pezos",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuanska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lej (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome i Principe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "Severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "Sijera-leonški leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalijski šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv. jelenska funta",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Šrilankanska rupija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Švajcarski franak",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Švedska kruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadžihistanski somon",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski bat",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Tanzanijski šiling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongonška Panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-tobagoški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Ugandski šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijska kvača",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr.json b/library/intl/resources/currency/sr.json
new file mode 100644
index 000000000..c7f741abc
--- /dev/null
+++ b/library/intl/resources/currency/sr.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "ERN": {
+ "name": "Eритрејска накфa",
+ "symbol": "ERN"
+ },
+ "KHR": {
+ "name": "Kамбоџански ријел",
+ "symbol": "KHR"
+ },
+ "TJS": {
+ "name": "Tаџихистански сомон",
+ "symbol": "TJS"
+ },
+ "AFN": {
+ "name": "Авганистански авгани",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Азербејџански манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Албански лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Алжирски динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Амерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Анголска кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Аргентински пезос",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Арубански флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Аустралијски долар",
+ "symbol": "AUD"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Бахамски долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Бахреински динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белиски долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Белоруска рубља",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Бермудски долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливијски Боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Босанско-херцеговачка конвертибилна марка",
+ "symbol": "КМ"
+ },
+ "BWP": {
+ "name": "Боцванска пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Бразилски реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Британска фунта стерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Брунејски долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Бугарски лев",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Бурундски франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутански нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануатски вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Венецуелански боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вијетнамски донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "Гамбијски даласи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гански седи",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "Гвајански долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Гватемалски кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвинејски франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтарска фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Грузијски лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Данска круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Доминикански пезос",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "Египатска фунта",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "Етиопијски бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "Замбијска квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Зеленортски ескудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Зимбабвеански долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "Израелски нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Индијска рупија",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Индонежанска рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Ирански риjал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "Исландска круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "Источнокарипски долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Јамајчански долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Јапански јен",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "Јеменски риjал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Јерменски драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Јордански динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Јужнокорејски Вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Јужносуданска фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "Казахстански тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "Кајмански долар",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Канадски долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катарски ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кенијски шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Кинески јуан",
+ "symbol": "CN¥"
+ },
+ "KGS": {
+ "name": "Киргистански сом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Колумбијски пезос",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Коморски франак",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конгоански франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Костарикански колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Кубански конвертибилни пезос",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Кубански пезос",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувајтски динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Лесото лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Либанска фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Либеријски долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Либијски динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литвански литас",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Мађарска форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Македонски денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малавијска квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Малагасијски ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "Малдивска руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Малезијски ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Марокански дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Мауританијска oгија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Маурицијска рупија",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Мексички пезос",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Мјанмарски кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбијски метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдавски леј",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монголски тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Намибијски долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Непалскa рупиja",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Нигеријска наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Никарагванска златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Нови тајвански долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Новозеландски долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Норвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Омански ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Пакистанскa рупиja",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Панамска балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуанска кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвајски гварани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перуански нуево сол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Пољски злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руандски франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Румунски леј (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Руска рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Салвадорски колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Самоанска тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Саудијски ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленска фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Севернокорејски вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "Сејшелска рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапурски долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Сиријска фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломонски долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомалијски шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Српски динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Суданска фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринамски долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Тајландски бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Танзанијски шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад-тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Туниски динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Туркменистански манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Турска лира",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "УАЕ дирхам",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Угандски шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "Узбекистански сом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "Украјинска гривна",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Уругвајски пезос",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Филипински пезос",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Фиџијски долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Фокландска фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "Хаићански гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Холандскоантилски гулден",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "Хрватска куна",
+ "symbol": "HRK"
+ },
+ "XOF": {
+ "name": "ЦФА франак БЦЕАО",
+ "symbol": "CFA"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чилеански пезос",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "Џибутански франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Швајцарски франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Шведска круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шриланканскa рупиja",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sv.json b/library/intl/resources/currency/sv.json
new file mode 100644
index 000000000..08dd8008a
--- /dev/null
+++ b/library/intl/resources/currency/sv.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algerisk dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolansk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenisk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubansk florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australisk dollar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdzjansk manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamansk dollar",
+ "symbol": "BS$"
+ },
+ "BHD": {
+ "name": "bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-dollar",
+ "symbol": "Bds$"
+ },
+ "BZD": {
+ "name": "belizisk dollar",
+ "symbol": "BZ$"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BM$"
+ },
+ "BTN": {
+ "name": "bhutanesisk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviansk boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinsk mark (konvertibel)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasiliansk real",
+ "symbol": "BR$"
+ },
+ "GBP": {
+ "name": "brittiskt pund",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarisk lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundisk franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Cayman-dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "centralafrikansk franc",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombiansk peso",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costarikansk colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "dansk krona",
+ "symbol": "Dkr"
+ },
+ "DJF": {
+ "name": "djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikansk peso",
+ "symbol": "RD$"
+ },
+ "EGP": {
+ "name": "egyptiskt pund",
+ "symbol": "EG£"
+ },
+ "ERN": {
+ "name": "eritreansk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandspund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijidollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinsk peso",
+ "symbol": "PHP"
+ },
+ "AED": {
+ "name": "Förenade Arabemiratens dirham",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanansk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltiskt pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongdollar",
+ "symbol": "HKD"
+ },
+ "INR": {
+ "name": "indisk rupie",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonesisk rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakisk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "isländsk krona",
+ "symbol": "Ikr"
+ },
+ "ILS": {
+ "name": "israelisk ny shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaica-dollar",
+ "symbol": "JM$"
+ },
+ "JPY": {
+ "name": "japansk yen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenitisk rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordansk dinar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadensisk dollar",
+ "symbol": "CAN$"
+ },
+ "CVE": {
+ "name": "kapverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kazakisk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesisk yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgizisk som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesisk franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubansk peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "kubansk peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesiskt pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiansk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauisk litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macaosk pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskisk ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "makedonisk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marockansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretansk ouquiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritisk rupie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexikansk peso",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "moçambikisk metical",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "moldavisk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolisk tögrög",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "myanmarisk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederländska Antillernas gulden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalesisk rupie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "nicaraguansk córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norsk krona",
+ "symbol": "Nkr"
+ },
+ "NZD": {
+ "name": "nyzeeländsk dollar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistansk rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayansk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polsk zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarisk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumänsk leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "rwandisk franc",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "rysk rubel",
+ "symbol": "RUB"
+ },
+ "SHP": {
+ "name": "S:t Helena-pund",
+ "symbol": "SHP"
+ },
+ "SBD": {
+ "name": "Salomondollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoransk colón",
+ "symbol": "SVC"
+ },
+ "STD": {
+ "name": "saotomeansk dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudisk riyal",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "schweizisk franc",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychellisk rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporiansk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankesisk rupie",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanesiskt pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamesisk dollar",
+ "symbol": "SRD"
+ },
+ "SEK": {
+ "name": "svensk krona",
+ "symbol": "kr"
+ },
+ "SZL": {
+ "name": "swaziländsk lilangeni",
+ "symbol": "SZL"
+ },
+ "ZAR": {
+ "name": "sydafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sydkoreansk won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "sydsudanesiskt pund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "syriskt pund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadzjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Taiwandollar",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "tanzanisk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailändsk baht",
+ "symbol": "THB"
+ },
+ "CZK": {
+ "name": "tjeckisk koruna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad och Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunisisk dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turkisk lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkmenistansk manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainsk hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungersk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "uzbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelansk bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamesisk dong",
+ "symbol": "VND"
+ },
+ "BYR": {
+ "name": "vitrysk rubel",
+ "symbol": "BYR"
+ },
+ "XOF": {
+ "name": "västafrikansk franc",
+ "symbol": "CFA"
+ },
+ "WST": {
+ "name": "västsamoansk tala",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwe-dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "östkaribisk dollar",
+ "symbol": "EC$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sw.json b/library/intl/resources/currency/sw.json
new file mode 100644
index 000000000..5ae8d2a46
--- /dev/null
+++ b/library/intl/resources/currency/sw.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani ya Afuganistani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari ya Madagaska",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht ya Tailandi",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa ya Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar ya Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano ya Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ya Ghana",
+ "symbol": "GHS"
+ },
+ "XAF": {
+ "name": "CFA faranga ya BEAC",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA faranga za BCEAO",
+ "symbol": "CFA"
+ },
+ "CRC": {
+ "name": "Colon ya Kostarika",
+ "symbol": "CRC"
+ },
+ "BAM": {
+ "name": "Convertible Mark ya Bosnia na Hezegovina",
+ "symbol": "BAM"
+ },
+ "NIO": {
+ "name": "Cordoba ya Nikaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar ya Masedonia",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar ya Serbia",
+ "symbol": "RSD"
+ },
+ "DZD": {
+ "name": "dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinari ya Iraki",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinari ya Kuwaiti",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinari ya Yordani",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Australia",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dola ya Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dola ya Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dola ya Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dola ya Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dola ya Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dola ya Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dola ya Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dola ya Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dola ya Jamaica",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dola ya Karibea ya Mashariki",
+ "symbol": "EC$"
+ },
+ "LRD": {
+ "name": "dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dola ya Nyuzilandi",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dola ya Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dola ya Suriname",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dola ya Taiwan",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "Dola ya Trinidad na Tobago",
+ "symbol": "TTD"
+ },
+ "KYD": {
+ "name": "Dola ya Visiwa vya Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dola ya Visiwa vya Solomon",
+ "symbol": "SBD"
+ },
+ "VND": {
+ "name": "Dong ya Vietinamu",
+ "symbol": "₫"
+ },
+ "AMD": {
+ "name": "Dram ya Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "Faranga ya CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "faranga ya Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "AWG": {
+ "name": "Florin ya Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint ya Hungaria",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "Gourde ya Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani ya Paragwai",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder ya Antili za Kiholanzi",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia ya Ukrania",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina ya Papua New Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip ya Laosi",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna ya Jamhuri ya Cheki",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona ya Isilandi",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona ya Uswidi",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone ya Denmaki",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone ya Norwe",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna ya Kroeshia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat ya Myama",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari ya Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek ya Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira ya Hondurasi",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu ya Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu ya Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev ya Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira ya Uturuki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas ya Lithuania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat ya Azebaijani",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat ya Turukimenistani",
+ "symbol": "TMT"
+ },
+ "MZN": {
+ "name": "Metikali ya Msumbiji",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum ya Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol ya Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga ya Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca ya Macau",
+ "symbol": "MOP"
+ },
+ "GIP": {
+ "name": "Pauni ya Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Pauni ya Lebanon",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "pauni ya Sudani Kusini",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Pauni ya Syria",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "Pauni ya Visiwa vya Falkland",
+ "symbol": "FKP"
+ },
+ "ARS": {
+ "name": "Peso ya Ajentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso ya Chile",
+ "symbol": "CLP"
+ },
+ "CUP": {
+ "name": "Peso ya Cuba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso ya Cuba Inayoweza Kubadilishwa",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso ya Dominika",
+ "symbol": "DOP"
+ },
+ "COP": {
+ "name": "Peso ya Kolombia",
+ "symbol": "COP"
+ },
+ "MXN": {
+ "name": "Peso ya Meksiko",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso ya Ufilipino",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "Peso ya Urugwai",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal ya Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real ya Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial ya Iran",
+ "symbol": "IRR"
+ },
+ "QAR": {
+ "name": "Rial ya Katari",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Rial ya Omani",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "Rial ya Yemeni",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel ya Kambodia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit ya Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Ruble ya Belarusi",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Ruble ya Urusi",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa ya Maldivi",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia ya Nepali",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia ya Pakistani",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "Rupia ya Sirilanka",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "rupia ya Ushelisheli",
+ "symbol": "SCR"
+ },
+ "IDR": {
+ "name": "Rupiah ya Indonesia",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel Mpya ya Israeli",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som ya Kirigistani",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som ya Uzibekistani",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni ya Tajikistani",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "BDT": {
+ "name": "Taka ya Bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala ya Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge ya Kazakistani",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik ya Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu ya Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won ya Korea Kaskazini",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won ya Korea Kusini",
+ "symbol": "₩"
+ },
+ "JPY": {
+ "name": "Yen ya Japani",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "yuan ya Uchina",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "PLN": {
+ "name": "Zloty ya Polandi",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/swc.json b/library/intl/resources/currency/swc.json
new file mode 100644
index 000000000..5c1e38f95
--- /dev/null
+++ b/library/intl/resources/currency/swc.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "FC"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta-MY.json b/library/intl/resources/currency/ta-MY.json
new file mode 100644
index 000000000..d563b0f7a
--- /dev/null
+++ b/library/intl/resources/currency/ta-MY.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃப்ராங்க் BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "அங்கோலன் க்வான்ஸா",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசர்பைஜானி மனத்",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிக்க டாலர்",
+ "symbol": "$"
+ },
+ "ARS": {
+ "name": "அர்ஜென்டினா பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "அருபன் ஃப்ளோரின்",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அல்பேனியன் லெக்",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அல்ஜீரியன் தினார்",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃப்கான் ஆஃப்கானி",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆர்மேனியன் ட்ராம்",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸ்திரேலிய டாலர்",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இந்திய ரூபாய்",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இந்தோனேஷியன் ருபியா",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன் ரியால்",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன் நக்ஃபா",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலங்கை ரூபாய்",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸ்ரேலி நியூ ஷிகேல்",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராக்கி தினார்",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உக்ரைனியன் ஹிரைவ்னியா",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாண்டன் ஷில்லிங்",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உருகுவேயன் பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸ்பெக்கிஸ்தான் சோம்",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிப்திய பவுண்டு",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எத்தியோப்பியன் பிர்",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "ஏமனி ரியால்",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "ஐக்கிய அரபு எமிரேட்ஸ் திர்ஹம்",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "ஐஸ்லாண்டிக் க்ரோனா",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியால்",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃப்ராங்க் (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃப்ராங்க் (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாக்லாந்து தீவுகள் பவுண்டு",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன் டாலர்",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கத்தாரி ரியால்",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கம்போடியன் ரியெல்",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன் ஃப்ராங்க்",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ் டாலர்",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன் டாலர்",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸ்தானி டென்கே",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காங்கோலீஸ் ஃப்ராங்க்",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன் சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிப்ரால்டர் பவுண்ட்",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன் கன்வெர்டிபில் பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன் பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிர்கிஸ்தானி சோம்",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழக்கு கரீபியன் டாலர்",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன் ஃப்ராங்க்",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "குரோஷியன் குனா",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "குவாடெமெலன் குயூட்ஸல்",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "குவைத்தி தினார்",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கென்யன் ஷில்லிங்",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப் வெர்டியன் எஸ்குடோ",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேம்பியன் தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன் தீவுகள் டாலர்",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலம்பியன் பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸ்டா ரிகன் கொலோன்",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான் தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவுதி ரியால்",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன் தீவுகள் டாலர்",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ் டோமி மற்றும் பிரின்ஸ்பி டோப்ரா",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிங்கப்பூர் டாலர்",
+ "symbol": "S$"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ் ருபீ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன் லியோன்",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன் பவுண்ட்",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன் பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யுவான்",
+ "symbol": "CN¥"
+ },
+ "SRD": {
+ "name": "சுரினாமீஸ் டாலர்",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சுவாஸி லிலாங்கனி",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சுவிஸ் ஃப்ராங்க்",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ் பவுண்டு",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக் குடியரசு கொருனா",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயின்ட் ஹெலேனா பவுண்டு",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செர்பியன் தினார்",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷில்லிங்",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ் க்ரோன்",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட் மற்றும் டோபாகோ டாலர்",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிக்கன் பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தன்ஸானியன் ஷில்லிங்",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸ்தானி சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய் பாட்",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "துர்க்மேனிஸ்தானி மனத்",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "துருக்கிஷ் லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "துனிஷியன் தினார்",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெற்கு சூடானீஸ் பவுண்டு",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென் ஆப்ரிக்க ராண்ட்",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென் கொரிய வான்",
+ "symbol": "₩"
+ },
+ "TOP": {
+ "name": "தொங்கான் பங்கா",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன் டாலர்",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நார்வேஜியன் க்ரோன்",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகுவான் கோர்டோபா",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாந்து டாலர்",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர்",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ் ரூபாய்",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன் நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பங்களாதேஷி டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபுவா நியூ கினியன் கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகுவன் குவாரானி",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன் பால்போபா",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹ்ரைனி தினார்",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன் டாலர்",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸ்தானி ரூபாய்",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பார்பேடியன் டாலர்",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிட்டிஷ் பவுண்ட் ஸ்டெர்லிங்",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன் ரியால்",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிப்பைன் பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "புதிய தைவான் டாலர்",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "புருண்டியன் ஃப்ராங்க்",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "புரூனே டாலர்",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "புல்கேரியன் லெவ்",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூட்டானிஷ் நிகுல்ட்ரம்",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெர்முடன் டாலர்",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெருவியன் நியூவோ சோல்",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலருசியன் ரூபில்",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ் டாலர்",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன் பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போட்ஸ்வானா புலா",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ் ஸ்லாட்டி",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸ்னியா-ஹெர்ஸேகோவினா கன்வெர்டிபில் மார்க்",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மங்கோலியன் டுக்ரிக்",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி ஏரியரி",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன் குவாச்சா",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேசிய ரிங்கிட்",
+ "symbol": "RM"
+ },
+ "MDL": {
+ "name": "மால்டோவன் லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலத்தீவு ருஃபியா",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியான்மர் கியாத்",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெக்ஸிகன் பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ் படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன் தினார்",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாம்பிகேன் மெடிகல்",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராக்கோ திர்ஹாம்",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன் ஒகுய்யா",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன் ருபீ",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன் ரூபிள்",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ருவாண்டா ஃப்ராங்க்",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன் லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவுட்டியன் கிப்",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதுவேனியன் லிடஸ்",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன் தினார்",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோட்டி",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ் பவுண்ட்",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன் டாலர்",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வான்",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனுவாட்டு வாட்டு",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியட்நாமீஸ் டாங்",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "வெனிசுலியன் போலிவர்",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜப்பானிய யென்",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "ஜமைக்கான் டாலர்",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவ்டியென் ஃப்ராங்க்",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியார்ஜியன் லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோர்டானியன் டைனர்",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸ்வேதிஷ் க்ரோனா",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாம்பியன் குவாசா",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹங்கேரியன் ஃபோரின்ட்",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேத்தியன் கோர்டே",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாங்காங் டாலர்",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோன்டூரன் லெம்பீரா",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta-SG.json b/library/intl/resources/currency/ta-SG.json
new file mode 100644
index 000000000..be3db0c1d
--- /dev/null
+++ b/library/intl/resources/currency/ta-SG.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃப்ராங்க் BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "அங்கோலன் க்வான்ஸா",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசர்பைஜானி மனத்",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிக்க டாலர்",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "அர்ஜென்டினா பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "அருபன் ஃப்ளோரின்",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அல்பேனியன் லெக்",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அல்ஜீரியன் தினார்",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃப்கான் ஆஃப்கானி",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆர்மேனியன் ட்ராம்",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸ்திரேலிய டாலர்",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இந்திய ரூபாய்",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இந்தோனேஷியன் ருபியா",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன் ரியால்",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன் நக்ஃபா",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலங்கை ரூபாய்",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸ்ரேலி நியூ ஷிகேல்",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராக்கி தினார்",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உக்ரைனியன் ஹிரைவ்னியா",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாண்டன் ஷில்லிங்",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உருகுவேயன் பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸ்பெக்கிஸ்தான் சோம்",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிப்திய பவுண்டு",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எத்தியோப்பியன் பிர்",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "ஏமனி ரியால்",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "ஐக்கிய அரபு எமிரேட்ஸ் திர்ஹம்",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "ஐஸ்லாண்டிக் க்ரோனா",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியால்",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃப்ராங்க் (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃப்ராங்க் (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாக்லாந்து தீவுகள் பவுண்டு",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன் டாலர்",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கத்தாரி ரியால்",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கம்போடியன் ரியெல்",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன் ஃப்ராங்க்",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ் டாலர்",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன் டாலர்",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸ்தானி டென்கே",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காங்கோலீஸ் ஃப்ராங்க்",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன் சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிப்ரால்டர் பவுண்ட்",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன் கன்வெர்டிபில் பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன் பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிர்கிஸ்தானி சோம்",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழக்கு கரீபியன் டாலர்",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன் ஃப்ராங்க்",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "குரோஷியன் குனா",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "குவாடெமெலன் குயூட்ஸல்",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "குவைத்தி தினார்",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கென்யன் ஷில்லிங்",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப் வெர்டியன் எஸ்குடோ",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேம்பியன் தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன் தீவுகள் டாலர்",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலம்பியன் பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸ்டா ரிகன் கொலோன்",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான் தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவுதி ரியால்",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன் தீவுகள் டாலர்",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ் டோமி மற்றும் பிரின்ஸ்பி டோப்ரா",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிங்கப்பூர் டாலர்",
+ "symbol": "$"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ் ருபீ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன் லியோன்",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன் பவுண்ட்",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன் பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யுவான்",
+ "symbol": "CN¥"
+ },
+ "SRD": {
+ "name": "சுரினாமீஸ் டாலர்",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சுவாஸி லிலாங்கனி",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சுவிஸ் ஃப்ராங்க்",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ் பவுண்டு",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக் குடியரசு கொருனா",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயின்ட் ஹெலேனா பவுண்டு",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செர்பியன் தினார்",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷில்லிங்",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ் க்ரோன்",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட் மற்றும் டோபாகோ டாலர்",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிக்கன் பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தன்ஸானியன் ஷில்லிங்",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸ்தானி சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய் பாட்",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "துர்க்மேனிஸ்தானி மனத்",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "துருக்கிஷ் லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "துனிஷியன் தினார்",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெற்கு சூடானீஸ் பவுண்டு",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென் ஆப்ரிக்க ராண்ட்",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென் கொரிய வான்",
+ "symbol": "₩"
+ },
+ "TOP": {
+ "name": "தொங்கான் பங்கா",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன் டாலர்",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நார்வேஜியன் க்ரோன்",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகுவான் கோர்டோபா",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாந்து டாலர்",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர்",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ் ரூபாய்",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன் நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பங்களாதேஷி டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபுவா நியூ கினியன் கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகுவன் குவாரானி",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன் பால்போபா",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹ்ரைனி தினார்",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன் டாலர்",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸ்தானி ரூபாய்",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பார்பேடியன் டாலர்",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிட்டிஷ் பவுண்ட் ஸ்டெர்லிங்",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன் ரியால்",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிப்பைன் பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "புதிய தைவான் டாலர்",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "புருண்டியன் ஃப்ராங்க்",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "புரூனே டாலர்",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "புல்கேரியன் லெவ்",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூட்டானிஷ் நிகுல்ட்ரம்",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெர்முடன் டாலர்",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெருவியன் நியூவோ சோல்",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலருசியன் ரூபில்",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ் டாலர்",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன் பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போட்ஸ்வானா புலா",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ் ஸ்லாட்டி",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸ்னியா-ஹெர்ஸேகோவினா கன்வெர்டிபில் மார்க்",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மங்கோலியன் டுக்ரிக்",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி ஏரியரி",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன் குவாச்சா",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேசிய ரிங்கிட்",
+ "symbol": "RM"
+ },
+ "MDL": {
+ "name": "மால்டோவன் லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலத்தீவு ருஃபியா",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியான்மர் கியாத்",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெக்ஸிகன் பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ் படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன் தினார்",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாம்பிகேன் மெடிகல்",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராக்கோ திர்ஹாம்",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன் ஒகுய்யா",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன் ருபீ",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன் ரூபிள்",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ருவாண்டா ஃப்ராங்க்",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன் லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவுட்டியன் கிப்",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதுவேனியன் லிடஸ்",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன் தினார்",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோட்டி",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ் பவுண்ட்",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன் டாலர்",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வான்",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனுவாட்டு வாட்டு",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியட்நாமீஸ் டாங்",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "வெனிசுலியன் போலிவர்",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜப்பானிய யென்",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "ஜமைக்கான் டாலர்",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவ்டியென் ஃப்ராங்க்",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியார்ஜியன் லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோர்டானியன் டைனர்",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸ்வேதிஷ் க்ரோனா",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாம்பியன் குவாசா",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹங்கேரியன் ஃபோரின்ட்",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேத்தியன் கோர்டே",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாங்காங் டாலர்",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோன்டூரன் லெம்பீரா",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta.json b/library/intl/resources/currency/ta.json
new file mode 100644
index 000000000..5af042dda
--- /dev/null
+++ b/library/intl/resources/currency/ta.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃப்ராங்க் BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "அங்கோலன் க்வான்ஸா",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசர்பைஜானி மனத்",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிக்க டாலர்",
+ "symbol": "$"
+ },
+ "ARS": {
+ "name": "அர்ஜென்டினா பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "அருபன் ஃப்ளோரின்",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அல்பேனியன் லெக்",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அல்ஜீரியன் தினார்",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃப்கான் ஆஃப்கானி",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆர்மேனியன் ட்ராம்",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸ்திரேலிய டாலர்",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இந்திய ரூபாய்",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இந்தோனேஷியன் ருபியா",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன் ரியால்",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன் நக்ஃபா",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலங்கை ரூபாய்",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸ்ரேலி நியூ ஷிகேல்",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராக்கி தினார்",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உக்ரைனியன் ஹிரைவ்னியா",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாண்டன் ஷில்லிங்",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உருகுவேயன் பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸ்பெக்கிஸ்தான் சோம்",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிப்திய பவுண்டு",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எத்தியோப்பியன் பிர்",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "ஏமனி ரியால்",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "ஐக்கிய அரபு எமிரேட்ஸ் திர்ஹம்",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "ஐஸ்லாண்டிக் க்ரோனா",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியால்",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃப்ராங்க் (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃப்ராங்க் (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாக்லாந்து தீவுகள் பவுண்டு",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன் டாலர்",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கத்தாரி ரியால்",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கம்போடியன் ரியெல்",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன் ஃப்ராங்க்",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ் டாலர்",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன் டாலர்",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸ்தானி டென்கே",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காங்கோலீஸ் ஃப்ராங்க்",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன் சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிப்ரால்டர் பவுண்ட்",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன் கன்வெர்டிபில் பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன் பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிர்கிஸ்தானி சோம்",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழக்கு கரீபியன் டாலர்",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன் ஃப்ராங்க்",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "குரோஷியன் குனா",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "குவாடெமெலன் குயூட்ஸல்",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "குவைத்தி தினார்",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கென்யன் ஷில்லிங்",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப் வெர்டியன் எஸ்குடோ",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேம்பியன் தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன் தீவுகள் டாலர்",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலம்பியன் பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸ்டா ரிகன் கொலோன்",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான் தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவுதி ரியால்",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன் தீவுகள் டாலர்",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ் டோமி மற்றும் பிரின்ஸ்பி டோப்ரா",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிங்கப்பூர் டாலர்",
+ "symbol": "SGD"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ் ருபீ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன் லியோன்",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன் பவுண்ட்",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன் பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யுவான்",
+ "symbol": "CN¥"
+ },
+ "SRD": {
+ "name": "சுரினாமீஸ் டாலர்",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சுவாஸி லிலாங்கனி",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சுவிஸ் ஃப்ராங்க்",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ் பவுண்டு",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக் குடியரசு கொருனா",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயின்ட் ஹெலேனா பவுண்டு",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செர்பியன் தினார்",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷில்லிங்",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ் க்ரோன்",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட் மற்றும் டோபாகோ டாலர்",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிக்கன் பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தன்ஸானியன் ஷில்லிங்",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸ்தானி சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய் பாட்",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "துர்க்மேனிஸ்தானி மனத்",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "துருக்கிஷ் லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "துனிஷியன் தினார்",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெற்கு சூடானீஸ் பவுண்டு",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென் ஆப்ரிக்க ராண்ட்",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென் கொரிய வான்",
+ "symbol": "₩"
+ },
+ "TOP": {
+ "name": "தொங்கான் பங்கா",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன் டாலர்",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நார்வேஜியன் க்ரோன்",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகுவான் கோர்டோபா",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாந்து டாலர்",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர்",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ் ரூபாய்",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன் நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பங்களாதேஷி டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபுவா நியூ கினியன் கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகுவன் குவாரானி",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன் பால்போபா",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹ்ரைனி தினார்",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன் டாலர்",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸ்தானி ரூபாய்",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பார்பேடியன் டாலர்",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிட்டிஷ் பவுண்ட் ஸ்டெர்லிங்",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன் ரியால்",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிப்பைன் பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "புதிய தைவான் டாலர்",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "புருண்டியன் ஃப்ராங்க்",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "புரூனே டாலர்",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "புல்கேரியன் லெவ்",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூட்டானிஷ் நிகுல்ட்ரம்",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெர்முடன் டாலர்",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெருவியன் நியூவோ சோல்",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலருசியன் ரூபில்",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ் டாலர்",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன் பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போட்ஸ்வானா புலா",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ் ஸ்லாட்டி",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸ்னியா-ஹெர்ஸேகோவினா கன்வெர்டிபில் மார்க்",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மங்கோலியன் டுக்ரிக்",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி ஏரியரி",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன் குவாச்சா",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேஷியன் ரிங்கித்",
+ "symbol": "MYR"
+ },
+ "MDL": {
+ "name": "மால்டோவன் லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலத்தீவு ருஃபியா",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியான்மர் கியாத்",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெக்ஸிகன் பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ் படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன் தினார்",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாம்பிகேன் மெடிகல்",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராக்கோ திர்ஹாம்",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன் ஒகுய்யா",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன் ருபீ",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன் ரூபிள்",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ருவாண்டா ஃப்ராங்க்",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன் லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவுட்டியன் கிப்",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதுவேனியன் லிடஸ்",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன் தினார்",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோட்டி",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ் பவுண்ட்",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன் டாலர்",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வான்",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனுவாட்டு வாட்டு",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியட்நாமீஸ் டாங்",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "வெனிசுலியன் போலிவர்",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜப்பானிய யென்",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "ஜமைக்கான் டாலர்",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவ்டியென் ஃப்ராங்க்",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியார்ஜியன் லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோர்டானியன் டைனர்",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸ்வேதிஷ் க்ரோனா",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாம்பியன் குவாசா",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹங்கேரியன் ஃபோரின்ட்",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேத்தியன் கோர்டே",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாங்காங் டாலர்",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோன்டூரன் லெம்பீரா",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/te.json b/library/intl/resources/currency/te.json
new file mode 100644
index 000000000..1b7457159
--- /dev/null
+++ b/library/intl/resources/currency/te.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "అంగోలాన్ క్వాన్‌జా",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "అజర్బైజాన్ మానట్",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "అమెరికన్ డ్రామ్",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "అమెరికా డాలర్",
+ "symbol": "$"
+ },
+ "AWG": {
+ "name": "అరుబన్ ఫ్లోరిన్",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "అర్జెంటీనా పెసో",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "అల్జీరియన్ దీనార్",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ఆఫ్ఘాన్ ఆఫ్ఘాని",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ఆల్బేనియన్ లేక్",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "ఆస్ట్రేలియన్ డాలర్",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "ఇండోనేషియా రూపాయి",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ఇథియోపియన్ బర్",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ఇరాకీ దీనార్",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ఇరానియన్ రీయల్",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ఈజిప్షియన్ పౌండ్",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ఉక్రయినియన్ హ్రివ్‌నియా",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "ఉజ్‌బెకిస్తాన్ సౌమ్",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ఉత్తర కొరియా వోన్",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ఉరుగ్వెయన్ పెసో",
+ "symbol": "UYU"
+ },
+ "YER": {
+ "name": "ఎమునీ రీయల్",
+ "symbol": "YER"
+ },
+ "ERN": {
+ "name": "ఎరిట్రీన్ నక్ఫా",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "ఐరాయిలి న్యూ షెక్యెల్",
+ "symbol": "₪"
+ },
+ "ISK": {
+ "name": "ఐస్లాండిక్ క్రోనా",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ఒమాని రీయల్",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "కాంబోడియన్ రీల్",
+ "symbol": "KHR"
+ },
+ "KGS": {
+ "name": "కిర్గిస్థాని సౌమ్",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "కువైట్ దీనార్",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "కెనడియన్ డాలర్",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "కెన్యాన్ షిల్లింగ్",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "కేప్ వెర్డియన్ ఎస్కుడో",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "కేమాన్ దీవుల డాలర్",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "కొంగోలిస్ ఫ్రాంక్",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "కొమోరియన్ ఫ్రాంక్",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "కొలంబియన్ పెసో",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "కోస్టా రికన్ కోలోన్",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "క్యూబన్ కన్వర్టబుల్ పెసో",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "క్యూబన్ పెసో",
+ "symbol": "CUP"
+ },
+ "TWD": {
+ "name": "క్రొత్త తైవాన్ డాలర్",
+ "symbol": "NT$"
+ },
+ "HRK": {
+ "name": "క్రొయేషియన్ క్యూన",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "క్వాటరి రీయల్",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "ఖజికిస్థాన్ టెంగే",
+ "symbol": "KZT"
+ },
+ "GMD": {
+ "name": "గాంబియన్ దలాసి",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "గానెయన్ సెడి",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "గుయనియాస్ డాలర్",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "గ్యుటెమాలన్ క్వెట్‌జల్",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "గ్వినియన్ ఫ్రాంక్",
+ "symbol": "GNF"
+ },
+ "CLP": {
+ "name": "చిలియన్ పెసో",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "చెక్ రిపబ్లిక్ కోరునా",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "చైనా దేశ యువాన్",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "జపాను దేశ యెస్",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "జమైకన్ డాలర్",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "జాంబియన్ క్వాచా",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "జార్జియన్ లారి",
+ "symbol": "GEL"
+ },
+ "DJF": {
+ "name": "జిబోటియన్ ఫ్రాంక్",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "జిబ్రల్‌టూర్ పౌండ్",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "జోర్‌డానియన్ దీనార్",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "టాంజానియన్ షిల్లింగ్",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "టోంగాన్ పాంʻగా",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ట్రినిడాడ్ మరియు టొబాగో డాలర్",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "డానిష్ క్రోన్",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "డోమినికన్ పెసో",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "తజికిస్థాన్ సమోని",
+ "symbol": "TJS"
+ },
+ "TND": {
+ "name": "తునీషియన్ దీనార్",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "తుర్కిష్ లిరా",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "తుర్క్‌మెనిస్థాని మనాట్",
+ "symbol": "TMT"
+ },
+ "XCD": {
+ "name": "తూర్పు కరీబియన్ డాలర్",
+ "symbol": "EC$"
+ },
+ "THB": {
+ "name": "థాయ్ బాట్",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "దక్షిణ ఆఫ్రికా ర్యాండ్",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "దక్షిణ కొరియా వోన్",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "దక్షిణ సుడానీస్ పౌండ్",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "నమిబియన్ డాలర్",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "నార్వేజీయన్ క్రోన్",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "నికరగ్యుయన్ కొర్‌డుబు",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "నెదర్లాండ్స్ యాంటిల్లియన్ గిల్‌డర్",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "నేపాలీయుల రూపాయి",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "నైజీరియన్ నైరా",
+ "symbol": "NGN"
+ },
+ "NZD": {
+ "name": "న్యూజిలాండ్ డాలర్",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "పనామనియన్ బల్బోవ",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "పప్యూ న్యూ గ్యినియన్ కినా",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "పరగ్వాయన్ గ్వారని",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "పాకిస్థాన్ రూపాయి",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "పెరువియన్ న్యూవో సోల్",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "పోలిష్ జ్లోటీ",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ఫాక్‌ల్యాండ్ దీవులు పౌండ్",
+ "symbol": "FKP"
+ },
+ "PHP": {
+ "name": "ఫిలిప్పిన్ పెసో",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ఫీజియన్ డాలర్",
+ "symbol": "FJD"
+ },
+ "BBD": {
+ "name": "బర్బాడియన్ డాలర్",
+ "symbol": "BBD"
+ },
+ "BGN": {
+ "name": "బల్గేరియన్ లేవ్",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "బహామియన్ డాలర్",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "బహ్రైని దీనార్",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "బాంగ్లాదేశ్ టాకా",
+ "symbol": "BDT"
+ },
+ "BIF": {
+ "name": "బురిండియన్ ఫ్రాంక్",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "బెర్ముడన్ డాలర్",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "బెలరూసియన్ రూబల్",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "బెలీజ్ డాలర్",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "బొలీవియన్ బొలీవియానో",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "బోట్స్‌వానా పులా",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "బోస్నియా-హెర్జగోవినా మార్పిడి చెయ్యగలిగే మార్క్",
+ "symbol": "BAM"
+ },
+ "GBP": {
+ "name": "బ్రిటిష్ పౌండ్ స్టెర్లింగ్",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "బ్రూనై డాలర్",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "బ్రెజిలియన్ రియల్",
+ "symbol": "R$"
+ },
+ "BTN": {
+ "name": "భూటానీయుల గుల్‌ట్రుమ్",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "మంగోలియన్ టుగ్రిక్",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "మకనీస్ పటాక",
+ "symbol": "MOP"
+ },
+ "MMK": {
+ "name": "మయన్మార్ క్యాట్",
+ "symbol": "MMK"
+ },
+ "MGA": {
+ "name": "మలగసీ అరియరీ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "మలావియన్ క్వాచా",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "మలేషియా రింగ్గిట్",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "మారిషన్ రూపాయి",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "మాల్దీవియన్ రుఫియా",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "మెక్సికన్ పెసో",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "మెసిడోనియన్ దినార్",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "మొజాంబికన్ మెటికల్",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "మోరోకన్ దిర్హుమ్",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "మోల్‌డోవన్ ల్యూ",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "మౌరిటానియన్ ఒగ్యియా",
+ "symbol": "MRO"
+ },
+ "UGX": {
+ "name": "యుగండన్ షిల్లింగ్",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "యునైటెడ్ ఆరబ్ ఎమిరేట్స్ దిరామ్",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "యురొ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "రష్యన్ రూబల్",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "రూపాయి",
+ "symbol": "₹"
+ },
+ "RON": {
+ "name": "రోమానియాన్ లెయు",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ర్వానడాన్ ఫ్రాంక్",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "లాటియన్ కిప్",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "లిథోనియన్ లీటాస్",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "లిబియన్ దీనార్",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "లిబేరియన్ డాలర్",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "లెబనీస్ పౌండ్",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "లెసోధో లోటి",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "వనాటు వటు",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "వియత్నామీయుల డాంగ్",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "వెనుజులా బోలివర్",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "శ్రీలంక రూపాయి",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "సమోయన్ తాలా",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "సావో టోమ్ మరియు ప్రిన్సిపి డోబ్రా",
+ "symbol": "STD"
+ },
+ "XAF": {
+ "name": "సిఎఫ్‌ఎ ఫ్రాంక్ బిఇఏసి",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "సిఎఫ్‌ఎ ఫ్రాంక్ బిసిఈఏఓ",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "సిఎఫ్‌పి ఫ్రాంక్",
+ "symbol": "CFPF"
+ },
+ "SGD": {
+ "name": "సింగపూర్ డాలర్",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "సిరీయన్ పౌండ్",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "సీయిరు లియోనియన్ లీయోన్",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "సుడానీస్ పౌండ్",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "సురినామీయుల డాలర్",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "సెయింట్ హెలెనా పౌండ్",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "సెయిచెల్లోయిస్ రూపాయి",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "సెర్బియన్ దీనార్",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "సొమాలి షిల్లింగ్",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "సోలోమన్ దీవుల డాలర్",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "సౌది రియల్",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "స్వాజి లిలాన్గేని",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "స్విస్ ఫ్రాంక్",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "స్వీడిష్ క్రోనా",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "హంగేరియన్ ఫోరిన్ట్",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "హాంకాంగ్ డాలర్",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "హైటియన్ గ్వోర్డే",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "హోండురన్ లెమిపిరా",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/teo.json b/library/intl/resources/currency/teo.json
new file mode 100644
index 000000000..f80416729
--- /dev/null
+++ b/library/intl/resources/currency/teo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ZAR": {
+ "name": "Ango’otol lok’ Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Ango’otol lok’ Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ango’otol lok’ Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ango’otol lok’ Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Ango’otol lok’ Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Ango’otol lok’ Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Ango’otol lok’ Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Ango’otol lok’ Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ango’otol lok’ CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ango’otol lok’ CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Ango’otol lok’ China",
+ "symbol": "CN¥"
+ },
+ "ERN": {
+ "name": "Ango’otol lok’ Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Ango’otol lok’ Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "INR": {
+ "name": "Ango’otol lok’ India",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Ango’otol lok’ Jibuti",
+ "symbol": "DJF"
+ },
+ "KES": {
+ "name": "Ango’otol lok’ Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "Ango’otol lok’ Kepuvede",
+ "symbol": "CVE"
+ },
+ "JPY": {
+ "name": "Ango’otol lok’ Kijapani",
+ "symbol": "JP¥"
+ },
+ "KMF": {
+ "name": "Ango’otol lok’ Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ango’otol lok’ Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Ango’otol lok’ Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Ango’otol lok’ Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Ango’otol lok’ Malawi",
+ "symbol": "MWK"
+ },
+ "MUR": {
+ "name": "Ango’otol lok’ Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Ango’otol lok’ Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Ango’otol lok’ Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Ango’otol lok’ Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Ango’otol lok’ Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Ango’otol lok’ Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Ango’otol lok’ Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Ango’otol lok’ Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Ango’otol lok’ Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Ango’otol lok’ Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Ango’otol lok’ Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Ango’otol lok’ Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Ango’otol lok’ Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Ango’otol lok’ Uganda",
+ "symbol": "USh"
+ },
+ "ETB": {
+ "name": "Ango’otol lok’ Uhabeshi",
+ "symbol": "ETB"
+ },
+ "CHF": {
+ "name": "Ango’otol lok’ Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Ango’otol lok’ Zambia",
+ "symbol": "ZMW"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "edola lok’ Amareka",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "edola lok’ Liberia",
+ "symbol": "LRD"
+ },
+ "CAD": {
+ "name": "Edola lok’Kanada",
+ "symbol": "CA$"
+ },
+ "EGP": {
+ "name": "Epaunt lok’ Misri",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "Epaunt Lok’ Sudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Epaunt lok’ Uingereza",
+ "symbol": "£"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/th.json b/library/intl/resources/currency/th.json
new file mode 100644
index 000000000..b011356a8
--- /dev/null
+++ b/library/intl/resources/currency/th.json
@@ -0,0 +1,634 @@
+{
+ "AOA": {
+ "name": "กวานซาแองโกลา",
+ "symbol": "AOA"
+ },
+ "PYG": {
+ "name": "กวารานีปารากวัย",
+ "symbol": "PYG"
+ },
+ "NIO": {
+ "name": "กอร์โดบานิการากัว",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "กิลเดอร์เนเธอร์แลนด์แอนทิลลิส",
+ "symbol": "ANG"
+ },
+ "PGK": {
+ "name": "กีนาปาปัวนิวกินี",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "กีบลาว",
+ "symbol": "LAK"
+ },
+ "HTG": {
+ "name": "กูร์ดเฮติ",
+ "symbol": "HTG"
+ },
+ "CRC": {
+ "name": "โกลองคอสตาริกา",
+ "symbol": "CRC"
+ },
+ "ZMW": {
+ "name": "ควาชาแซมเบีย",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "ควาชามาลาวี",
+ "symbol": "MWK"
+ },
+ "HRK": {
+ "name": "คูนาโครเอเชีย",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "เควตซัลกัวเตมาลา",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "โครนเดนมาร์ก",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "โครนนอร์เวย์",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "โครนาสวีเดน",
+ "symbol": "SEK"
+ },
+ "ISK": {
+ "name": "โครนาไอซ์แลนด์",
+ "symbol": "ISK"
+ },
+ "CZK": {
+ "name": "โครูนาสาธารณรัฐเช็ก",
+ "symbol": "CZK"
+ },
+ "SVC": {
+ "name": "โคลอนเอลซัลวาดอร์",
+ "symbol": "SVC"
+ },
+ "MMK": {
+ "name": "จ๊าตพม่า",
+ "symbol": "MMK"
+ },
+ "KES": {
+ "name": "ชิลลิ่งเคนยา",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "ชิลลิงโซมาเลีย",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ชิลลิงแทนซาเนีย",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "ชิลลิงยูกันดา",
+ "symbol": "UGX"
+ },
+ "PLN": {
+ "name": "ซลอตีโปแลนด์",
+ "symbol": "PLN"
+ },
+ "KGS": {
+ "name": "ซอมคีร์กีซสถาน",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "ซอมอุซเบกิสถาน",
+ "symbol": "UZS"
+ },
+ "GHS": {
+ "name": "เซดีกานา",
+ "symbol": "GHS"
+ },
+ "TJS": {
+ "name": "โซโมนิทาจิกิสถาน",
+ "symbol": "TJS"
+ },
+ "VND": {
+ "name": "ดองเวียดนาม",
+ "symbol": "₫"
+ },
+ "STD": {
+ "name": "ดอบราเซาตูเมและปรินซิปี",
+ "symbol": "STD"
+ },
+ "GYD": {
+ "name": "ดอลลาร์กายอานา",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "ดอลลาร์แคนาดา",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "ดอลลาร์แคริบเบียนตะวันออก",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ดอลลาร์จาเมกา",
+ "symbol": "JMD"
+ },
+ "ZWL": {
+ "name": "ดอลลาร์ซิมบับเว (2009)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "ดอลลาร์ซูรินาเม",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "ดอลลาร์ตรินิแดดและโตเบโก",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "ดอลลาร์ไต้หวันใหม่",
+ "symbol": "NT$"
+ },
+ "NAD": {
+ "name": "ดอลลาร์นามิเบีย",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ดอลลาร์นิวซีแลนด์",
+ "symbol": "NZ$"
+ },
+ "BND": {
+ "name": "ดอลลาร์บรูไน",
+ "symbol": "BND"
+ },
+ "BBD": {
+ "name": "ดอลลาร์บาร์เบโดส",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ดอลลาร์บาฮามาส",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "ดอลลาร์เบลีซ",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "ดอลลาร์เบอร์มิวดา",
+ "symbol": "BMD"
+ },
+ "FJD": {
+ "name": "ดอลลาร์ฟิจิ",
+ "symbol": "FJD"
+ },
+ "LRD": {
+ "name": "ดอลลาร์ไลบีเรีย",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "ดอลลาร์สหรัฐ",
+ "symbol": "US$"
+ },
+ "SGD": {
+ "name": "ดอลลาร์สิงคโปร์",
+ "symbol": "SGD"
+ },
+ "KYD": {
+ "name": "ดอลลาร์หมู่เกาะเคย์แมน",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "ดอลลาร์หมู่เกาะโซโลมอน",
+ "symbol": "SBD"
+ },
+ "AUD": {
+ "name": "ดอลลาร์ออสเตรเลีย",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "ดอลลาร์ฮ่องกง",
+ "symbol": "HK$"
+ },
+ "GMD": {
+ "name": "ดาลาซีแกมเบีย",
+ "symbol": "GMD"
+ },
+ "KWD": {
+ "name": "ดีนาร์คูเวต",
+ "symbol": "KWD"
+ },
+ "JOD": {
+ "name": "ดีนาร์จอร์แดน",
+ "symbol": "JOD"
+ },
+ "RSD": {
+ "name": "ดีนาร์เซอร์เบีย",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "ดีนาร์ตูนิเซีย",
+ "symbol": "TND"
+ },
+ "BHD": {
+ "name": "ดีนาร์บาห์เรน",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "ดีนาร์มาซิโดเนีย",
+ "symbol": "MKD"
+ },
+ "LYD": {
+ "name": "ดีนาร์ลิเบีย",
+ "symbol": "LYD"
+ },
+ "IQD": {
+ "name": "ดีนาร์อิรัก",
+ "symbol": "IQD"
+ },
+ "DZD": {
+ "name": "ดีนาร์แอลจีเรีย",
+ "symbol": "DZD"
+ },
+ "MAD": {
+ "name": "ดีแรห์มโมร็อกโก",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "เดอร์แฮมสหรัฐอาหรับเอมิเรตส์",
+ "symbol": "AED"
+ },
+ "AMD": {
+ "name": "แดรมอาร์เมเนีย",
+ "symbol": "AMD"
+ },
+ "BDT": {
+ "name": "ตากาบังกลาเทศ",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "ทาลาซามัว",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "ทูกริกมองโกเลีย",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "เทงเจคาซัคสถาน",
+ "symbol": "KZT"
+ },
+ "ILS": {
+ "name": "นิวเชเกลอิสราเอล",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "นูโวซอลเปรู",
+ "symbol": "PEN"
+ },
+ "ERN": {
+ "name": "แนกฟาเอริเทรีย",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ไนราไนจีเรีย",
+ "symbol": "NGN"
+ },
+ "PAB": {
+ "name": "บัลบัวปานามา",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "บาทไทย",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "เบอรร์เอธิโอเปีย",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "โบลิวาร์เวเนซุเอลา",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "โบลิเวียโนโบลิเวีย",
+ "symbol": "BOB"
+ },
+ "SYP": {
+ "name": "ปอนด์ซีเรีย",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ปอนด์ซูดาน",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "ปอนด์ซูดานใต้",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "ปอนด์เซนต์เฮเลนา",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "ปอนด์ยิบรอลตาร์",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "ปอนด์เลบานอน",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "ปอนด์สเตอร์ลิง (สหราชอาณาจักร)",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "ปอนด์หมู่เกาะฟอล์กแลนด์",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "ปอนด์อียิปต์",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "ปาตากามาเก๊า",
+ "symbol": "MOP"
+ },
+ "BWP": {
+ "name": "ปูลาบอตสวานา",
+ "symbol": "BWP"
+ },
+ "CUP": {
+ "name": "เปโซคิวบา",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "เปโซคิวบา (แปลงสภาพ)",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "เปโซโคลอมเบีย",
+ "symbol": "COP"
+ },
+ "CLP": {
+ "name": "เปโซชิลี",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "เปโซโดมินิกัน",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "เปโซฟิลิปปินส์",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "เปโซเม็กซิโก",
+ "symbol": "MX$"
+ },
+ "ARS": {
+ "name": "เปโซอาร์เจนตินา",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "เปโซอุรุกวัย",
+ "symbol": "UYU"
+ },
+ "TOP": {
+ "name": "พาแองกาตองกา",
+ "symbol": "TOP"
+ },
+ "GNF": {
+ "name": "ฟรังก์กินี",
+ "symbol": "GNF"
+ },
+ "CDF": {
+ "name": "ฟรังก์คองโก",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ฟรังก์คอโมโรส",
+ "symbol": "KMF"
+ },
+ "DJF": {
+ "name": "ฟรังก์จิบูตี",
+ "symbol": "DJF"
+ },
+ "XPF": {
+ "name": "ฟรังก์ซีเอฟพี",
+ "symbol": "CFPF"
+ },
+ "XOF": {
+ "name": "ฟรังก์เซฟาธนาคารกลางรัฐแอฟริกาตะวันตก",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ฟรังก์เซฟาธนาคารรัฐแอฟริกากลาง",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "ฟรังก์บุรุนดี",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "ฟรังก์รวันดา",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ฟรังก์สวิส",
+ "symbol": "CHF"
+ },
+ "AWG": {
+ "name": "ฟลอรินอารูบา",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "ฟอรินต์ฮังการี",
+ "symbol": "HUF"
+ },
+ "TMT": {
+ "name": "มานัตเติร์กเมนิสถาน",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "มานัตอาเซอร์ไบจาน",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "มาร์กบอสเนีย-เฮอร์เซโกวีนา",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "เมติคัลโมซัมบิก",
+ "symbol": "MZN"
+ },
+ "EUR": {
+ "name": "ยูโร",
+ "symbol": "€"
+ },
+ "JPY": {
+ "name": "เยนญี่ปุ่น",
+ "symbol": "¥"
+ },
+ "MYR": {
+ "name": "ริงกิตมาเลเซีย",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "ริยัลซาอุดีอาระเบีย",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "รูเบิลเบลารุส",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "รูเบิลรัสเซีย",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "รูปีเซเชลส์",
+ "symbol": "SCR"
+ },
+ "NPR": {
+ "name": "รูปีเนปาล",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "รูปีปากีสถาน",
+ "symbol": "PKR"
+ },
+ "MUR": {
+ "name": "รูปีมอริเชียส",
+ "symbol": "MUR"
+ },
+ "LKR": {
+ "name": "รูปีศรีลังกา",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "รูปีอินเดีย",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "รูเปียห์อินโดนีเซีย",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "รูฟิยามัลดีฟส์",
+ "symbol": "MVR"
+ },
+ "KHR": {
+ "name": "เรียลกัมพูชา",
+ "symbol": "KHR"
+ },
+ "QAR": {
+ "name": "เรียลกาตาร์",
+ "symbol": "QAR"
+ },
+ "BRL": {
+ "name": "เรียลบราซิล",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "เรียลเยเมน",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "เรียลอิหร่าน",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "เรียลโอมาน",
+ "symbol": "OMR"
+ },
+ "ZAR": {
+ "name": "แรนด์แอฟริกาใต้",
+ "symbol": "ZAR"
+ },
+ "GEL": {
+ "name": "ลารีจอร์เจีย",
+ "symbol": "GEL"
+ },
+ "SZL": {
+ "name": "ลิลันเจนีสวาซิ",
+ "symbol": "SZL"
+ },
+ "MDL": {
+ "name": "ลิวมอลโดวา",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "ลิวโรมาเนีย",
+ "symbol": "RON"
+ },
+ "LTL": {
+ "name": "ลีตัสลิทัวเนีย",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "ลีราตุรกี",
+ "symbol": "TRY"
+ },
+ "SLL": {
+ "name": "ลีโอนเซียร์ราลีโอน",
+ "symbol": "SLL"
+ },
+ "ALL": {
+ "name": "เลกแอลเบเนีย",
+ "symbol": "ALL"
+ },
+ "BGN": {
+ "name": "เลฟบัลแกเรีย",
+ "symbol": "BGN"
+ },
+ "HNL": {
+ "name": "เลมปิราฮอนดูรัส",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "โลตีเลโซโท",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "วอนเกาหลีใต้",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "วอนเกาหลีเหนือ",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "วาตูวานูอาตู",
+ "symbol": "VUV"
+ },
+ "CNY": {
+ "name": "หยวนจีน",
+ "symbol": "CN¥"
+ },
+ "AFN": {
+ "name": "อัฟกานิอัฟกานิสถาน",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "อาเรียรีมาลากาซี",
+ "symbol": "MGA"
+ },
+ "MRO": {
+ "name": "อูกียามอริเตเนีย",
+ "symbol": "MRO"
+ },
+ "BTN": {
+ "name": "เอ็งกุลตรัมภูฏาน",
+ "symbol": "BTN"
+ },
+ "CVE": {
+ "name": "เอสคูโดเคปเวิร์ด",
+ "symbol": "CVE"
+ },
+ "UAH": {
+ "name": "ฮรีฟเนียยูเครน",
+ "symbol": "UAH"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ti.json b/library/intl/resources/currency/ti.json
new file mode 100644
index 000000000..2713a98f5
--- /dev/null
+++ b/library/intl/resources/currency/ti.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "EUR": {
+ "name": "አውሮ",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "የሕንድ ሩፒ",
+ "symbol": "₹"
+ },
+ "RUB": {
+ "name": "የራሻ ሩብል",
+ "symbol": "RUB"
+ },
+ "BRL": {
+ "name": "የብራዚል ሪል",
+ "symbol": "R$"
+ },
+ "CNY": {
+ "name": "የቻይና ዩአን ረንሚንቢ",
+ "symbol": "CN¥"
+ },
+ "USD": {
+ "name": "የአሜሪካን ዶላር",
+ "symbol": "US$"
+ },
+ "ETB": {
+ "name": "የኢትዮጵያ ብር",
+ "symbol": "Br"
+ },
+ "GBP": {
+ "name": "የእንግሊዝ ፓውንድ ስተርሊንግ",
+ "symbol": "£"
+ },
+ "JPY": {
+ "name": "የጃፓን የን",
+ "symbol": "JP¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/to.json b/library/intl/resources/currency/to.json
new file mode 100644
index 000000000..b77641714
--- /dev/null
+++ b/library/intl/resources/currency/to.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "AUD$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JP¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZD$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "Paʻanga fakatonga",
+ "symbol": "T$"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "WST": {
+ "name": "Tala fakahaʻamoa",
+ "symbol": "WST"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/tr.json b/library/intl/resources/currency/tr.json
new file mode 100644
index 000000000..5e90ba0ba
--- /dev/null
+++ b/library/intl/resources/currency/tr.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "ABD Doları",
+ "symbol": "$"
+ },
+ "AFN": {
+ "name": "Afganistan Afganisi",
+ "symbol": "AFN"
+ },
+ "AOA": {
+ "name": "Angola Kvanzası",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Arjantin Pesosu",
+ "symbol": "ARS"
+ },
+ "ALL": {
+ "name": "Arnavutluk Leki",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "Aruba Florini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Avustralya Doları",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbaycan Manatı",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahama Doları",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreyn Dinarı",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeş Takası",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados Doları",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize Doları",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda Doları",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "Beyaz Rusya Rublesi",
+ "symbol": "BYR"
+ },
+ "BTN": {
+ "name": "Bhutan Ngultrumu",
+ "symbol": "BTN"
+ },
+ "AED": {
+ "name": "Birleşik Arap Emirlikleri Dirhemi",
+ "symbol": "AED"
+ },
+ "BOB": {
+ "name": "Bolivya Bolivyanosu",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botsvana Pulası",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brezilya Reali",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei Doları",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgar Levası",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi Frangı",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cape Verde Esküdosu",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Adaları Doları",
+ "symbol": "KYD"
+ },
+ "GIP": {
+ "name": "Cebelitarık Lirası",
+ "symbol": "GIP"
+ },
+ "DZD": {
+ "name": "Cezayir Dinarı",
+ "symbol": "DZD"
+ },
+ "XOF": {
+ "name": "CFA Frangı BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Frangı BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Frangı",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Cibuti Frangı",
+ "symbol": "DJF"
+ },
+ "CZK": {
+ "name": "Çek Cumhuriyeti Korunası",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "Çin Yuanı",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "Danimarka Kronu",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "Doğu Karayip Doları",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "Dominik Pesosu",
+ "symbol": "DOP"
+ },
+ "SVC": {
+ "name": "El Salvador Kolonu",
+ "symbol": "SVC"
+ },
+ "IDR": {
+ "name": "Endonezya Rupiahı",
+ "symbol": "IDR"
+ },
+ "ERN": {
+ "name": "Eritre Nakfası",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "Ermenistan Dramı",
+ "symbol": "AMD"
+ },
+ "ETB": {
+ "name": "Etiyopya Birri",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Adaları Lirası",
+ "symbol": "FKP"
+ },
+ "MAD": {
+ "name": "Fas Dirhemi",
+ "symbol": "MAD"
+ },
+ "FJD": {
+ "name": "Fiji Doları",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinler Pesosu",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiya Dalasisi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Gana Sedisi",
+ "symbol": "GHS"
+ },
+ "GNF": {
+ "name": "Gine Frangı",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "Guatemala Quetzalı",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Guyana Doları",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Güney Afrika Randı",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Güney Kore Wonu",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Güney Sudan Lirası",
+ "symbol": "SSP"
+ },
+ "GEL": {
+ "name": "Gürcistan Larisi",
+ "symbol": "GEL"
+ },
+ "HTG": {
+ "name": "Haiti Gurdu",
+ "symbol": "HTG"
+ },
+ "HRK": {
+ "name": "Hırvatistan Kunası",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Hindistan Rupisi",
+ "symbol": "₹"
+ },
+ "ANG": {
+ "name": "Hollanda Antilleri Guldeni",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduras Lempirası",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Doları",
+ "symbol": "HK$"
+ },
+ "IQD": {
+ "name": "Irak Dinarı",
+ "symbol": "IQD"
+ },
+ "GBP": {
+ "name": "İngiliz Sterlini",
+ "symbol": "£"
+ },
+ "IRR": {
+ "name": "İran Riyali",
+ "symbol": "IRR"
+ },
+ "SEK": {
+ "name": "İsveç Kronu",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "İsviçre Frangı",
+ "symbol": "CHF"
+ },
+ "ISK": {
+ "name": "İzlanda Kronu",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaika Doları",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japon Yeni",
+ "symbol": "¥"
+ },
+ "KHR": {
+ "name": "Kamboçya Rieli",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanada Doları",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katar Riyali",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazakistan Tengesi",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenya Şilini",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kırgızistan Somu",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolombiya Pesosu",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorlar Frangı",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Frangı",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertibl Bosna Hersek Markı",
+ "symbol": "BAM"
+ },
+ "CUC": {
+ "name": "Konvertibl Küba Pesosu",
+ "symbol": "CUC"
+ },
+ "CRC": {
+ "name": "Kosta Rika Kolonu",
+ "symbol": "CRC"
+ },
+ "KWD": {
+ "name": "Kuveyt Dinarı",
+ "symbol": "KWD"
+ },
+ "KPW": {
+ "name": "Kuzey Kore Wonu",
+ "symbol": "KPW"
+ },
+ "CUP": {
+ "name": "Küba Pesosu",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laos Kipi",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotho Lotisi",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberya Doları",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libya Dinarı",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanya Litası",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Lübnan Lirası",
+ "symbol": "LBP"
+ },
+ "HUF": {
+ "name": "Macar Forinti",
+ "symbol": "HUF"
+ },
+ "MGA": {
+ "name": "Madagaskar Ariarisi",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao Patakası",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonya Dinarı",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malavi Kvaçası",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldiv Rufiyaası",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezya Ringgiti",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "Mauritius Rupisi",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksika Pesosu",
+ "symbol": "MX$"
+ },
+ "EGP": {
+ "name": "Mısır Lirası",
+ "symbol": "EGP"
+ },
+ "MNT": {
+ "name": "Moğolistan Tugriki",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "Moldova Leyi",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "Moritanya Ouguiyası",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "Mozambik Metikali",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyatı",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibya Doları",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepal Rupisi",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nijerya Nairası",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragua Kordobası",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveç Kronu",
+ "symbol": "NOK"
+ },
+ "UZS": {
+ "name": "Özbekistan Somu",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "Pakistan Rupisi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama Balboası",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Yeni Gine Kinası",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguay Guaranisi",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru Nuevo Solü",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polonya Zlotisi",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Romen Leyi",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Ruanda Frangı",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "Rus Rublesi",
+ "symbol": "RUB"
+ },
+ "SHP": {
+ "name": "Saint Helena Lirası",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "Samoa Talası",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé ve Príncipe Dobrası",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "Seyşeller Rupisi",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Sırp Dinarı",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Sierra Leone Leonesi",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapur Doları",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Adaları Doları",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Şilini",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lanka Rupisi",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudan Lirası",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam Doları",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "Suriye Lirası",
+ "symbol": "SYP"
+ },
+ "SAR": {
+ "name": "Suudi Arabistan Riyali",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Svaziland Lilangenisi",
+ "symbol": "SZL"
+ },
+ "CLP": {
+ "name": "Şili Pesosu",
+ "symbol": "CLP"
+ },
+ "TJS": {
+ "name": "Tacikistan Somonisi",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanya Şilini",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Tayland Bahtı",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tonga Paʻangası",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad ve Tobago Doları",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunus Dinarı",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türk Lirası",
+ "symbol": "₺"
+ },
+ "TMT": {
+ "name": "Türkmenistan Manatı",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda Şilini",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrayna Grivnası",
+ "symbol": "UAH"
+ },
+ "OMR": {
+ "name": "Umman Riyali",
+ "symbol": "OMR"
+ },
+ "UYU": {
+ "name": "Uruguay Pesosu",
+ "symbol": "UYU"
+ },
+ "JOD": {
+ "name": "Ürdün Dinarı",
+ "symbol": "JOD"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatusu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuela Bolivarı",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnam Dongu",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "Yemen Riyali",
+ "symbol": "YER"
+ },
+ "ILS": {
+ "name": "Yeni İsrail Şekeli",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Yeni Tayvan Doları",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Yeni Zelanda Doları",
+ "symbol": "NZ$"
+ },
+ "ZMW": {
+ "name": "Zambiya Kvaçası",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabve Doları (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/twq.json b/library/intl/resources/currency/twq.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/twq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JP¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CN¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/tzm.json b/library/intl/resources/currency/tzm.json
new file mode 100644
index 000000000..88a03cc01
--- /dev/null
+++ b/library/intl/resources/currency/tzm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "MGA": {
+ "name": "Aryari Umalɣaci",
+ "symbol": "MGA"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr Uyityuppi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "UGX": {
+ "name": "Cilin Uɣandi (1966–1987)",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Cilin Uṣumali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Cilin Uṭanzani",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Cillin Ukini",
+ "symbol": "KES"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi Agambi",
+ "symbol": "GMD"
+ },
+ "MAD": {
+ "name": "Derhem Umeṛṛuki",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Derhem Uymarati",
+ "symbol": "AED"
+ },
+ "BHD": {
+ "name": "Ḍinar Ubaḥrayni",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "Ḍinar Udzayri",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "Ḍinar Ulibi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Ḍinar Utunsi",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "STD": {
+ "name": "Dubra Usawṭumi",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Ḍular Ukanadi",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Ḍular Ulibiri",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Ḍular Umirikani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Ḍular Unamibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Ḍular Usṭrali",
+ "symbol": "A$"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Frank CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Frank CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Frank Uburundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Frank Uğibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Frank Ukunguli",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Frank Uqumuri",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "Frank Urwandi",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Frank Uswisri",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CVE": {
+ "name": "Iskudu Ukabuvirdyani",
+ "symbol": "CVE"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "EGP": {
+ "name": "Junih Umiṣṛi",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Junih Usantehilini",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Junih Usterlini Ubriṭani",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Junih Usudani",
+ "symbol": "SDG"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwača Umalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwača Uzambi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Unguli",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilanjini Uswazi",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Luti Ulusuṭi",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Lyun Usirralyuni",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakfa Uyritri",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayra Unijiri",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula Ubutswani",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand Ufriki Unzul",
+ "symbol": "ZAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi Uḥindi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi Umurisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi Usicili",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Ryal Usaεudi",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Uqiyya Umuritani",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "Uṛu",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yann Ujappuni",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Ywan Renminbi Ucinwi",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ug.json b/library/intl/resources/currency/ug.json
new file mode 100644
index 000000000..cace9bd23
--- /dev/null
+++ b/library/intl/resources/currency/ug.json
@@ -0,0 +1,634 @@
+{
+ "ARS": {
+ "name": "ئارگېنتىنا پېسوسى",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ئارۇبان فىلورۇنى",
+ "symbol": "AWG"
+ },
+ "XAF": {
+ "name": "ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى (BCEAO)",
+ "symbol": "CFA"
+ },
+ "AFN": {
+ "name": "ئافغان ئافغانى",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ئالبانىيە لېكى",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ئالجىرىيە دىنارى",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ئامېرىكا دوللىرى",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "ئانگولا كۇۋانزاسى",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "ئاۋسترالىيە دوللىرى",
+ "symbol": "A$"
+ },
+ "MOP": {
+ "name": "ئاۋمېن پاتاكاسى",
+ "symbol": "MOP"
+ },
+ "AMD": {
+ "name": "ئەرمېنىيە دىرامى",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "ئەرەب بىرلەشمە خەلىپىلىكى دەرھەمى",
+ "symbol": "AED"
+ },
+ "AZN": {
+ "name": "ئەزەربەيجان ماناتى",
+ "symbol": "AZN"
+ },
+ "GBP": {
+ "name": "ئەنگلىيە فوند سىتېرلىڭى",
+ "symbol": "£"
+ },
+ "OMR": {
+ "name": "ئومان رىيالى",
+ "symbol": "OMR"
+ },
+ "UZS": {
+ "name": "ئۆزبېكىستان سومى",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ئۇرۇگۋاي پېسوسى",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "ئۇكرائىنا خرىۋناسى",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ئۇگاندا شىللىڭى",
+ "symbol": "UGX"
+ },
+ "IQD": {
+ "name": "ئىراق دىنارى",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ئىران رىيالى",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ئىسرائىل يېڭى شېكېلى",
+ "symbol": "₪"
+ },
+ "ISK": {
+ "name": "ئىسلاندىيە كروناسى",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "ئىيوردانىيە دىنارى",
+ "symbol": "JOD"
+ },
+ "ERN": {
+ "name": "ئېرىترېيە ناكفاسى",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ئېفىيوپىيە بىررى",
+ "symbol": "ETB"
+ },
+ "BBD": {
+ "name": "باربادوس دوللىرى",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "باڭلادىش تاكاسى",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "باھاما دوللىرى",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "بەھرەين دىنارى",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "بوتسۋانا پۇلاسى",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنىيە-خېرتسېگوۋىنا ئالماشتۇرۇشچان ماركى",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولىۋىيە بولىۋىيانوسى",
+ "symbol": "BOB"
+ },
+ "BTN": {
+ "name": "بۇتان نگۇلترۇمى",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "بۇرۇندى فرانكى",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "بۇلغارىيە لېۋاسى",
+ "symbol": "BGN"
+ },
+ "BRL": {
+ "name": "بىرازىلىيە رىيالى",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "بىرۇنېي دوللىرى",
+ "symbol": "BND"
+ },
+ "BMD": {
+ "name": "بېرمۇدا دوللىرى",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "بېلارۇسىيە رۇبلىسى",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بېلىز دوللىرى",
+ "symbol": "BZD"
+ },
+ "PGK": {
+ "name": "پاپۇئا يېڭى گىۋىنېيە كىناسى",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "پاراگۋاي گۇئارانىسى",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "پاكىستان رۇپىسى",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "پاناما بالبوئاسى",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولشا زىلوتى",
+ "symbol": "PLN"
+ },
+ "PEN": {
+ "name": "پېرۇ يېڭى سولى",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجىكىستان سومونىسى",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "تانزانىيە شىللىڭى",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "تايلاند باختى",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "تونگا پائانگاسى",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "تۇنىس دىنارى",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "تۈركمەنىستان ماناتى",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "تۈركىيە لىراسى",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "تىرىنىداد ۋە توباگو دوللىرى",
+ "symbol": "TTD"
+ },
+ "XPF": {
+ "name": "تىنچ ئوكيان پۇل-مۇئامىلە ئورتاق گەۋدىسى فرانكى",
+ "symbol": "CFPF"
+ },
+ "GIP": {
+ "name": "جەبىلتارىق فوند سىتېرلىڭى",
+ "symbol": "GIP"
+ },
+ "ZAR": {
+ "name": "جەنۇبىي ئافرىقا راندى",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جەنۇبىي سۇدان فوندستېرلىڭى",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جەنۇبىي كورېيە ۋونى",
+ "symbol": "₩"
+ },
+ "CNY": {
+ "name": "جۇڭگو يۈەنى",
+ "symbol": "¥"
+ },
+ "DJF": {
+ "name": "جىبۇتى فرانكى",
+ "symbol": "DJF"
+ },
+ "CLP": {
+ "name": "چىلى پېسوسى",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "چېخ جۇمھۇرىيىتى كورۇناسى",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "دانىيە كرونى",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "دومىنىكا پېسوسى",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "رۇسىيە رۇبلىسى",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رۇمىنىيە لېيى",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "رۋاندا فرانكى",
+ "symbol": "RWF"
+ },
+ "ZMW": {
+ "name": "زامبىيە كۋاچاسى",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "زىمبابۋې دوللىرى (2009)",
+ "symbol": "ZWL"
+ },
+ "SVC": {
+ "name": "سالۋادور كولونى",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "ساموئا تالاسى",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "سان-تومې ۋە پىرىنسىپى دوبراسى",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "ساينىت-ھېلېنا فوندستېرلىڭى",
+ "symbol": "SHP"
+ },
+ "SAR": {
+ "name": "سەئۇدى رىيالى",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "سولومون ئاراللىرى دوللىرى",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "سومالى شىللىڭى",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "سۇدان فوندستېرلىڭى",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سۇرىنام دوللىرى",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "سۈرىيە فوندستېرلىڭى",
+ "symbol": "SYP"
+ },
+ "LKR": {
+ "name": "سىرىلانكا رۇپىسى",
+ "symbol": "LKR"
+ },
+ "SGD": {
+ "name": "سىنگاپور دوللىرى",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سىۋېزىلاند لىلانگېنى",
+ "symbol": "SZL"
+ },
+ "RSD": {
+ "name": "سېربىيە دىنارى",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "سېررالېئون لېئونېسى",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "سېيشېل رۇپىسى",
+ "symbol": "SCR"
+ },
+ "XCD": {
+ "name": "شەرقىي كارىب دوللىرى",
+ "symbol": "EC$"
+ },
+ "KPW": {
+ "name": "شىمالىي كورېيە ۋونى",
+ "symbol": "KPW"
+ },
+ "CHF": {
+ "name": "شىۋېتسىيە فرانكى",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "شىۋېتسىيە كروناسى",
+ "symbol": "SEK"
+ },
+ "HKD": {
+ "name": "شياڭگاڭ دوللىرى",
+ "symbol": "HK$"
+ },
+ "FKP": {
+ "name": "فالكلاند ئاراللىرى فوند سىتېرلىڭى",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "فىجى دوللىرى",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "فىلىپپىن پېسوسى",
+ "symbol": "PHP"
+ },
+ "QAR": {
+ "name": "قاتار رىيالى",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "قازاقىستان تەڭگىسى",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "قىرغىزىستان سومى",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "كامبودژا رىئېلى",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "كانادا دوللىرى",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "كايمان ئاراللىرى دوللىرى",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "كوستارىكا كولونى",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "كولومبىيە پېسوسى",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "كومورو فرانكى",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "كونگو فرانكى",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "كۇبا ئالماشتۇرۇشچان پېسوسى",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "كۇبا پېسوسى",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "كۇۋەيت دىنارى",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "كىرودىيە كۇناسى",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "كېنىيە شىللىڭى",
+ "symbol": "KES"
+ },
+ "GMD": {
+ "name": "گامبىيە دالاسى",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "گانا سېدىسى",
+ "symbol": "GHS"
+ },
+ "ANG": {
+ "name": "گوللاندىيەگە قاراشلىق ئانتىللېن گۇلدېنى",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "گىرۇزىيە لارىسى",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "گىۋاتېمالا كۇۋېتزالى",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گىۋىئانا دوللىرى",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "گىۋىنېيە فرانكى",
+ "symbol": "GNF"
+ },
+ "LAK": {
+ "name": "لائوس كىپى",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لىبېرىيە دوللىرى",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "لىتۋا لىتاسى",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "لىۋان فوند سىتېرلىڭى",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لىۋىيە دىنارى",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "لېسوتو لوتىسى",
+ "symbol": "LSL"
+ },
+ "MGA": {
+ "name": "ماداغاسقار ئارىئارىسى",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "ماراكەش دىرھەمى",
+ "symbol": "MAD"
+ },
+ "MKD": {
+ "name": "ماكېدونىيە دىنارى",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "مالاۋى كۋاچاسى",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "مالايشىيا رىڭگىتى",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "مالدىۋى رۇفىياسى",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "ماۋرىتانىيە ئۇگىيەسى",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "ماۋرىتىئۇس رۇپىسى",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "موزامبىك مېتىكالى",
+ "symbol": "MZN"
+ },
+ "MNT": {
+ "name": "موڭغۇلىيە تۈگرىكى",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "مولدوۋا لېۋى",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "مىسىر فوند سىتېرلىڭى",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "مىيانمار كىياتى",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "مېكسىكا پېسوسى",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "نامىبىيە دوللىرى",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "نورۋېگىيە كرونى",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "نىگېرىيە كوردوباسى",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "نىگېرىيە نايراسى",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "نېپال رۇپىسى",
+ "symbol": "NPR"
+ },
+ "HTG": {
+ "name": "ھايتى گۇردېسى",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ھوندۇراس لېمپىراسى",
+ "symbol": "HNL"
+ },
+ "IDR": {
+ "name": "ھىندونېزىيە رۇپىيەسى",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ھىندىستان رۇپىسى",
+ "symbol": "₹"
+ },
+ "VUV": {
+ "name": "ۋانۇئاتۇ ۋاتۇسى",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ۋىيېتنام دوڭى",
+ "symbol": "₫"
+ },
+ "HUF": {
+ "name": "ۋېنگىرىيە فورېنتى",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "ۋېنېزۇئېلا بولىۋارى",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ياپونىيە يېنى",
+ "symbol": "JP¥"
+ },
+ "JMD": {
+ "name": "يامايكا دوللىرى",
+ "symbol": "JMD"
+ },
+ "EUR": {
+ "name": "ياۋرو",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "يەمەن رىيالى",
+ "symbol": "YER"
+ },
+ "CVE": {
+ "name": "يېشىل تۇمشۇق ئېسكۇدوسى",
+ "symbol": "CVE"
+ },
+ "TWD": {
+ "name": "يېڭى تەيۋەن دوللىرى",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "يېڭى زېلاندىيە دوللىرى",
+ "symbol": "NZ$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uk.json b/library/intl/resources/currency/uk.json
new file mode 100644
index 000000000..3ce9fb1cd
--- /dev/null
+++ b/library/intl/resources/currency/uk.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "австралійський долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "азербайджанський манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "албанський лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "алжирський динар",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "англійський фунт стерлінгів",
+ "symbol": "GBP"
+ },
+ "AOA": {
+ "name": "ангольська кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентинський песо",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "арубський флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "афганський афгані",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багамський долар",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "бангладеська така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "барбадоський долар",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "бахрейнський динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "белізький долар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермудський долар",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "білоруський рубль",
+ "symbol": "BYR"
+ },
+ "BGN": {
+ "name": "болгарський лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "болівійський болівіано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ботсванська пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "бразильський реал",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "брунейський долар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "бурундійський франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "бутанський нгултрум",
+ "symbol": "BTN"
+ },
+ "VND": {
+ "name": "вʼєтнамський донг",
+ "symbol": "VND"
+ },
+ "VUV": {
+ "name": "вануатський вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "венесуельський болівар",
+ "symbol": "VEF"
+ },
+ "AMD": {
+ "name": "вірменський драм",
+ "symbol": "AMD"
+ },
+ "HTG": {
+ "name": "гаїтянський гурд",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "гамбійський даласі",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ганський седі",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "гаянський долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "гватемальський кетсаль",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "гвінейський франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "гібралтарський фунт",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "гондураська лемпіра",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "гонконгський долар",
+ "symbol": "HKD"
+ },
+ "GEL": {
+ "name": "грузинський ларі",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "данська крона",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "джибутійський франк",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "дирхам ОАЕ",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "добра Сан-Томе і Принсіпі",
+ "symbol": "STD"
+ },
+ "KYD": {
+ "name": "долар Кайманових островів",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "долар Соломонових Островів",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "долар США",
+ "symbol": "USD"
+ },
+ "TTD": {
+ "name": "долар Тринідаду і Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "домініканський песо",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "еритрейська накфа",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "ескудо Кабо-Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "ефіопський бир",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "євро",
+ "symbol": "EUR"
+ },
+ "EGP": {
+ "name": "єгипетський фунт",
+ "symbol": "EGP"
+ },
+ "YER": {
+ "name": "єменський ріал",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "замбійська квача",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "західноафриканський франк BCEAO",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "зімбабвійський долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ізраїльський новий шекель",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "індійська рупія",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "індонезійська рупія",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "іракський динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "іранський ріал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ісландська крона",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "йорданський динар",
+ "symbol": "JOD"
+ },
+ "MMK": {
+ "name": "кʼят Мʼянми",
+ "symbol": "MMK"
+ },
+ "KZT": {
+ "name": "казахстанський тенге",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "камбоджійський рієль",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канадський долар",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "катарський ріал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "кенійський шилінг",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "киргизький сом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "китайський юань",
+ "symbol": "CNY"
+ },
+ "PGK": {
+ "name": "кіна Папуа Нової Гвінеї",
+ "symbol": "PGK"
+ },
+ "COP": {
+ "name": "колумбійський песо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "коморський франк",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "конвертована марка Боснії і Герцеговини",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "конголезький франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "костариканський колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "кубинський конвертований песо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "кубинський песо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "кувейтський динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "лаоський кіп",
+ "symbol": "LAK"
+ },
+ "SLL": {
+ "name": "леоне Сьєрра-Леоне",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "лесотський лоті",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "литовський літ",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "ліберійський долар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ліванський фунт",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "лівійський динар",
+ "symbol": "LYD"
+ },
+ "MUR": {
+ "name": "маврикійська рупія",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "мавританська угія",
+ "symbol": "MRO"
+ },
+ "MKD": {
+ "name": "македонський денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "малавійська квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "малагасійський аріарі",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "малайзійський рингіт",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "мальдівська руфія",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "марокканський дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мексиканський песо",
+ "symbol": "MXN"
+ },
+ "MZN": {
+ "name": "мозамбіцький метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдовський лей",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "монгольський тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "намібійський долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "непальська рупія",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "нігерійська найра",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нідерландський антильський гульден",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "нікарагуанська кордоба оро",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "новий тайванський долар",
+ "symbol": "TWD"
+ },
+ "NZD": {
+ "name": "новозеландський долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "норвезька крона",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "оманський ріал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "пакистанська рупія",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панамська бальбоа",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "парагвайський гуарані",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "патака Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "перуанський новий сол",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "південноафриканський ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "південнокорейський вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "південносуданський фунт",
+ "symbol": "SSP"
+ },
+ "KPW": {
+ "name": "північнокорейський вон",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "польський злотий",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "російський рубль",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "руандійський франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румунський лей",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "сальвадорський колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "самоанська тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "саудівський ріал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "свазілендський лілангені",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "сейшельська рупія",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "сербський динар",
+ "symbol": "RSD"
+ },
+ "SYP": {
+ "name": "сирійський фунт",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "сінгапурський долар",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "сомалійський шилінг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "суданський фунт",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "суринамський долар",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "східнокарибський долар",
+ "symbol": "XCD"
+ },
+ "TJS": {
+ "name": "таджицький сомоні",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "таїландський бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "танзанійський шилінг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "тонганська паанга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "туніський динар",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "турецька ліра",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "туркменський манат",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "угандійський шилінг",
+ "symbol": "UGX"
+ },
+ "HUF": {
+ "name": "угорський форинт",
+ "symbol": "HUF"
+ },
+ "UZS": {
+ "name": "узбецький сум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "українська гривня",
+ "symbol": "₴"
+ },
+ "UYU": {
+ "name": "уругвайський песо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "фіджійський долар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "філіппінський песо",
+ "symbol": "PHP"
+ },
+ "XPF": {
+ "name": "французький тихоокеанський франк",
+ "symbol": "CFPF"
+ },
+ "SHP": {
+ "name": "фунт острова Святої Єлени",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "фунт Фолклендських островів",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "хорватська куна",
+ "symbol": "HRK"
+ },
+ "XAF": {
+ "name": "центральноафриканський франк",
+ "symbol": "FCFA"
+ },
+ "CZK": {
+ "name": "чеська крона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чилійський песо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "шведська крона",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "швейцарський франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "шрі-ланкійська рупія",
+ "symbol": "LKR"
+ },
+ "JMD": {
+ "name": "ямайський долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "японська єна",
+ "symbol": "¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ur-IN.json b/library/intl/resources/currency/ur-IN.json
new file mode 100644
index 000000000..cdc23da80
--- /dev/null
+++ b/library/intl/resources/currency/ur-IN.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA فرانک BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA فرانک BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP فرانک",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ARS": {
+ "name": "ارجنٹائن پیسہ",
+ "symbol": "ARS"
+ },
+ "JOD": {
+ "name": "اردنی دینار",
+ "symbol": "JOD"
+ },
+ "AWG": {
+ "name": "اروبن فلورِن",
+ "symbol": "AWG"
+ },
+ "ERN": {
+ "name": "اریٹیریائی ناکفا",
+ "symbol": "ERN"
+ },
+ "UZS": {
+ "name": "ازبکستان سوم",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "اسرائیلی نیا شیکل",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "افغان افغانی",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "البانیا کا لیک",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "الجیریائی دینار",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "امریکی ڈالر",
+ "symbol": "$"
+ },
+ "IDR": {
+ "name": "انڈونیشین روپیہ",
+ "symbol": "IDR"
+ },
+ "AOA": {
+ "name": "انگولا کا کوانزا",
+ "symbol": "AOA"
+ },
+ "ETB": {
+ "name": "ایتھوپیائی بِرّ",
+ "symbol": "ETB"
+ },
+ "IRR": {
+ "name": "ایرانی ریال",
+ "symbol": "IRR"
+ },
+ "AZN": {
+ "name": "آذربائجانی منات",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "آرمینیائی ڈرم",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "آسٹریلین ڈالر",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "آئس لينڈی کرونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "باربیڈین ڈالر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحرینی دینار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برازیلی ریئل",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "برطانوی پاونڈ سٹرلنگ",
+ "symbol": "£"
+ },
+ "BMD": {
+ "name": "برموڈا ڈالر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "برونڈیئن فرانک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برونئی ڈالر",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "بلغارین لیو",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "بنگلہ دیشی ٹکا",
+ "symbol": "BDT"
+ },
+ "BWP": {
+ "name": "بوتسوانا کا پولا",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنیا ہرزیگووینا کا قابل منتقلی نشان",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولیوین بولیویانو",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "بہامانی ڈالر",
+ "symbol": "BSD"
+ },
+ "BYR": {
+ "name": "بیلاروسی روبل",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بیلائز ڈالر",
+ "symbol": "BZD"
+ },
+ "INR": {
+ "name": "بھارتی روپیہ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "بھوٹانی گُلٹرم",
+ "symbol": "BTN"
+ },
+ "PGK": {
+ "name": "پاپوآ نیو گنی کا کینا",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "پاکستانی روپیہ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "پنامہ کا بالبوآ",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولش زلوٹی",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "پیراگوئے کا گوآرنی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پیروین نیووسول",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجکستانی سومونی",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ترکمانستانی منات",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ترکی لیرا",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ترینیداد اور ٹوباگو کا ڈالر",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "تنزانیائی شلنگ",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "تیونیسیائی دینار",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "تھائی باہت",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "ٹونگن پانگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانی ین",
+ "symbol": "JP¥"
+ },
+ "GEL": {
+ "name": "جارجیائی لاری",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "جبل الطارق پونڈ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "جبوتی فرانک",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "جمائیکن ڈالر",
+ "symbol": "JMD"
+ },
+ "CZK": {
+ "name": "جمہوریہ چیک کرونا",
+ "symbol": "CZK"
+ },
+ "ZAR": {
+ "name": "جنوبی افریقی رانڈ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جنوبی سوڈانی پاؤنڈ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جنوبی کوریائی وون",
+ "symbol": "₩"
+ },
+ "CLP": {
+ "name": "چلّین پیسہ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "چینی یوآن",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "ڈنمارک کرون",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومنیکن پیسو",
+ "symbol": "DOP"
+ },
+ "RWF": {
+ "name": "روانڈا کا فرانک",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "روسی روبل",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رومانیائی لیو",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زامبیائی کواچا",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "ساموآئی ٹالا",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ساؤ ٹوم اور پرنسپے ڈوبرا",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "سربین دینار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لنکائی روپیہ",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "سشلی کا روپیہ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "سعودی ریال",
+ "symbol": "SAR"
+ },
+ "SGD": {
+ "name": "سنگا پور ڈالر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی لیلانجینی",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "سوڈانی پاؤنڈ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سورینامی ڈالر",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "سولومن آئلینڈز ڈالر",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "سویڈن کرونا",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "سوئس فرانکس",
+ "symbol": "CHF"
+ },
+ "SHP": {
+ "name": "سینٹ ہیلینا پاؤنڈ",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "سیئرا لیون لیون",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "شامی پونڈ",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "شمالی کوریائی وون",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "صومالی شلنگ",
+ "symbol": "SOS"
+ },
+ "IQD": {
+ "name": "عراقی دینار",
+ "symbol": "IQD"
+ },
+ "OMR": {
+ "name": "عمانی ریال",
+ "symbol": "OMR"
+ },
+ "FKP": {
+ "name": "فاکلینڈ آئلینڈز پونڈ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "فجی کا ڈالر",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "فلپائینی پیسہ",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "قابل منتقلی کیوبائی پیسو",
+ "symbol": "CUC"
+ },
+ "KZT": {
+ "name": "قزاخستانی ٹینگ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "قطری ریال",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "کانگولیز فرانک",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "کرغستانی سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروشین کونا",
+ "symbol": "HRK"
+ },
+ "KHR": {
+ "name": "کمبوڈیائی ریئل",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "کنیڈین ڈالر",
+ "symbol": "CA$"
+ },
+ "CRC": {
+ "name": "کوسٹا ریکا کولون",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولمبین پیسہ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کوموریئن فرانک",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "کویتی دینار",
+ "symbol": "KWD"
+ },
+ "CVE": {
+ "name": "کیپ ورڈی اسکیوڈو",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "کیمین آئلینڈز ڈالر",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "کینیائی شلنگ",
+ "symbol": "KES"
+ },
+ "CUP": {
+ "name": "کیوبائی پیسو",
+ "symbol": "CUP"
+ },
+ "GMD": {
+ "name": "گامبیا کا ڈلاسی",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "گنی فرانک",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "گواٹے مالا کا کوئٹزل",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گویانیز ڈالر",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "گھانی سیڈی",
+ "symbol": "GHS"
+ },
+ "LAK": {
+ "name": "لاؤشیائی کِپ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لائبریائی ڈالر",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "لبنانی پونڈ",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لیبیائی دینار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "لیتھوینیائی لیٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "لیسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "ماریشس کا روپیہ",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "مالدووی لیو",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "مالدیپ کا روفیہ",
+ "symbol": "MVR"
+ },
+ "AED": {
+ "name": "متحدہ عرب اماراتی درہم",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "مراکشی درہم",
+ "symbol": "MAD"
+ },
+ "XCD": {
+ "name": "مشرقی کریبیا کا ڈالر",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "مصری پاؤنڈ",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "مقدونیائی دینار",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "ملاگاسی اریاری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ملاوی کواچا",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ملیشیائی رنگِٹ",
+ "symbol": "MYR"
+ },
+ "MNT": {
+ "name": "منگولیائی ٹگرِ",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "موریطانیائی اوگوئیا",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "موزامبیقی میٹیکل",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "میانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "MOP": {
+ "name": "میکانیز پٹاکا",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "میکسیکی پیسہ",
+ "symbol": "MX$"
+ },
+ "NOK": {
+ "name": "ناروے کرون",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "نامیبیائی ڈالر",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "نائیجیریائی نائرا",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "نکارا گوا کا کورڈوبا",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "نیپالی روپیہ",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "نیدر لینڈز انٹیلیئن گلڈر",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "نیو تائیوان ڈالر",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "نیوزی لینڈ ڈالر",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "ویتنامی ڈانگ",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "وینزویلا بولیور",
+ "symbol": "VEF"
+ },
+ "VUV": {
+ "name": "وینوواتو واتو",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "ہنگرین فورنٹ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "ہونڈوران لیمپیرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "ہیتی کا گؤرڈی",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ھانگ کانگ ڈالر",
+ "symbol": "HK$"
+ },
+ "YER": {
+ "name": "یمنی ریال",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "یوروگویان پیسو",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "یوکرینیائی ہریونیا",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "یوگانڈا شلنگ",
+ "symbol": "UGX"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ur.json b/library/intl/resources/currency/ur.json
new file mode 100644
index 000000000..7bc0b1a40
--- /dev/null
+++ b/library/intl/resources/currency/ur.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA فرانک BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA فرانک BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP فرانک",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ARS": {
+ "name": "ارجنٹائن پیسہ",
+ "symbol": "ARS"
+ },
+ "JOD": {
+ "name": "اردنی دینار",
+ "symbol": "JOD"
+ },
+ "AWG": {
+ "name": "اروبن فلورِن",
+ "symbol": "AWG"
+ },
+ "ERN": {
+ "name": "اریٹیریا کا نافکا",
+ "symbol": "ERN"
+ },
+ "UZS": {
+ "name": "ازبکستان سوم",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "اسرائیلی نیا شیکل",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "افغان افغانی",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "البانیا کا لیک",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "الجیریائی دینار",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "امریکی ڈالر",
+ "symbol": "$"
+ },
+ "IDR": {
+ "name": "انڈونیشین روپیہ",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "انگلستانی پاونڈ سٹرلنگ",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "انگولا کا کوانزا",
+ "symbol": "AOA"
+ },
+ "ETB": {
+ "name": "ایتھوپیائی بِرّ",
+ "symbol": "ETB"
+ },
+ "IRR": {
+ "name": "ایرانی ریال",
+ "symbol": "IRR"
+ },
+ "AZN": {
+ "name": "آذربائجانی منات",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "آرمینیائی ڈرم",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "آسٹریلین ڈالر",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "آئس لينڈی کرونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "باربیڈین ڈالر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحرینی دینار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برازیلی ریئل",
+ "symbol": "R$"
+ },
+ "BMD": {
+ "name": "برموڈا ڈالر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "برونڈیئن فرانک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برونئی ڈالر",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "بلغارین لیو",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "بنگلہ دیشی ٹکا",
+ "symbol": "BDT"
+ },
+ "BWP": {
+ "name": "بوتسوانا کا پولا",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنیا ہرزیگووینا کا قابل منتقلی نشان",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولیوین بولیویانو",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "بہامانی ڈالر",
+ "symbol": "BSD"
+ },
+ "BYR": {
+ "name": "بیلاروسی روبل",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بیلائز ڈالر",
+ "symbol": "BZD"
+ },
+ "INR": {
+ "name": "بھارتی روپیہ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "بھوٹانی گُلٹرم",
+ "symbol": "BTN"
+ },
+ "PGK": {
+ "name": "پاپوآ نیو گنی کا کینا",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "پاکستانی روپیہ",
+ "symbol": "Rs"
+ },
+ "PAB": {
+ "name": "پنامہ کا بالبوآ",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولش زلوٹی",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "پیراگوئے کا گوآرنی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پیروین نیووسول",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجکستانی سومونی",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ترکمانستانی منات",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ترکی لیرا",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ترینیداد اور ٹوباگو کا ڈالر",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "تنزانیائی شلنگ",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "تیونیسیائی دینار",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "تھائی باہت",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "ٹونگن پانگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانی ین",
+ "symbol": "JP¥"
+ },
+ "GEL": {
+ "name": "جارجیائی لاری",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "جبل الطارق پونڈ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "جبوتی فرانک",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "جمائیکن ڈالر",
+ "symbol": "JMD"
+ },
+ "CZK": {
+ "name": "جمہوریہ چیک کرونا",
+ "symbol": "CZK"
+ },
+ "ZAR": {
+ "name": "جنوبی افریقی رانڈ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جنوبی سوڈانی پاؤنڈ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جنوبی کوریائی وون",
+ "symbol": "₩"
+ },
+ "CLP": {
+ "name": "چلّین پیسہ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "چینی یوآن",
+ "symbol": "CN¥"
+ },
+ "DKK": {
+ "name": "ڈنمارک کرونر",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومنیکن پیسو",
+ "symbol": "DOP"
+ },
+ "RWF": {
+ "name": "روانڈا کا فرانک",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "روسی روبل",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رومانیائی لیو",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زامبیائی کواچا",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "ساموآ کا ٹالا",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ساؤ ٹوم اور پرنسپے ڈوبرا",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "سربین دینار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لنکائی روپیہ",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "سشلی کا روپیہ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "سعودی ریال",
+ "symbol": "SAR"
+ },
+ "SGD": {
+ "name": "سنگا پور ڈالر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی لیلانجینی",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "سوڈانی پاؤنڈ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سورینامی ڈالر",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "سولومن آئلینڈز ڈالر",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "سویڈن کرونا",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "سوئس فرانکس",
+ "symbol": "CHF"
+ },
+ "SHP": {
+ "name": "سینٹ ہیلینا پاؤنڈ",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "سیئرا لیون لیون",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "شامی پونڈ",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "شمالی کوریائی وون",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "صومالی شلنگ",
+ "symbol": "SOS"
+ },
+ "IQD": {
+ "name": "عراقی دینار",
+ "symbol": "IQD"
+ },
+ "OMR": {
+ "name": "عمانی ریال",
+ "symbol": "OMR"
+ },
+ "FKP": {
+ "name": "فاکلینڈ آئلینڈز پونڈ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "فجی کا ڈالر",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "فلپائینی پیسہ",
+ "symbol": "PHP"
+ },
+ "KZT": {
+ "name": "قزاخستانی ٹینگ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "قطری ریال",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "کانگولیز فرانک",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "کرغستانی سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروشین کونا",
+ "symbol": "HRK"
+ },
+ "KHR": {
+ "name": "کمبوڈیائی ریئل",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "کنیڈین ڈالر",
+ "symbol": "CA$"
+ },
+ "CRC": {
+ "name": "کوسٹا ریکا کا کولن",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولمبین پیسہ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کوموریئن فرانک",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "کویتی دینار",
+ "symbol": "KWD"
+ },
+ "CVE": {
+ "name": "کیپ ورڈی کا اسکیوڈو",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "کیمین آئلینڈز ڈالر",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "کینیائی شلنگ",
+ "symbol": "KES"
+ },
+ "CUP": {
+ "name": "کیوبا کا پیسو",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "کیوبا کا قابل منتقلی پیسو",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "گامبیا کا ڈلاسی",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "گنی فرانک",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "گواٹے مالا کا کوئٹزل",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گویانیز ڈالر",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "گھانا کا سیڈی",
+ "symbol": "GHS"
+ },
+ "LAK": {
+ "name": "لاؤشیائی کِپ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لائبریائی ڈالر",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "لبنانی پونڈ",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لیبیائی دینار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "لیتھوینیائی لیٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "لیسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "ماریشس کا روپیہ",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "مالدووی لیو",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "مالدیپ کا روفیہ",
+ "symbol": "MVR"
+ },
+ "AED": {
+ "name": "متحدہ عرب اماراتی درہم",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "مراکشی درہم",
+ "symbol": "MAD"
+ },
+ "XCD": {
+ "name": "مشرقی کریبیا کا ڈالر",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "مصری پاؤنڈ",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "مقدونیائی دینار",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "ملاگاسی اریاری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ملاوی کواچا",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ملیشیائی رنگِٹ",
+ "symbol": "MYR"
+ },
+ "MNT": {
+ "name": "منگولیائی ٹگرِ",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "موریطانیائی اوگوئیا",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "موزامبیقی میٹیکل",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "میانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "MOP": {
+ "name": "میکانیز پٹاکا",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "میکسیکی پیسہ",
+ "symbol": "MX$"
+ },
+ "NOK": {
+ "name": "ناروے کرونر",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "نامیبیائی ڈالر",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "نائیجیریائی نائرا",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "نکارا گوا کا کورڈوبا",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "نیپالی روپیہ",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "نیدر لینڈز انٹیلیئن گلڈر",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "نیو تائیوان ڈالر",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "نیوزی لینڈ ڈالر",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "ویتنامی ڈانگ",
+ "symbol": "₫"
+ },
+ "VEF": {
+ "name": "وینزویلا بولیور",
+ "symbol": "VEF"
+ },
+ "VUV": {
+ "name": "وینوواتو واتو",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "ہنگرین فورنٹ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "ہونڈوران لیمپیرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "ہیتی کا گؤرڈی",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ھانگ کانگ ڈالر",
+ "symbol": "HK$"
+ },
+ "YER": {
+ "name": "یمنی ریال",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "یوروگویان پیسو",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "یوکرینیائی ہریونیا",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "یوگانڈا شلنگ",
+ "symbol": "UGX"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uz-Cyrl.json b/library/intl/resources/currency/uz-Cyrl.json
new file mode 100644
index 000000000..b5396c691
--- /dev/null
+++ b/library/intl/resources/currency/uz-Cyrl.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "АҚШ доллари",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "Аргентина песоси",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Аруба флорини",
+ "symbol": "AWG"
+ },
+ "BSD": {
+ "name": "Багама доллари",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Барбадос доллари",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Белиз доллари",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Бермуда доллари",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Боливия болвиани",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Бразил реали",
+ "symbol": "R$"
+ },
+ "VEF": {
+ "name": "Венесуэла боливари",
+ "symbol": "VEF"
+ },
+ "HTG": {
+ "name": "Гаити гурдаси",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Гаяна доллари",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Гватемала кветзали",
+ "symbol": "GTQ"
+ },
+ "ANG": {
+ "name": "Голланд Антил гульдени",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Гондурас лемпираси",
+ "symbol": "HNL"
+ },
+ "DOP": {
+ "name": "Доминикан песоси",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "DZD": {
+ "name": "Жазоир динори",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "Инглиз фунт стерлинги",
+ "symbol": "£"
+ },
+ "KYD": {
+ "name": "Кайман ороли Доллари",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Канада доллари",
+ "symbol": "CA$"
+ },
+ "COP": {
+ "name": "Колумбия песоси",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "Коста-Рика колони",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Куба Айирбошлаш песоси",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Куба песоси",
+ "symbol": "CUP"
+ },
+ "LYD": {
+ "name": "Ливия динори",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "Марокаш дирҳами",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Мексика песоси",
+ "symbol": "MX$"
+ },
+ "EGP": {
+ "name": "Миср фунти",
+ "symbol": "EGP"
+ },
+ "NIO": {
+ "name": "Никарагуа кордобаси",
+ "symbol": "NIO"
+ },
+ "PAB": {
+ "name": "Панама бальбоаси",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Парагвай гуарани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перу нуево сол",
+ "symbol": "PEN"
+ },
+ "RUB": {
+ "name": "Рус рубли",
+ "symbol": "RUB"
+ },
+ "SRD": {
+ "name": "Суринам доллари",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Тринидад ва Тобаго доллари",
+ "symbol": "TTD"
+ },
+ "UYU": {
+ "name": "Уругвай песоси",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Ўзбекистон сўм",
+ "symbol": "сўм"
+ },
+ "FKP": {
+ "name": "Фолькленд ороли фунти",
+ "symbol": "FKP"
+ },
+ "CNY": {
+ "name": "Хитой юани",
+ "symbol": "CN¥"
+ },
+ "INR": {
+ "name": "Ҳинд рупияси",
+ "symbol": "₹"
+ },
+ "CLP": {
+ "name": "Чили песоси",
+ "symbol": "CLP"
+ },
+ "XCD": {
+ "name": "Шарқий Кариб доллари",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Ямайка доллари",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Япон йенаси",
+ "symbol": "JP¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uz.json b/library/intl/resources/currency/uz.json
new file mode 100644
index 000000000..e9d858c75
--- /dev/null
+++ b/library/intl/resources/currency/uz.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Alban leki",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "USD": {
+ "name": "AQSH dollari",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "Argentina pesosi",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba florini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Avstraliya dollari",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bagama dollari",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Barbados dollari",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BYR": {
+ "name": "Belarus rubli",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Beliz dollari",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda dollari",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bolgariya levi",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Boliviya bolivyani",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosniya va Gertsogovina ayriboshlash markasi",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "Brazil reali",
+ "symbol": "R$"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CZK": {
+ "name": "Chex kronasi",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Chili pesosi",
+ "symbol": "CLP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DKK": {
+ "name": "Daniya kronasi",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikan pesosi",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Folklend oroli funti",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "Gaiti gurdasi",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Gayana dollari",
+ "symbol": "GYD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar funti",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "ANG": {
+ "name": "Golland Antil guldeni",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Gonduras lempirasi",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Gonkong dollari",
+ "symbol": "HK$"
+ },
+ "GTQ": {
+ "name": "Gvatemala kvetzali",
+ "symbol": "GTQ"
+ },
+ "INR": {
+ "name": "Hind rupiyasi",
+ "symbol": "₹"
+ },
+ "HRK": {
+ "name": "Horvat kunasi",
+ "symbol": "HRK"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Indoneziya rupiyasi",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "Ingliz funt sterlingi",
+ "symbol": "£"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandiya kronasi",
+ "symbol": "ISK"
+ },
+ "ZAR": {
+ "name": "Janubiy Afrika randi",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Janubiy Koreya voni",
+ "symbol": "₩"
+ },
+ "SSP": {
+ "name": "Janubiy Sudan funti",
+ "symbol": "SSP"
+ },
+ "DZD": {
+ "name": "Jazoir dinori",
+ "symbol": "DZD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada dollari",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Kayman Orollari Dollari",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "Kolumbiya pesosi",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "Kosta-Rika koloni",
+ "symbol": "CRC"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "CUC": {
+ "name": "Kuba Ayirboshlash pesosi",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuba pesosi",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "Litva liti",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "Liviya dinori",
+ "symbol": "LYD"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MKD": {
+ "name": "Makedoniya dinori",
+ "symbol": "MKD"
+ },
+ "MAD": {
+ "name": "Marokash dirhami",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Meksika pesosi",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "EGP": {
+ "name": "Misr funti",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "Moldova leusi",
+ "symbol": "MDL"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragua kordobasi",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegiya kronasi",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "UZS": {
+ "name": "Oʻzbekiston soʻm",
+ "symbol": "soʻm"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "Panama balboasi",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paragvay guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru noyvo soli",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "Polsha zlotiyi",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Rumin leusi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rus rubli",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "Saudiya Arabistoni riyoli",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbiya dinori",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "XCD": {
+ "name": "Sharqiy Karib dollari",
+ "symbol": "EC$"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "CHF": {
+ "name": "Shvetsariya franki",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Shvetsiya kronasi",
+ "symbol": "SEK"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SDG": {
+ "name": "Sudan funti",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam dollari",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "Tayland bahti",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad va Tobago dollari",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunis dinori",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turk lirasi",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrain grivnasi",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvay pesosi",
+ "symbol": "UYU"
+ },
+ "VEF": {
+ "name": "Venesuela bolivari",
+ "symbol": "VEF"
+ },
+ "HUF": {
+ "name": "Vengriya forinti",
+ "symbol": "HUF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Xitoy yuani",
+ "symbol": "CN¥"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JMD": {
+ "name": "Yamayka dollari",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "Yangi Tayvan dollari",
+ "symbol": "NT$"
+ },
+ "JPY": {
+ "name": "Yapon yenasi",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yevro",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vai-Latn.json b/library/intl/resources/currency/vai-Latn.json
new file mode 100644
index 000000000..cfdd565b8
--- /dev/null
+++ b/library/intl/resources/currency/vai-Latn.json
@@ -0,0 +1,634 @@
+{
+ "ZAR": {
+ "name": "Afirika Kɔi Leŋŋɛ lɔ Randi",
+ "symbol": "ZAR"
+ },
+ "XOF": {
+ "name": "Áfíríka Tele Jíí Sifa",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Áfíríka Tɛ Sifa",
+ "symbol": "FCFA"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "Agiriya Dina",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angola Kuwaŋza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "Bharɛŋ Dina",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Bhosuwana Pula",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "Bhurundi Furaŋki",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CNY": {
+ "name": "Chaníĩ Yuwaŋ Rɛŋmimbi",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "Ɛritera Nakifa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Ɛsikudo Cabovɛdiyano",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambiya Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Índiya Rupi",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "ETB": {
+ "name": "Ítiyopiya Bhii",
+ "symbol": "ETB"
+ },
+ "JPY": {
+ "name": "Japaniĩ Yɛŋ",
+ "symbol": "JP¥"
+ },
+ "GBP": {
+ "name": "Jengési Pɔɔ̃ Sitɛ́liŋ",
+ "symbol": "£"
+ },
+ "DJF": {
+ "name": "Jibhuti Furaŋki",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada Dala",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Kénya Siyeŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoro Furaŋki",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kóngo Furaŋki",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "SAR": {
+ "name": "Lahabu Sawodi Riya",
+ "symbol": "SAR"
+ },
+ "LRD": {
+ "name": "Laibhiya Dala",
+ "symbol": "$"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Libhiya Dina",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "Lisóto Loti",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Liyɔɔ̀",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Malagasi Ariyari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi Kuwacha",
+ "symbol": "MWK"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Míséla Pɔɔ̃",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "Mɔreshɔ Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔretani Yugiya",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Mɔroko Dihami",
+ "symbol": "MAD"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naĩjiriya Naĩra",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibiya Dala",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ɔ́situwa Dala",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "USD": {
+ "name": "Poo Dala",
+ "symbol": "US$"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Rawunda Furaŋki",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "STD": {
+ "name": "Sawo Tombe ɓɛ a Gbawo Dobura",
+ "symbol": "STD"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Siŋ Hɛlina Pɔɔ̃",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "Somaliya Siyeŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Sudaniĩ Pɔɔ̃",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "Suwesi Furaŋki",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Taŋzaniya Siyeŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisiya Dina",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "UGX": {
+ "name": "Yuganda Siyeŋ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "Yunaitɛ Arabhi Ɛmire Dihami",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "Zambiya Kuwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vai.json b/library/intl/resources/currency/vai.json
new file mode 100644
index 000000000..b9da1beaa
--- /dev/null
+++ b/library/intl/resources/currency/vai.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ERN": {
+ "name": "ꔀꔸꔳꕟ ꗁꖻꘋ",
+ "symbol": "ERN"
+ },
+ "SCR": {
+ "name": "ꔖꗼꔷ ꖩꔪ",
+ "symbol": "SCR"
+ },
+ "GBP": {
+ "name": "ꔛꔟꔻ ꗁꖻꘋ ꔻꗳꔷꘋ",
+ "symbol": "£"
+ },
+ "KES": {
+ "name": "ꔞꕰ ꔻꔝꘋ",
+ "symbol": "KES"
+ },
+ "INR": {
+ "name": "ꔤꔺꕩ ꖩꔪ",
+ "symbol": "₹"
+ },
+ "ETB": {
+ "name": "ꔤꕿꖎꔪꕩ ꔫꔤ",
+ "symbol": "ETB"
+ },
+ "LYD": {
+ "name": "ꔷꔫꕩ ꔵꕯ",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "ꔷꕞꔟꕇ",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "ꔷꖇꕿ ꖃꔳ",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "ꔷꗚꘋ",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "ꔻꘋ ꗥꔷꕯ ꗁꖻꘋ",
+ "symbol": "SHP"
+ },
+ "DJF": {
+ "name": "ꕀꖜꔳ ꖢꕟꘋꕃ",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "ꕆꔻꕞ ꗁꖻꘋ",
+ "symbol": "EGP"
+ },
+ "ZAR": {
+ "name": "ꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕟꘋꔵ",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "ꕉꔷꕀꔸꕩ ꔵꕯ",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "ꕉꖐꕞ ꖴꕎꘋꕤ",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "ꕑꗸꘋ",
+ "symbol": "BHD"
+ },
+ "TZS": {
+ "name": "ꕚꘋꕤꕇꕰ ꔻꔝꘋ",
+ "symbol": "TZS"
+ },
+ "LRD": {
+ "name": "ꕞꔤꔫꕩ ꕜꕞꕌ",
+ "symbol": "$"
+ },
+ "RWF": {
+ "name": "ꕟꖙꕡ ꖢꕟꘋꕃ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "ꕢꕴ ꕿꔈ ꗪ ꕉ ꕗꕴ ꖁꖜꕟ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "ꕢꖙꔵ ꔸꕩꔷ",
+ "symbol": "SAR"
+ },
+ "ZMW": {
+ "name": "ꕤꔭꕩ ꖴꕎꕦ",
+ "symbol": "ZMW"
+ },
+ "CNY": {
+ "name": "ꕦꕇꔧ ꖳꕎꘋ ꔓꕆꘋꔬ",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "ꕧꕐꕇꔧ ꘂꘋ",
+ "symbol": "JP¥"
+ },
+ "CAD": {
+ "name": "ꕪꕯꕜ ꕜꕞꕌ",
+ "symbol": "CA$"
+ },
+ "GMD": {
+ "name": "ꕭꔭꕩ ꕜꕞꔻ",
+ "symbol": "GMD"
+ },
+ "MWK": {
+ "name": "ꕮꕞꕌꔨ ꖴꕎꕦ",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "ꕮꕞꕭꕌꔻ ꕉꔸꕩꔸ",
+ "symbol": "MGA"
+ },
+ "NGN": {
+ "name": "ꕯꔤꕀꔸꕩ ꕯꔤꕟ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ꕯꕆꔫꕩ ꕜꕞꕌ",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "ꕶꕱ ꕜꕞ",
+ "symbol": "US$"
+ },
+ "BWP": {
+ "name": "ꕷꖬꕎꕯ ꖛꕞ",
+ "symbol": "BWP"
+ },
+ "SOS": {
+ "name": "ꖇꕮꔷ ꔻꔝꘋ",
+ "symbol": "SOS"
+ },
+ "CDF": {
+ "name": "ꖏꖐꕱ ꖢꕟꘋꕃ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ꖏꖒꖄ ꖢꕟꘋꕃ",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "ꖜꖩꔺ ꖢꕟꘋꕃ",
+ "symbol": "BIF"
+ },
+ "TND": {
+ "name": "ꖤꕇꔻꕩ ꔵꕯ",
+ "symbol": "TND"
+ },
+ "CHF": {
+ "name": "ꖬꔃꕤ ꖨꕮꕊ ꖢꕟꘋꕃ",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "ꖬꗵꘋ ꗁꖻꘋ",
+ "symbol": "SDG"
+ },
+ "UGX": {
+ "name": "ꖳꕭꕡ ꔻꔝꘋ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "ꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻ ꔵꕌꕆ",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "ꖳꖄ",
+ "symbol": "€"
+ },
+ "AUD": {
+ "name": "ꖺꔻꖤꔃꔷꕩ ꕜꕞꕌ",
+ "symbol": "A$"
+ },
+ "MUR": {
+ "name": "ꗞꔓꗔ ꖩꔪ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "ꗞꔸꕚꕇꕰ ꖳꕅꕩ",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "ꗞꕟꖏ ꔵꕌꕆ",
+ "symbol": "MAD"
+ },
+ "CVE": {
+ "name": "ꗡꔻꖴꖁ ꕪꕷꗲꗡꔵꕩꖆ",
+ "symbol": "CVE"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vi.json b/library/intl/resources/currency/vi.json
new file mode 100644
index 000000000..0fb29e1e1
--- /dev/null
+++ b/library/intl/resources/currency/vi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malagasy",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Bảng Ai Cập",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Bảng Anh",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "Bảng Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Bảng Li-băng",
+ "symbol": "LBP"
+ },
+ "SSP": {
+ "name": "Bảng Nam Sudan",
+ "symbol": "SSP"
+ },
+ "FKP": {
+ "name": "Bảng Quần đảo Falkland",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Bảng Saint Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Bảng Sudan",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "Bảng Syria",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "Bạt Thái Lan",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "CRC": {
+ "name": "Colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar I-rắc",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Jordan",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libi",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Ma-rốc",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham UAE",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé và Príncipe",
+ "symbol": "STD"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "Đô la Australia",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Đô la Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Đô la Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Đô la Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Đô la Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Đô la Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Đô la Canada",
+ "symbol": "CA$"
+ },
+ "TWD": {
+ "name": "Đô la Đài Loan mới",
+ "symbol": "NT$"
+ },
+ "XCD": {
+ "name": "Đô la Đông Caribê",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Đô la Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Đô la Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Đô la Hồng Kông",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Đô la Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Đô la Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Đô la Mỹ",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Đô la Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Đô la New Zealand",
+ "symbol": "NZ$"
+ },
+ "KYD": {
+ "name": "Đô la Quần đảo Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Đô la quần đảo Solomon",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "Đô la Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Đô la Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Đô la Trinidad và Tobago",
+ "symbol": "TTD"
+ },
+ "SVC": {
+ "name": "Đồng Colón Salvador",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "Đồng Đô la Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "LSL": {
+ "name": "Đồng loti của Lesotho",
+ "symbol": "LSL"
+ },
+ "VND": {
+ "name": "Đồng Việt Nam",
+ "symbol": "₫"
+ },
+ "CVE": {
+ "name": "Escudo Cape Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungaria",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comoros",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Thụy sĩ",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Tây Ấn Hà Lan",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ucraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua New Guinean",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Lào",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Cộng hòa Séc",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Iceland",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Thụy Điển",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Đan Mạch",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Na Uy",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanma",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Gruzia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "TRY": {
+ "name": "Lia Thổ Nhĩ Kỳ",
+ "symbol": "TRY"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litas Lít-va",
+ "symbol": "LTL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Bosnia-Herzegovina có thể chuyển đổi",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "CNY": {
+ "name": "Nhân dân tệ",
+ "symbol": "CN¥"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Ma Cao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Cuba có thể chuyển đổi",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso Dominica",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso Mexico",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso Philipin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Nam Phi",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Braxin",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Campuchia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Ả Rập Xê-út",
+ "symbol": "SAR"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maldives",
+ "symbol": "MVR"
+ },
+ "BYR": {
+ "name": "Rúp Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rúp Nga",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupee Ấn Độ",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "SOS": {
+ "name": "Schilling Somali",
+ "symbol": "SOS"
+ },
+ "ILS": {
+ "name": "Sheqel Israel mới",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakhstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mông Cổ",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Hàn Quốc",
+ "symbol": "₩"
+ },
+ "KPW": {
+ "name": "Won Triều Tiên",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yên Nhật",
+ "symbol": "JP¥"
+ },
+ "PLN": {
+ "name": "Zloty Ba Lan",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vun.json b/library/intl/resources/currency/vun.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/vun.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JP¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CN¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/wae.json b/library/intl/resources/currency/wae.json
new file mode 100644
index 000000000..9e0dcaa55
--- /dev/null
+++ b/library/intl/resources/currency/wae.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brasilianiši Real",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CNY": {
+ "name": "Chinesiši Yuan",
+ "symbol": "CN¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "USD": {
+ "name": "Dollar",
+ "symbol": "$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indiši Rupie",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "GBP": {
+ "name": "Pfund",
+ "symbol": "£"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rubel",
+ "symbol": "руб"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen",
+ "symbol": "¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/xog.json b/library/intl/resources/currency/xog.json
new file mode 100644
index 000000000..efca32231
--- /dev/null
+++ b/library/intl/resources/currency/xog.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biiru ya Esyopya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambya",
+ "symbol": "GMD"
+ },
+ "SDG": {
+ "name": "Dinaali ey’eSudaani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinaali ey’eTunizya",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Dinaali y’Aligerya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaali ya Baareeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaali ya Libya",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "Diraamu ey’eMoroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diraamu eya Emireeti",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobura ey’eSantome ne Purincipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doola ey’Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doola y’Awusiturelya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doola ya Liberya",
+ "symbol": "LRD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikudo ya Keepu Veredi",
+ "symbol": "CVE"
+ },
+ "MGA": {
+ "name": "Faranga ey’eMalagase",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faranga ey’eRwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ey’eSwitizirandi",
+ "symbol": "CHF"
+ },
+ "BIF": {
+ "name": "Faranga ya burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jjibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "XOF": {
+ "name": "Faranga yamu Afirika ya bugwanjuba",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga yamu Afirika ya wakati",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "MWK": {
+ "name": "Kwaca ey’eMalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwaca ey’eZambya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza y’Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoso",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "Nakifa ya Eritureya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira ey’eNayijerya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "SHP": {
+ "name": "Pawunda ey’eSenti Herena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pawunda ya Bungereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pawunda ya Misiri",
+ "symbol": "EGP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botiswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ey’eSawusafirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaali ey’eBuwarabu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiya ey’eMawurisyasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiya ey’eSesere",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya Buyindi",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Silingi ey’eSomaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ey’eTanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi eya Yuganda",
+ "symbol": "USh"
+ },
+ "KES": {
+ "name": "Silingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "MRO": {
+ "name": "Wugwiya ey’eMawritenya",
+ "symbol": "MRO"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yuwani Reniminibi ya Cayina",
+ "symbol": "CN¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yav.json b/library/intl/resources/currency/yav.json
new file mode 100644
index 000000000..369e6d3c8
--- /dev/null
+++ b/library/intl/resources/currency/yav.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "ɛskúdo u kápfɛ́ɛl",
+ "symbol": "CVE"
+ },
+ "CDF": {
+ "name": "́faláŋɛ u kongó",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "́faláŋɛ u kɔmɔ́ɔl",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "faláŋɛ u pulundí",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "́faláŋɛ u síputí",
+ "symbol": "DJF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "AOA": {
+ "name": "kuansa wu angolá",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "lífilɛ sitelelíiŋ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "lífilɛ wu isípit",
+ "symbol": "EGP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "náfka wu elitilée",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "EUR": {
+ "name": "olóo",
+ "symbol": "€"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "ETB": {
+ "name": "píil wu etiopí",
+ "symbol": "ETB"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula pu posuána",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "KES": {
+ "name": "síliŋ u kénia",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "GMD": {
+ "name": "talasí u kaambí",
+ "symbol": "GMD"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "DZD": {
+ "name": "tináal wu alselí",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "tináal wu paaléen",
+ "symbol": "BHD"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "CAD": {
+ "name": "toláal u kanáta",
+ "symbol": "CA$"
+ },
+ "AUD": {
+ "name": "toláal wu ostalalí",
+ "symbol": "A$"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "INR": {
+ "name": "ulupí",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "yɛ́ɛn u sapɔ́ɔŋ",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "yuan ɛlɛnmimbí",
+ "symbol": "CN¥"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yo-BJ.json b/library/intl/resources/currency/yo-BJ.json
new file mode 100644
index 000000000..8aee86ea1
--- /dev/null
+++ b/library/intl/resources/currency/yo-BJ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biri ti Orílɛ́ède Eutopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ti Orílɛ́ède Gamibia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "Diami ti Awon Orílɛ́ède Arabu",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dina ti Orílɛ́ède Àlùgèríánì",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dina ti Orílɛ́ède Báránì",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dina ti Orílɛ́ède Libiya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dina ti Orílɛ́ède Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dina ti Orílɛ́ède Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirami ti Orílɛ́ède Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobira ti Orílɛ́ède Sao tome Ati Pirisipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dɔla ti Orílɛ́ède Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dɔla ti Orílɛ́ède Ástràlìá",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dɔla ti Orílɛ́ède Kánádà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dɔla ti Orílɛ́ède Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dɔla ti Orílɛ́ède Namibia",
+ "symbol": "NAD"
+ },
+ "XAF": {
+ "name": "Faransi ti Orílɛ́ède BEKA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Faransi ti Orílɛ́ède BIKEAO",
+ "symbol": "CFA"
+ },
+ "BIF": {
+ "name": "Faransi ti Orílɛ́ède Bùùrúndì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faransi ti Orílɛ́ède Dibouti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Faransi ti Orílɛ́ède Kóngò",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faransi ti Orílɛ́ède Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faransi ti Orílɛ́ède Ruwanda",
+ "symbol": "RWF"
+ },
+ "KMF": {
+ "name": "Faransi ti Orílɛ́ède shomoriani",
+ "symbol": "KMF"
+ },
+ "CHF": {
+ "name": "Faransi ti Orílɛ́ède Siwisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kabofediano ti Orílɛ́ède Esuodo",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Kasha ti Orílɛ́ède Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kawasha ti Orílɛ́ède Saabia",
+ "symbol": "ZMW"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lioni",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ti Orílɛ́ède Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ti Orílɛ́ède Nàìjíríà",
+ "symbol": "₦"
+ },
+ "ERN": {
+ "name": "Nakifa ti Orílɛ́ède Eriteriani",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya ti Orílɛ́ède Maritania",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "Pɔɔn ti Orílɛ́ède Bírítísì",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pɔɔn ti Orílɛ́ède Egipiti",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pɔɔun ti Orílɛ́ède ̣Elena",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "Pula ti Orílɛ́ède Bɔ̀tìsúwánà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ti Orílɛ́ède Ariwa Afirika",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Reminibi ti Orílɛ́ède sháínà",
+ "symbol": "CN¥"
+ },
+ "SAR": {
+ "name": "Riya ti Orílɛ́ède Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ti Orílɛ́ède Indina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ti Orílɛ́ède Maritiusi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ti Orílɛ́ède Sayiselesi",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shiili ti Orílɛ́ède Kenya",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Siile ti Orílɛ́ède Uganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Sile ti Orílɛ́ède Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sile ti Orílɛ́ède Tansania",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uro",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "AOA": {
+ "name": "Wansa ti Orílɛ́ède Àngólà",
+ "symbol": "AOA"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ti Orílɛ́ède Japani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yo.json b/library/intl/resources/currency/yo.json
new file mode 100644
index 000000000..80e5daf46
--- /dev/null
+++ b/library/intl/resources/currency/yo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biri ti Orílẹ́ède Eutopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ti Orílẹ́ède Gamibia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "Diami ti Awon Orílẹ́ède Arabu",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dina ti Orílẹ́ède Àlùgèríánì",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dina ti Orílẹ́ède Báránì",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dina ti Orílẹ́ède Libiya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dina ti Orílẹ́ède Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dina ti Orílẹ́ède Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirami ti Orílẹ́ède Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobira ti Orílẹ́ède Sao tome Ati Pirisipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dọla ti Orílẹ́ède Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dọla ti Orílẹ́ède Ástràlìá",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dọla ti Orílẹ́ède Kánádà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dọla ti Orílẹ́ède Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dọla ti Orílẹ́ède Namibia",
+ "symbol": "NAD"
+ },
+ "XAF": {
+ "name": "Faransi ti Orílẹ́ède BEKA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Faransi ti Orílẹ́ède BIKEAO",
+ "symbol": "CFA"
+ },
+ "BIF": {
+ "name": "Faransi ti Orílẹ́ède Bùùrúndì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faransi ti Orílẹ́ède Dibouti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Faransi ti Orílẹ́ède Kóngò",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faransi ti Orílẹ́ède Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faransi ti Orílẹ́ède Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faransi ti Orílẹ́ède Siwisi",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Faransi ti Orílẹ́ède ṣomoriani",
+ "symbol": "KMF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kabofediano ti Orílẹ́ède Esuodo",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Kaṣa ti Orílẹ́ède Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kawaṣa ti Orílẹ́ède Saabia",
+ "symbol": "ZMW"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lioni",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ti Orílẹ́ède Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ti Orílẹ́ède Nàìjíríà",
+ "symbol": "₦"
+ },
+ "ERN": {
+ "name": "Nakifa ti Orílẹ́ède Eriteriani",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya ti Orílẹ́ède Maritania",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "Pọọn ti Orílẹ́ède Bírítísì",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pọọn ti Orílẹ́ède Egipiti",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pọọun ti Orílẹ́ède ̣Elena",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "Pula ti Orílẹ́ède Bọ̀tìsúwánà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ti Orílẹ́ède Ariwa Afirika",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Reminibi ti Orílẹ́ède ṣáínà",
+ "symbol": "CN¥"
+ },
+ "SAR": {
+ "name": "Riya ti Orílẹ́ède Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ti Orílẹ́ède Indina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ti Orílẹ́ède Maritiusi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ti Orílẹ́ède Sayiselesi",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "UGX": {
+ "name": "Siile ti Orílẹ́ède Uganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Sile ti Orílẹ́ède Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sile ti Orílẹ́ède Tansania",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "KES": {
+ "name": "ṣiili ti Orílẹ́ède Kenya",
+ "symbol": "KES"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uro",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "AOA": {
+ "name": "Wansa ti Orílẹ́ède Àngólà",
+ "symbol": "AOA"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ti Orílẹ́ède Japani",
+ "symbol": "JP¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zgh.json b/library/intl/resources/currency/zgh.json
new file mode 100644
index 000000000..e742e8906
--- /dev/null
+++ b/library/intl/resources/currency/zgh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "₩"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "₫"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "BWP": {
+ "name": "ⴰⴱⵓⵍⴰ ⵏ ⴱⵓⵜⵙⵡⴰⵏⴰ",
+ "symbol": "BWP"
+ },
+ "BHD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⴱⵃⵔⴰⵢⵏ",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⴷⵣⴰⵢⵔ",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵍⵉⴱⵢⴰ",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵙⵙⵓⴷⴰⵏ",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "ⴰⴷⵉⵏⴰⵔ ⵏ ⵜⵓⵏⵙ",
+ "symbol": "TND"
+ },
+ "STD": {
+ "name": "ⴰⴷⵓⴱⵔⴰ ⵏ ⵙⴰⵏⵟⵓⵎⵉ",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⴽⴰⵏⴰⴷⴰ",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵉⵡⵓⵏⴰⴽ ⵉⵎⵓⵏⵏ",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵍⵉⴱⵉⵔⵢⴰ",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵏⴰⵎⵉⴱⵢⴰ",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵓⵙⵜⵔⴰⵍⵢⴰ",
+ "symbol": "A$"
+ },
+ "ZWL": {
+ "name": "ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ (2009)",
+ "symbol": "ZWL"
+ },
+ "AED": {
+ "name": "ⴰⴷⵔⵉⵎ ⵏ ⵍⵉⵎⴰⵔⴰⵜ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ",
+ "symbol": "MAD"
+ },
+ "RWF": {
+ "name": "ⴰⴼⵔⴰⵏⴽ ⵏ ⵔⵡⴰⵏⴷⴰ",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ⴰⴼⵔⴰⵏⴽ ⵏ ⵙⵡⵉⵙⵔⴰ",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ",
+ "symbol": "ZMW"
+ },
+ "GBP": {
+ "name": "ⴰⵊⵏⵉⵀ ⴰⵙⵜⵔⵍⵉⵏⵉ ⵏ ⵏⵏⴳⵍⵉⵣ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ⴰⵊⵏⵉⵀ ⵏ ⵎⵉⵚⵕ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ⴰⵊⵏⵉⵀ ⵏ ⵙⴰⵏⵜⵉⵍⵉⵏ",
+ "symbol": "SHP"
+ },
+ "MZN": {
+ "name": "ⴰⵎⵉⵜⵉⴽⵍ ⵏ ⵎⵓⵣⵏⴱⵉⵇ",
+ "symbol": "MZN"
+ },
+ "ZAR": {
+ "name": "ⴰⵔⴰⵏⴷ ⵏ ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ",
+ "symbol": "ZAR"
+ },
+ "INR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵍⵀⵉⵏⴷ",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵎⵓⵔⵉⵙ",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵏ ⵙⵙⵉⵛⵉⵍ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ⴰⵔⵢⴰⵍ ⵏ ⵙⵙⴰⵄⵓⴷⵉⵢⴰ",
+ "symbol": "SAR"
+ },
+ "KES": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⴽⵉⵏⵢⴰ",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵓⵖⴰⵏⴷⴰ",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵚⵚⵓⵎⴰⵍ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ⴰⵛⵉⵍⵉⵏ ⵏ ⵟⴰⵏⵥⴰⵏⵢⴰ",
+ "symbol": "TZS"
+ },
+ "JPY": {
+ "name": "ⴰⵢⴰⵏ ⵏ ⵍⵢⴰⴱⴰⵏ",
+ "symbol": "JP¥"
+ },
+ "CNY": {
+ "name": "ⴰⵢⴰⵏ ⵏ ⵛⵛⵉⵏⵡⴰ",
+ "symbol": "CN¥"
+ },
+ "ETB": {
+ "name": "ⴱⵉⵔ ⵏ ⵉⵜⵢⵓⴱⵢⴰ",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "ⴷⴰⵍⴰⵙⵉ ⵏ ⴳⴰⵎⴱⵢⴰ",
+ "symbol": "GMD"
+ },
+ "BIF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴱⵓⵔⵓⵏⴷⵉ",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴷⵊⵉⴱⵓⵜⵉ",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⴽⵓⵏⴳⵓ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⵇⵓⵎⵓⵕ",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "ⴼⵔⴰⵏⴽ ⵏ ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ",
+ "symbol": "MGA"
+ },
+ "XAF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "ⴽⵡⴰⵏⵣⴰ ⵏ ⴰⵏⴳⵓⵍⴰ",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "ⴽⵡⴰⵛⴰ ⵏ ⵎⴰⵍⴰⵡⵉ",
+ "symbol": "MWK"
+ },
+ "CVE": {
+ "name": "ⵉⵙⴽⵓⴷⵓ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ",
+ "symbol": "CVE"
+ },
+ "SZL": {
+ "name": "ⵍⵉⵍⴰⵏⵊⵉⵏⵉ",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "ⵍⵉⵢⵓⵏ",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "ⵍⵓⵜⵉ ⵏ ⵍⵉⵚⵓⵟⵓ",
+ "symbol": "LSL"
+ },
+ "ERN": {
+ "name": "ⵏⴰⴼⴽⴰ ⵏ ⵉⵔⵉⵜⵉⵔⵢⴰ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ⵏⴰⵢⵔⴰ ⵏ ⵏⵉⵊⵉⵔⵢⴰ",
+ "symbol": "NGN"
+ },
+ "MRO": {
+ "name": "ⵓⵇⵉⵢⵢⴰ ⵏ ⵎⵓⵕⵉⵟⴰⵏⵢⴰ",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "ⵓⵔⵓ",
+ "symbol": "€"
+ },
+ "GHS": {
+ "name": "ⵙⵉⴷⵉ ⵏ ⵖⴰⵏⴰ",
+ "symbol": "GHS"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-HK.json b/library/intl/resources/currency/zh-Hans-HK.json
new file mode 100644
index 000000000..6f1285083
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-HK.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔及利亚第纳尔",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿联酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿鲁巴弗罗林",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃及镑",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯坦卢比",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯卢布",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "保加利亚新列弗",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗提",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那可兑换马克",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "博茨瓦纳普拉",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "不丹努尔特鲁姆",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "朝鲜元",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "俄罗斯卢布",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "非洲金融共同体法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "菲律宾比索",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "斐济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "福克兰群岛镑",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "格鲁吉亚拉里",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "古巴比索",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "古巴可兑换比索",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈萨克斯坦腾格",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "荷属安的列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯拉伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "吉布提法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉尔吉斯斯坦索姆",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "捷克克郎",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "卡塔尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼群岛元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科威特第纳尔",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "老挝基普",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "卢旺达法郎",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫卢菲亚",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马来西亚林吉特",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯卢比",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌吉亚",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "蒙古图格里克",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘鲁新索尔",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "南非兰特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南苏丹镑",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔卢比",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民币",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JP¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "萨尔瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "萨摩亚塔拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔卢比",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰卡卢比",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "斯威士兰里兰吉尼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "苏丹镑",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "苏里南元",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "塔吉克斯坦索莫尼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "泰铢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "坦桑尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "突尼斯第纳尔",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯坦马纳特",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "危地马拉格查尔",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰赫夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯坦苏姆",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新台币",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "叙利亚镑",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "印度卢比",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "印度尼西亚盾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中非金融合作法郎",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-MO.json b/library/intl/resources/currency/zh-Hans-MO.json
new file mode 100644
index 000000000..a2acb7cc9
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-MO.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔及利亚第纳尔",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿联酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿鲁巴弗罗林",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃及镑",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP$"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯坦卢比",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯卢布",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "保加利亚新列弗",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗提",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那可兑换马克",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "博茨瓦纳普拉",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "不丹努尔特鲁姆",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "朝鲜元",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "俄罗斯卢布",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "非洲金融共同体法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "菲律宾比索",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "斐济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "福克兰群岛镑",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "格鲁吉亚拉里",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "古巴比索",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "古巴可兑换比索",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈萨克斯坦腾格",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "荷属安的列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "吉布提法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉尔吉斯斯坦索姆",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "捷克克郎",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "卡塔尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科威特第纳尔",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "老挝基普",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "卢旺达法郎",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫卢菲亚",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马来西亚林吉特",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯卢比",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌吉亚",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "蒙古图格里克",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘鲁新索尔",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "南非兰特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南苏丹镑",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔卢比",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民币",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JP¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "萨尔瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "萨摩亚塔拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔卢比",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰卡卢比",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "斯威士兰里兰吉尼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "苏丹镑",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "苏里南元",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "塔吉克斯坦索莫尼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "泰铢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "坦桑尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "突尼斯第纳尔",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯坦马纳特",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "危地马拉格查尔",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯坦苏姆",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新台币",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "叙利亚镑",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "印度卢比",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "印度尼西亚盾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中非金融合作法郎",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-SG.json b/library/intl/resources/currency/zh-Hans-SG.json
new file mode 100644
index 000000000..f092694fa
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-SG.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔及利亚第纳尔",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿联酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿鲁巴弗罗林",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃及镑",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯坦卢比",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯卢布",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "保加利亚新列弗",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗提",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那可兑换马克",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "博茨瓦纳普拉",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "不丹努尔特鲁姆",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "朝鲜元",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "俄罗斯卢布",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "非洲金融共同体法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "菲律宾比索",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "斐济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "福克兰群岛镑",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "格鲁吉亚拉里",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "古巴比索",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "古巴可兑换比索",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈萨克斯坦腾格",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "荷属安的列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "吉布提法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉尔吉斯斯坦索姆",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "捷克克郎",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "卡塔尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科威特第纳尔",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "老挝基普",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "卢旺达法郎",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫卢菲亚",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马来西亚林吉特",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯卢比",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌吉亚",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "蒙古图格里克",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘鲁新索尔",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "南非兰特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南苏丹镑",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔卢比",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民币",
+ "symbol": "CN¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JP¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "萨尔瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "萨摩亚塔拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔卢比",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰卡卢比",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "斯威士兰里兰吉尼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "苏丹镑",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "苏里南元",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "塔吉克斯坦索莫尼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "泰铢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "坦桑尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "突尼斯第纳尔",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯坦马纳特",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "危地马拉格查尔",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯坦苏姆",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "$"
+ },
+ "TWD": {
+ "name": "新台币",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "叙利亚镑",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "印度卢比",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "印度尼西亚盾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中非金融合作法郎",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant-HK.json b/library/intl/resources/currency/zh-Hant-HK.json
new file mode 100644
index 000000000..26ee4ec91
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant-HK.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CN¥"
+ },
+ "YER": {
+ "name": "也門里雅",
+ "symbol": "YER"
+ },
+ "TTD": {
+ "name": "千里達及托巴哥元",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬納特",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "不丹那特倫",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "中非法郎",
+ "symbol": "FCFA"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞納克法",
+ "symbol": "ERN"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亞新畿內亞基那",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第納爾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯坦盧比",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "¥"
+ },
+ "MUR": {
+ "name": "毛里求斯盧布",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亞烏吉亞",
+ "symbol": "MRO"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新謝克爾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加納塞地",
+ "symbol": "GHS"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "卡扎克斯坦坦吉",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "卡塔爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "古巴可轉換披索",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "古巴披索",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "史瓦濟蘭里朗吉尼",
+ "symbol": "SZL"
+ },
+ "NGN": {
+ "name": "尼日利亞奈拉",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "VUV": {
+ "name": "瓦努阿圖瓦圖",
+ "symbol": "VUV"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第納爾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "印尼盾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "印度盧比",
+ "symbol": "₹"
+ },
+ "GTQ": {
+ "name": "危地馬拉格查爾",
+ "symbol": "GTQ"
+ },
+ "DJF": {
+ "name": "吉布地法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉爾吉斯索姆",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "XOF": {
+ "name": "多哥非洲共同體法郎",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕達幣",
+ "symbol": "BMD"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "BZD": {
+ "name": "伯利茲元",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "克羅地亞庫納",
+ "symbol": "HRK"
+ },
+ "LRD": {
+ "name": "利比利亞元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亞第納爾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶萊元",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "沙特阿拉伯里亞爾",
+ "symbol": "SAR"
+ },
+ "ZWL": {
+ "name": "辛巴威元 (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜疆馬納特",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "坦尚尼亞先令",
+ "symbol": "TZS"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "GMD": {
+ "name": "岡比亞達拉西",
+ "symbol": "GMD"
+ },
+ "SBD": {
+ "name": "所羅門群島元",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "東加勒比元",
+ "symbol": "EC$"
+ },
+ "TOP": {
+ "name": "東加潘加",
+ "symbol": "TOP"
+ },
+ "BAM": {
+ "name": "波士尼亞與赫塞哥維納可轉換馬克",
+ "symbol": "BAM"
+ },
+ "PLN": {
+ "name": "波蘭茲羅提",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯聯合酋長國迪爾汗",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "阿爾及利亞第納爾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "阿魯巴盾",
+ "symbol": "AWG"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "保加利亞新列弗",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "南非蘭特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科威特第納爾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "突尼西亞第納爾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第納爾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯達黎加科郎",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃及鎊",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亞比爾",
+ "symbol": "ETB"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "GEL": {
+ "name": "格魯吉亞拉里",
+ "symbol": "GEL"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "烏干達先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "烏克蘭格里夫納",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "烏拉圭披索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "烏茲別克索姆",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "納米比亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "紐西蘭元",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "MYR": {
+ "name": "馬來西亞令吉",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第納爾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬達加斯加艾瑞爾",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾代夫盧非亞",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "捷克克朗",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "荷屬安地列斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "BWP": {
+ "name": "博茨瓦納普拉",
+ "symbol": "BWP"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "斐濟元",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭卡盧比",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "菲律賓披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "塔吉克索莫尼",
+ "symbol": "TJS"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞第納爾",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新台幣",
+ "symbol": "NT$"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "STD": {
+ "name": "聖多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "聖赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "福克蘭群島鎊",
+ "symbol": "FKP"
+ },
+ "MNT": {
+ "name": "蒙古圖格里克",
+ "symbol": "MNT"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "摩杜雲列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "EUR": {
+ "name": "歐元",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "AUD": {
+ "name": "澳元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP"
+ },
+ "RWF": {
+ "name": "盧旺達法郎",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "₩"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利南元",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant-MO.json b/library/intl/resources/currency/zh-Hant-MO.json
new file mode 100644
index 000000000..f8bf02f41
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant-MO.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CN¥"
+ },
+ "YER": {
+ "name": "也門里雅",
+ "symbol": "YER"
+ },
+ "TTD": {
+ "name": "千里達及托巴哥元",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬納特",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "不丹那特倫",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "中非法郎",
+ "symbol": "FCFA"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞納克法",
+ "symbol": "ERN"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亞新畿內亞基那",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第納爾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯坦盧比",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "¥"
+ },
+ "MUR": {
+ "name": "毛里求斯盧布",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亞烏吉亞",
+ "symbol": "MRO"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新謝克爾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加納塞地",
+ "symbol": "GHS"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "卡扎克斯坦坦吉",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "卡塔爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "古巴可轉換披索",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "古巴披索",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "史瓦濟蘭里朗吉尼",
+ "symbol": "SZL"
+ },
+ "NGN": {
+ "name": "尼日利亞奈拉",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "VUV": {
+ "name": "瓦努阿圖瓦圖",
+ "symbol": "VUV"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第納爾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "印尼盾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "印度盧比",
+ "symbol": "₹"
+ },
+ "GTQ": {
+ "name": "危地馬拉格查爾",
+ "symbol": "GTQ"
+ },
+ "DJF": {
+ "name": "吉布地法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉爾吉斯索姆",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "XOF": {
+ "name": "多哥非洲共同體法郎",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕達幣",
+ "symbol": "BMD"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "BZD": {
+ "name": "伯利茲元",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "克羅地亞庫納",
+ "symbol": "HRK"
+ },
+ "LRD": {
+ "name": "利比利亞元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亞第納爾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶萊元",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "沙特阿拉伯里亞爾",
+ "symbol": "SAR"
+ },
+ "ZWL": {
+ "name": "辛巴威元 (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜疆馬納特",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "坦尚尼亞先令",
+ "symbol": "TZS"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "GMD": {
+ "name": "岡比亞達拉西",
+ "symbol": "GMD"
+ },
+ "SBD": {
+ "name": "所羅門群島元",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "東加勒比元",
+ "symbol": "EC$"
+ },
+ "TOP": {
+ "name": "東加潘加",
+ "symbol": "TOP"
+ },
+ "BAM": {
+ "name": "波士尼亞與赫塞哥維納可轉換馬克",
+ "symbol": "BAM"
+ },
+ "PLN": {
+ "name": "波蘭茲羅提",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯聯合酋長國迪爾汗",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "阿爾及利亞第納爾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "阿魯巴盾",
+ "symbol": "AWG"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "保加利亞新列弗",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "南非蘭特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科威特第納爾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "突尼西亞第納爾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第納爾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯達黎加科郎",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃及鎊",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亞比爾",
+ "symbol": "ETB"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "GEL": {
+ "name": "格魯吉亞拉里",
+ "symbol": "GEL"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "烏干達先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "烏克蘭格里夫納",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "烏拉圭披索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "烏茲別克索姆",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "納米比亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "紐西蘭元",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "MYR": {
+ "name": "馬來西亞令吉",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第納爾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬達加斯加艾瑞爾",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾代夫盧非亞",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "捷克克朗",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "荷屬安地列斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "BWP": {
+ "name": "博茨瓦納普拉",
+ "symbol": "BWP"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "斐濟元",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭卡盧比",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "菲律賓披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "塔吉克索莫尼",
+ "symbol": "TJS"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞第納爾",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新台幣",
+ "symbol": "NT$"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "STD": {
+ "name": "聖多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "聖赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "福克蘭群島鎊",
+ "symbol": "FKP"
+ },
+ "MNT": {
+ "name": "蒙古圖格里克",
+ "symbol": "MNT"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "摩杜雲列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "EUR": {
+ "name": "歐元",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "AUD": {
+ "name": "澳元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP$"
+ },
+ "RWF": {
+ "name": "盧旺達法郎",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "₩"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利南元",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant.json b/library/intl/resources/currency/zh-Hant.json
new file mode 100644
index 000000000..7d5eb5cbc
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CN¥"
+ },
+ "TTD": {
+ "name": "千里達及托巴哥元",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬納特",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "不丹那特倫",
+ "symbol": "BTN"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞納克法",
+ "symbol": "ERN"
+ },
+ "PGK": {
+ "name": "巴布亞紐幾內亞基那",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "BBD": {
+ "name": "巴貝多元",
+ "symbol": "BBD"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第納爾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯坦盧比",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "¥"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新謝克爾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加幣",
+ "symbol": "CA$"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "卡扎克斯坦坦吉",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "卡達爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "古巴可轉換披索",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "古巴披索",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "史瓦濟蘭里朗吉尼",
+ "symbol": "SZL"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "GTQ": {
+ "name": "瓜地馬拉格查爾",
+ "symbol": "GTQ"
+ },
+ "GMD": {
+ "name": "甘比亞達拉西",
+ "symbol": "GMD"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第納爾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "印尼盾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "印度盧比",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "吉布地法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉爾吉斯索姆",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕達幣",
+ "symbol": "BMD"
+ },
+ "ETB": {
+ "name": "衣索比亞比爾",
+ "symbol": "ETB"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "HRK": {
+ "name": "克羅埃西亞庫納",
+ "symbol": "HRK"
+ },
+ "LYD": {
+ "name": "利比亞第納爾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶萊元",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "沙烏地里雅",
+ "symbol": "SAR"
+ },
+ "BZD": {
+ "name": "貝里斯元",
+ "symbol": "BZD"
+ },
+ "ZWL": {
+ "name": "辛巴威元 (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜然馬納特",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "坦尚尼亞先令",
+ "symbol": "TZS"
+ },
+ "NGN": {
+ "name": "奈及利亞奈拉",
+ "symbol": "NGN"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "TOP": {
+ "name": "東加潘加",
+ "symbol": "TOP"
+ },
+ "XOF": {
+ "name": "法郎 (CFA–BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "法郎 (CFA–BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "法郎 (CFP)",
+ "symbol": "CFPF"
+ },
+ "BAM": {
+ "name": "波士尼亞-赫塞哥維納可轉換馬克",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "波札那普拉",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "波蘭茲羅提",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯聯合大公國迪爾汗",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "阿路巴盾",
+ "symbol": "AWG"
+ },
+ "DZD": {
+ "name": "阿爾及利亞第納爾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "保加利亞新列弗",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "南非蘭特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科威特第納爾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "突尼西亞第納爾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第納爾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "MRO": {
+ "name": "茅利塔尼亞烏吉亞",
+ "symbol": "MRO"
+ },
+ "GHS": {
+ "name": "迦納塞地",
+ "symbol": "GHS"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯大黎加科朗",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃及鎊",
+ "symbol": "EGP"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "XCD": {
+ "name": "格瑞那達元",
+ "symbol": "EC$"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "烏干達先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "烏克蘭格里夫納",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "烏拉圭披索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "烏茲別克索姆",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "納米比亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "紐西蘭幣",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "索羅門群島元",
+ "symbol": "SBD"
+ },
+ "MYR": {
+ "name": "馬來西亞令吉",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第納爾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬達加斯加阿里亞里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾地夫盧非亞",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "捷克克朗",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "荷屬安地列斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫三比克梅蒂卡爾",
+ "symbol": "MZN"
+ },
+ "GEL": {
+ "name": "喬治亞拉里",
+ "symbol": "GEL"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "斐濟元",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭卡盧比",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港幣",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "菲律賓披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "塔吉克索莫尼",
+ "symbol": "TJS"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞戴納",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加坡幣",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新臺幣",
+ "symbol": "NT$"
+ },
+ "SLL": {
+ "name": "獅子山利昂",
+ "symbol": "SLL"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "VUV": {
+ "name": "萬那杜瓦圖",
+ "symbol": "VUV"
+ },
+ "STD": {
+ "name": "聖多美島和普林西比島多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "聖赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "YER": {
+ "name": "葉門里雅",
+ "symbol": "YER"
+ },
+ "FKP": {
+ "name": "福克蘭群島鎊",
+ "symbol": "FKP"
+ },
+ "CVE": {
+ "name": "維德角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "MNT": {
+ "name": "蒙古圖格里克",
+ "symbol": "MNT"
+ },
+ "BIF": {
+ "name": "蒲隆地法郎",
+ "symbol": "BIF"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "摩杜雲列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "模里西斯盧布",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "歐元",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP"
+ },
+ "AUD": {
+ "name": "澳幣",
+ "symbol": "AU$"
+ },
+ "RWF": {
+ "name": "盧安達法郎",
+ "symbol": "RWF"
+ },
+ "LRD": {
+ "name": "賴比瑞亞元",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "₩"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利南元",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh.json b/library/intl/resources/currency/zh.json
new file mode 100644
index 000000000..ad5b0336f
--- /dev/null
+++ b/library/intl/resources/currency/zh.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔及利亚第纳尔",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿联酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿鲁巴基尔德元",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃及镑",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯坦卢比",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯卢布",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "保加利亚新列弗",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗提",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那可兑换马克",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "博茨瓦纳普拉",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "不丹努尔特鲁姆",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "朝鲜元",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "俄罗斯卢布",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "非洲金融共同体法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "菲律宾比索",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "斐济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "福克兰群岛镑",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "格鲁吉亚拉里",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "古巴比索",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "古巴可兑换比索",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈萨克斯坦坚戈",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地古德",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "荷属安的列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "吉布提法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "吉尔吉斯斯坦索姆",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "捷克克郎",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "卡塔尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科威特第纳尔",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "老挝基普",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "卢旺达法郎",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫卢菲亚",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马来西亚林吉特",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯卢比",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌吉亚",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "蒙古图格里克",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔卡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘鲁新索尔",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美提卡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "南非兰特",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "南苏丹镑",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔卢比",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪威克朗",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民币",
+ "symbol": "¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JP¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "萨尔瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "萨摩亚塔拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔卢比",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰卡卢比",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "斯威士兰里兰吉尼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "苏丹镑",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "苏里南元",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "塔吉克斯坦索莫尼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "泰铢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "坦桑尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "突尼斯第纳尔",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯坦马纳特",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "危地马拉格查尔",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯坦苏姆",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加坡元",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新台币",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利福林",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "叙利亚镑",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "印度卢比",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "印度尼西亚盾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越南盾",
+ "symbol": "₫"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中非金融合作法郎",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zu.json b/library/intl/resources/currency/zu.json
new file mode 100644
index 000000000..59d82092a
--- /dev/null
+++ b/library/intl/resources/currency/zu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "i-Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "i-Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "i-Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "i-Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "i-Argentina Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "i-Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "i-Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "i-Austrilian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "i-Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "i-Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "i-Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "i-Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "i-Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "i-Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "i-Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "i-Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "i-Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "i-Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "i-Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "i-Botswana Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "i-Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "i-British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "i-Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "i-Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "i-Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "i-Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "i-Candian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "i-Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "i-Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "i-CFA Franc BCEA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "i-CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "i-CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "i-Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "i-Chinese Yuan",
+ "symbol": "CN¥"
+ },
+ "COP": {
+ "name": "i-Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "i-Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "i-Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "i-Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "i-Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "i-Cuban Convertable Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "I-Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "i-Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "i-Danish Krone",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "i-Dirham yase-United Arab Emirates",
+ "symbol": "AED"
+ },
+ "DJF": {
+ "name": "i-Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "i-Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "i-East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "i-Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "i-Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "i-Ethopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "i-Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "i-Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "i-Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "i-Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "i-Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "i-Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "i-Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "i-Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "i-Gunean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "i-Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "i-Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "i-Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "i-Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "i-Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "i-Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "i-Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "i-Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "i-Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "i-Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "i-Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "i-Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "i-Japanese Yen",
+ "symbol": "JP¥"
+ },
+ "JOD": {
+ "name": "i-Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "i-Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "i-Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "i-Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "i-Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "i-Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "i-Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "i-Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "i-Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "i-Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "i-Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "i-Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "i-Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "i-Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "i-Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "i-Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "i-Maldivian Rufiyana",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "i-Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "i-Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "I-Metical yase-Mozambicque",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "i-Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "i-Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "i-Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "i-Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "i-Myanma Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "i-Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "i-Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "i-Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "i-New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "i-New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "i-Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "i-Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "i-North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "i-Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "i-Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "i-Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "i-Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "i-Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "i-Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "i-Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "i-Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "i-Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "i-Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "I-Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "i-Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "i-Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "i-Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "i-Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "i-São Tomé kanye ne-Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "i-Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "i-Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "i-Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "i-Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "i-Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "i-Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "i-Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "i-South African Rand",
+ "symbol": "R"
+ },
+ "KRW": {
+ "name": "i-South Korean Won",
+ "symbol": "₩"
+ },
+ "LKR": {
+ "name": "i-Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "i-Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "i-Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "i-Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "i-Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "i-Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "i-Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "i-Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "i-Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "i-Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "i-Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "i-Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "i-Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "i-Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "i-Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "i-Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "i-Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "i-Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "i-US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "i-Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "i-Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "i-Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "i-Vietnamese Dong",
+ "symbol": "₫"
+ },
+ "YER": {
+ "name": "i-Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "i-Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SSP": {
+ "name": "Upondo waseNingizimu Sudan",
+ "symbol": "SSP"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/af.json b/library/intl/resources/language/af.json
new file mode 100644
index 000000000..1b704362f
--- /dev/null
+++ b/library/intl/resources/language/af.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanees"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharies"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabies"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeens"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidjans"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskies"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaals"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmaans"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnies"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretons"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaars"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokees"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deens"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnies"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroees"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filippyns"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fins"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisies"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgies"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Goedjarati"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieks"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeus"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaars"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Hoog-Sorbies"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iers"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesies"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaans"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japannees"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmirs"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaans"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazaks"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisies"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaans"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroaties"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lae Sorbies"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letties"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingaals"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litaus"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malabaars"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malgassies"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masedonies"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Moderne Standaard Arabies"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawies"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisjen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlands"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noord-Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noordelike Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noorse Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noorweegse Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oerdoe"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persies"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pools"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaans"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeens"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russies"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Sentraal Atlas Tamazight"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serwies"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Sjiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sjinees"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Skotse Gallies"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloweens"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalies"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standaard Marokkaanse Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili (Kongo)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweeds"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Switserse Duits"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Switserse hoog-Duits"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibettaans"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaans"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjeggies"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uighur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viëtnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wallies"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Wes-Fries"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wit-Russies"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yslands"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zoeloe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/agq.json b/library/intl/resources/language/agq.json
new file mode 100644
index 000000000..fcd1c1c03
--- /dev/null
+++ b/library/intl/resources/language/agq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Àlabì"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Àmalì"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bɛ̀làlusàn"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bɨ̀ŋgalì"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bùugɨlìa"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bùumɛsɛ̀"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chàenê"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Chɛ̂"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɔ̂s"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Dzàkpànê"
+ },
+ "de": {
+ "code": "de",
+ "name": "Dzamɛ̀"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Endì"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èndònɛshìa"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ètalìa"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gɨ̀lêʔ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔŋgalìa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kɨ̀fàlàŋsi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kɨmɛ̀"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kɨŋgele"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kɨtsɔŋkaŋ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kpɛɛshìa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kpotùwgîi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kpɔlìs"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kpuwndzabì"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kùulîa"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Lùmanyìa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lushìa"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Màlae"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nɛ̀kpalì"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sɨ̀kpanìs"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Sòmalì"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suedìs"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tàe"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamì"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tʉʉkìs"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ùkɛlɛnìa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Uudùw"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vìyɛtnàmê"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yulùba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulù"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ak.json b/library/intl/resources/language/ak.json
new file mode 100644
index 000000000..8cdc120a1
--- /dev/null
+++ b/library/intl/resources/language/ak.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabik"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarus kasa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali kasa"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bɛɛmis kasa"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Borɔfo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bɔlgeria kasa"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɛɛkye"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frɛnkye"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek kasa"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gyaaman"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Gyapan kasa"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hangri kasa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonihyia kasa"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italy kasa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodia kasa"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea kasa"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyaena kasa"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyɛk kasa"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay kasa"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nɛpal kasa"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pɛɛhyia kasa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pɔland kasa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Pɔɔtugal kasa"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pungyabi kasa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rahyia kasa"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romenia kasa"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalia kasa"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spain kasa"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweden kasa"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taeland kasa"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil kasa"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tɛɛki kasa"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukren kasa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu kasa"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viɛtnam kasa"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/am.json b/library/intl/resources/language/am.json
new file mode 100644
index 000000000..5c46a5c45
--- /dev/null
+++ b/library/intl/resources/language/am.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ሀንጋሪኛ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ሃውሳኛ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ሉባ ካታንጋ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ሉቴንያንኛ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ሉኦ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ሉክዘምበርገርኛ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ሉዪያ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ሊንጋላኛ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ላትቪያን"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ላንጊ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ላውስኛ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ልቤኒኛ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ሒንዱኛ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "መካከለኛ አትላስ ታማዚግት"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "መደበኛ የሞሮኮ ታማዚግት"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ሙንዳንግ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ማላያላምኛ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ማላይኛ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ማላጋስኛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ማልቲስኛ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ማራቲኛ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ማሳይ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ማሴዶንኛ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ማቻሜኛ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ማኩዋ ሜቶ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ማኮንዴ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ሜሩ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ሞልዳቫዊና"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ሞሪሲየኛ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ሞንጎላዊኛ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ሩንዲኛ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ራሽኛ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ርዋ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ሮማኒያን"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ሮማንሽ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ሮምቦ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ሰሜናዊ ሳሚ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ሰሜን ንዴብሌ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ሰርቢኛ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ሱማልኛ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ሲንሃልኛ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ሳምቡሩ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ሳንጉ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ሳንጎኛ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ሴና"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ስሎቪኛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ስሎቫክኛ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ስዊድንኛ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ስዋሂሊኛ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ስፓኒሽ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ሶጋ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ሻምባላ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ሾናኛ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ቀለል ያለ ቻይንኛ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ቡልጋሪኛ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ቡርማኛ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ባህላዊ ቻይንኛ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ባምባርኛ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ባስክኛ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ባፊያ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ቤላራሻኛ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ቤና"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ቤንጋሊኛ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ብሬቶንኛ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ቦስኒያንኛ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ቦዶ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ቩንጆ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ቪትናምኛ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ቫይ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ተሉጉኛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ቱርክኛ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ቲቤታንኛ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ታሚልኛ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ታሳዋቅ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ታቼልሂት"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ታይታኛ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ታይኛ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ቴሶ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ትግርኛ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ቶንጋኛ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ቺጋኛ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ቻይንኛ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ቼሮኬኛ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ቼክኛ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ኑዌር"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ኒያንኮልኛ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ናማ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ኔፓሊኛ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ንጎባኛ"
+ },
+ "am": {
+ "code": "am",
+ "name": "አማርኛ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "አርመናዊ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "አሱ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "አካንኛ"
+ },
+ "az": {
+ "code": "az",
+ "name": "አዘርባጃንኛ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "አይሪሽ"
+ },
+ "is": {
+ "code": "is",
+ "name": "አይስላንድኛ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "አገም"
+ },
+ "af": {
+ "code": "af",
+ "name": "አፍሪካንኛ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ኡርዱኛ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ኡዊግሁርኛ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ኡዝቤክኛ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ኢስቶኒያንኛ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ኢቦኛ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ኢንዶኔዥኛ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ኢዊ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ኤስፐራንቶ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "እስኮትስ ጌልክኛ"
+ },
+ "en": {
+ "code": "en",
+ "name": "እንግሊዝኛ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ኦሪያኛ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ኪርጊዝኛ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ኪኩዩ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ካለንጂን"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ካላሊሱትኛ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ካምባ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ካሽሚርኛ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ካቡቨርዲያኑ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ካብይል"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ካታላንኛ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ካናዳኛ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ካዛክኛ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ክመርኛ ማእከላዊ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ክሮሽያንኛ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ክዋሲዮ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ኮሪያኛ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ኮንጎ ስዋሂሊ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ኮይራ ቺኒ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ኮይራቦሮ ሴኒ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ወልሽ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ዓረብኛ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ዕብራስጥ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ዘመናዊ መደበኛ ዓረብኛ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ዙሉኛ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ዛርማኛ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "የላይኛው ሶርቢያንኛ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "የምዕራብ ፍሪስኛ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "የስዊዝ ከፍተኛ ጀርመንኛ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "የስዊዝ ጀርመን"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "የስዊዝ ፈረንሳይኛ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "የብሪቲሽ እንግሊዝኛ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "የብራዚል ፖርቹጋልኛ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "የታችኛው ሶርቢያንኛ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "የኖርዌይ ቦክማል"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "የኖርዌይ ናይኖርስክ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "የአሜሪካ እንግሊዝኛ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "የአውሮፓ እስፓንኛ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "የአውሮፓ ፖርቹጋልኛ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "የአውስትራሊያ እንግሊዝኛ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "የኦስትሪያ ጀርመን"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "የካናዳ እንግሊዝኛ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "የካናዳ ፈረንሳይኛ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ዩክሬንኛ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ዮሩባዊኛ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ደች"
+ },
+ "da": {
+ "code": "da",
+ "name": "ዴኒሽ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ድዞንግኻኛ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ጀርመን"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ጃፓንኛ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ጆላ ፎንያኛ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ጆርጂያን"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ጉስሊኛ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ጉጃርቲኛ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ጋሊሺያ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ጋንዳኛ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ግሪክኛ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ጣሊያንኛ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ፈረንሳይኛ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ፊሊፒንኛ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ፊኒሽ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ፋሮኛ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ፍሌሚሽ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ፐርሺያኛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ፑንጃብኛ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ፓሽቶኛ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ፖሊሽኛ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ፖርቹጋልኛ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar-AE.json b/library/intl/resources/language/ar-AE.json
new file mode 100644
index 000000000..654a748e6
--- /dev/null
+++ b/library/intl/resources/language/ar-AE.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغم"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأغورية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأفريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "الأمازيغية وسط الأطلس"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزباكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلوروسية"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيجرينيا"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدانماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوفاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوفانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكي"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السفلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الفارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الفارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الفاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الفرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الفرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الفرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الفريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الفريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الفلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الفلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الفلمنك"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الفنلندية"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الفيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "القرغيزية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادا"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "الكونغو السواحلية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتفية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثي"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوفية"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولزية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافيا"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تكلحيت"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تيسو"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا فونيا"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانغو"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوجا"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "فونجو"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابوفيرديانو"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كواسيو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا تشيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سيني"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانجي"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لويا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماتشيم"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ميرو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "يانجبن"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar-EG.json b/library/intl/resources/language/ar-EG.json
new file mode 100644
index 000000000..030eee4c6
--- /dev/null
+++ b/library/intl/resources/language/ar-EG.json
@@ -0,0 +1,738 @@
+{
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "الآسو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغيمية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأفريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزبكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأويغورية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "الإسبانية المكسيكية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلاروسية"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "التاشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "التمازيغية الأوسط أطلسية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "التيزو"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيغرينية"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدنماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "الروا"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "الرومبو"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "السامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "السانغو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوفاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوفانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "السوغا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "السينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "الشمبالاية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكية"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السفلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الفارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الفارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الفاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الفرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الفرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الفرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الفريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الفريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الفلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الفلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الفلمنكية"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الفنلندية"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "الفونجو"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الفيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "الكابوفيرديانيوية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "الكالينجينية"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادية"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "الكورية التشينية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "الكيرغزستانية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتفية"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "اللانغية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "الماتشامية"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثية"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "الماكوندية"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوفية"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "الميرو"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "الوالسر"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولشية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "اليانغبين"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا فونيا"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "لغة البافيا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "لغة التاساواك"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "لغة الكواسيو"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "لغة الكوري ابروسيني"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "لغة الكولونيان"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "لغة الكونغو السواحلية"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لغة اللويا"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "لغة الناما"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "لغة ماكوا ميتو"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar.json b/library/intl/resources/language/ar.json
new file mode 100644
index 000000000..a1beaba5f
--- /dev/null
+++ b/library/intl/resources/language/ar.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغم"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأغورية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأفريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "الأمازيغية وسط الأطلس"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزباكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلوروسية"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيجرينيا"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدانماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوفاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوفانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكي"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السفلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الفارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الفارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الفاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الفرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الفرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الفرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الفريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الفريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الفلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الفلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الفلمنك"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الفنلندية"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الفيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "القرغيزية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادا"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "الكونغو السواحلية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتفية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثي"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوفية"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولزية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافيا"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تيسو"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا فونيا"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانغو"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوجا"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "فونجو"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابوفيرديانو"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كواسيو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا تشيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سيني"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانجي"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لويا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماتشيم"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ميرو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "يانجبن"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/asa.json b/library/intl/resources/language/asa.json
new file mode 100644
index 000000000..6a49e8f55
--- /dev/null
+++ b/library/intl/resources/language/asa.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kicheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kidhulu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifarantha"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihautha"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihithpania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholandhi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonethia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingeredha"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliaano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Kipare"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kiruthi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kithomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kithwidi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ast.json b/library/intl/resources/language/ast.json
new file mode 100644
index 000000000..eac761f74
--- /dev/null
+++ b/library/intl/resources/language/ast.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanu"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán de Suiza"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "altu sorbiu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "altualemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharicu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar modernu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturianu"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaixanu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baxu sorbiu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalín"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanu"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaru"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabuverdianu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemirés"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checu"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinu"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinu simplificáu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinu tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "colonianu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreanu"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embú"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovacu"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "eslovenu"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipín"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamencu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés de Canadá"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés de Suiza"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianu"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélicu escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallegu"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "griegu"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guyaratí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ḥausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebréu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaru"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiu"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés americanu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés de Canadá"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés de Gran Bretaña"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabileñu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaquistanín"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguistanín"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosianu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoniu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavu"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele del norte"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalés"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruegu Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruegu Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polacu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués del Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punyabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami del norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiu"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalín"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaḥili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suecu"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Atlas central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estándar de Marruecos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turcu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraín"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbequistanín"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vascu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamín"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "xaponés"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "xeorxanu"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/az.json b/library/intl/resources/language/az.json
new file mode 100644
index 000000000..b0af15ae4
--- /dev/null
+++ b/library/intl/resources/language/az.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanca"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aqhem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "alban"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerika ingiliscəsi"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhar"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturicə"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "aşağı sorb"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avstraliya ingiliscəsi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avstriya almancası"
+ },
+ "az": {
+ "code": "az",
+ "name": "azərbaycan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa dili"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "bask"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "benqal"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal norveç"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolqar"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniak"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliya portuqalcası"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonca"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britaniya ingiliscəsi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "çex"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "çiqa"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "çin"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "çiroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danimarka"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonqa"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "erməni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo dili"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ənənəvi çin"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ərəb"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farer"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "fars"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippin"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fin"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransız"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friul dili"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula dili"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gürcü"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holland"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "xorvat"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonez"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingilis"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irland"
+ },
+ "is": {
+ "code": "is",
+ "name": "island"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispan"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isveç"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "İsveçrə almancası"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "İsveçrə fransızcası"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "İsveçrə yüksək almancası"
+ },
+ "it": {
+ "code": "it",
+ "name": "italyan"
+ },
+ "he": {
+ "code": "he",
+ "name": "ivrit"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdian"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalencin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada fransızcası"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada ingiliscəsi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Kastiliya ispancası"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaşmir"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalan"
+ },
+ "km": {
+ "code": "km",
+ "name": "kxmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Konqo suahilicəsi"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreya"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra çiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "qalisian"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "qanda"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "qazax"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "qərbi friz"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "qırğız"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "qucarat"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "qusi"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laos"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latış"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "linqala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litva"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanqa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lüksemburq"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "macar"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maçam"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "maxuva-meetto"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedon"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makond"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malaqas"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masay"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika ispancası"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Mərkəzi Atlas tamazicəsi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standart Ərəbcə"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldav"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "monqol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisien"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundanq"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepal"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nqomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nünorsk norveç"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankol"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "özbək"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pəncab"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polyak"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portuqal"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portuqaliya portuqalcası"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puştu"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoroman"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumın"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "sadələşmiş çin"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sanqo"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanqu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serb"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhal"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skot gaelik dili"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soqa"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "şambala"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "şimali ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "şimali sami"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "şona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taçelit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tay"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluqu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tiqrin"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonqa"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "türk"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uels"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrayna"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uyğur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunyo"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vyetnam"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "yapon"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yuxarı sorb"
+ },
+ "el": {
+ "code": "el",
+ "name": "yunan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bas.json b/library/intl/resources/language/bas.json
new file mode 100644
index 000000000..fac49c2c7
--- /dev/null
+++ b/library/intl/resources/language/bas.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Ɓàsàa"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Hɔp u akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Hɔp u amhārìk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Hɔp u arâb"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Hɔp u bɛŋgàli"
+ },
+ "be": {
+ "code": "be",
+ "name": "Hɔp u bièlòrûs"
+ },
+ "my": {
+ "code": "my",
+ "name": "Hɔp u birmàn"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Hɔp u bûlgâr"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hɔp u ɓausa"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Hɔp u cɛ̂k"
+ },
+ "el": {
+ "code": "el",
+ "name": "Hɔp u gri ᷇kyà"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hɔp u hindì"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔp u hɔŋgrìi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Hɔp u indònesìà"
+ },
+ "it": {
+ "code": "it",
+ "name": "Hɔp u italìà"
+ },
+ "de": {
+ "code": "de",
+ "name": "Hɔp u jamân"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Hɔp u kinà"
+ },
+ "km": {
+ "code": "km",
+ "name": "Hɔp u kmɛ̂r"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Hɔp u kɔrēà"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Hɔp u makɛ᷆"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Hɔp u nepa᷆l"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hɔp u nlɛ̀ndi"
+ },
+ "en": {
+ "code": "en",
+ "name": "Hɔp u ŋgisì"
+ },
+ "es": {
+ "code": "es",
+ "name": "Hɔp u panyā"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Hɔp u pɛnjàbi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Hɔp u pɛrsìà"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Hɔp u pɔlɔ̄nà"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Hɔp u pɔtɔ̄kì"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Hɔp u pulàsi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Hɔp u rùmanìà"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Hɔp u ruslànd"
+ },
+ "so": {
+ "code": "so",
+ "name": "Hɔp u somàlî"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Hɔp u suɛ᷆d"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Hɔp u tamu᷆l"
+ },
+ "th": {
+ "code": "th",
+ "name": "Hɔp u tây"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Hɔp u tûrk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Hɔp u ukrǎnìà"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Hɔp u urdù"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Hɔp u vyɛ̄dnàm"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Hɔp u yapàn"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Hɔp u yorūbà"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Hɔp u zulù"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/be.json b/library/intl/resources/language/be.json
new file mode 100644
index 000000000..3a53bd0d8
--- /dev/null
+++ b/library/intl/resources/language/be.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанская"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанская"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарская"
+ },
+ "en": {
+ "code": "en",
+ "name": "англійская"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "англійская (аўстрал.)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "англійская (ЗША)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "англійская (канад.)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабская"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армянская"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астурыйская"
+ },
+ "af": {
+ "code": "af",
+ "name": "афрыкаанс"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "балгарская"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскская"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "баснійская"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуская"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальская"
+ },
+ "br": {
+ "code": "br",
+ "name": "брэтонская"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "в’етнамская"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валійская"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгерская"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "галандская"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галісійская"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузінская"
+ },
+ "el": {
+ "code": "el",
+ "name": "грэцкая"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуяраці"
+ },
+ "da": {
+ "code": "da",
+ "name": "дацкая"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "id": {
+ "code": "id",
+ "name": "інданезійская"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ірландская"
+ },
+ "is": {
+ "code": "is",
+ "name": "ісландская"
+ },
+ "es": {
+ "code": "es",
+ "name": "іспанская"
+ },
+ "it": {
+ "code": "it",
+ "name": "італьянская"
+ },
+ "he": {
+ "code": "he",
+ "name": "іўрыт"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахская"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "карэйская"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонская"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кітайская"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоская"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышская"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лінгала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "літоўская"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонская"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайская"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаяламская"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "малдаўская"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "мальгашская"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтыйская"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "мангольская"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхі"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масаі"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "нарвежская (нюнорск)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "нарвэская букмал"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальская"
+ },
+ "de": {
+ "code": "de",
+ "name": "нямецкая"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "нямецкая (аўстр.)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "нямецкая (швейц.)"
+ },
+ "or": {
+ "code": "or",
+ "name": "орыя"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджабі"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "партугальская"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "партугальская (бразіл.)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польская"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынская"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руская"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "рэта-раманская"
+ },
+ "so": {
+ "code": "so",
+ "name": "самалійская"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "сербская"
+ },
+ "si": {
+ "code": "si",
+ "name": "сінгальская"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "славацкая"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "славенская"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "спрошчаная кітайская"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахілі"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "тагальская"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайская"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамільская"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традыцыйная кітайская"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турэцкая"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тыгрынья"
+ },
+ "te": {
+ "code": "te",
+ "name": "тэлугу"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекская"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурская"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украінская"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "фарсі"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарэрская"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фінская"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандская"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французская"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "французская (канад.)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "французская (швейц.)"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фрызская"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "харвацкая"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хіндзі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чэшская"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шатландская гэльская"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведская"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "эсперанта"
+ },
+ "et": {
+ "code": "et",
+ "name": "эстонская"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "японская"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bez.json b/library/intl/resources/language/bez.json
new file mode 100644
index 000000000..c6876e490
--- /dev/null
+++ b/library/intl/resources/language/bez.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Hiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Hiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Hiamhari"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Hibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Hibelarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Hibena"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Hibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Hiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Hicheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Hichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Hifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Higiriki"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Hiharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Hihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Hiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Hiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Hiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Hijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Hijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Hikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Hikorea"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Hileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Hilomania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Hilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Himalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Hinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Hipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Hipunjabi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Hisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Hiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Hitailand"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Hitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Hituluki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Hiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Hiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Hivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Hiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Hizulu"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bg.json b/library/intl/resources/language/bg.json
new file mode 100644
index 000000000..bda37f052
--- /dev/null
+++ b/library/intl/resources/language/bg.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "австралийски английски"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "австрийски немски"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджански"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албански"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американски английски"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарски"
+ },
+ "en": {
+ "code": "en",
+ "name": "английски"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабски"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "арменски"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астурски"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканс"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баски"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафия"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуски"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалски"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирмански"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босненски"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонски"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британски английски"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "български"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "виетнамски"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галисийски"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горнолужишки"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "гренландски"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузински"
+ },
+ "el": {
+ "code": "el",
+ "name": "гръцки"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гусии"
+ },
+ "da": {
+ "code": "da",
+ "name": "датски"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "джерма"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонха"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "диола"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "долнолужишки"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "есперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "естонски"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуски"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезийски"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландски"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландски"
+ },
+ "es": {
+ "code": "es",
+ "name": "испански"
+ },
+ "it": {
+ "code": "it",
+ "name": "италиански"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабилски"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабовердиански"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахски"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадски английски"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадски френски"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонски"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирски"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квасио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикую"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизки"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайски"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо сени"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгоански суахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейски"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерски"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоски"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвийски"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовски"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луя"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембургски"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонски"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа мето"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайски"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаялам"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтийски"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масайски"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мексикански испански"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдовски"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголски"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисиен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немски"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалски"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нианколе"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "нидерландски"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежки букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежки нюношк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "опростен китайски"
+ },
+ "or": {
+ "code": "or",
+ "name": "ория"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенджабски"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "персийски"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полски"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалски"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пущу"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "реторомански"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румънски"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руски"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "северен ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "северносаамски"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "si": {
+ "code": "si",
+ "name": "синхалски"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словашки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словенски"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомалийски"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "сръбски"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "стандартен марокански тамазигт"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахили"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "съвременен стандартен арабски"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайски"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилски"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетски"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриня"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционен китайски"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турски"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уелски"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекски"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурски"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украински"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгарски"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарьорски"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипински"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фински"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандски"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "френски"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фризийски"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриулиански"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауза"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хърватски"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централноатласки тамазигт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведски"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцарски горногермански"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцарски немски"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцарски френски"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шотландски галски"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "японски"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bm.json b/library/intl/resources/language/bm.json
new file mode 100644
index 000000000..6eb659c6f
--- /dev/null
+++ b/library/intl/resources/language/bm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akankan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alimaɲikan"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarikikan"
+ },
+ "en": {
+ "code": "en",
+ "name": "angilɛkan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "awusakan"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bamanakan"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bɛngalikan"
+ },
+ "my": {
+ "code": "my",
+ "name": "birimanikan"
+ },
+ "be": {
+ "code": "be",
+ "name": "biyelorisikan"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "buligarikan"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cɛkikan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "esipaɲolkan"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ɛndonezikan"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "gɛrɛsikan"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "inidikan"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "irisikan"
+ },
+ "it": {
+ "code": "it",
+ "name": "italikan"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambojikan"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korekan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "larabukan"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malɛzikan"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalekan"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandekan"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "oŋirikan"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perisanikan"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pɛnijabikan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonekan"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "pɔritigalikan"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanikan"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "siniwakan"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalikan"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suwɛdikan"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamulikan"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tayikan"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "tubabukan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turikikan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukɛrɛnikan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urudukan"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "wiyɛtinamukan"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubakan"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zapɔnekan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulukan"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bn-IN.json b/library/intl/resources/language/bn-IN.json
new file mode 100644
index 000000000..f62fc52f4
--- /dev/null
+++ b/library/intl/resources/language/bn-IN.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "অস্ট্রিয়ান জারমান"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "অস্ট্রেলীয় ইংরেজি"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "আইরিশ"
+ },
+ "is": {
+ "code": "is",
+ "name": "আইসল্যান্ডীয়"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "আকান"
+ },
+ "az": {
+ "code": "az",
+ "name": "আজারবাইজানী"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "আদর্শ মরক্কোন তামাজিগাত"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "আধুনিক আদর্শ আরবী"
+ },
+ "af": {
+ "code": "af",
+ "name": "আফ্রিকান্স"
+ },
+ "am": {
+ "code": "am",
+ "name": "আমহারিক"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "আমেরিকার ইংরেজি"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "আরবী"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "আর্মেনিয়"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "আলবেনীয়"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "আসু"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "আস্তুরিয়"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ইউক্রেনীয়"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ইউরোপীয় স্প্যানিশ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ইউরোপের পর্তুগীজ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ইওন্ডো"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ইওরুবা"
+ },
+ "en": {
+ "code": "en",
+ "name": "ইংরেজি"
+ },
+ "it": {
+ "code": "it",
+ "name": "ইতালীয়"
+ },
+ "id": {
+ "code": "id",
+ "name": "ইন্দোনেশীয়"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "উইঘুর"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "উচ্চ সোর্বিয়ান"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "উজবেকীয়"
+ },
+ "or": {
+ "code": "or",
+ "name": "উড়িয়া"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "উত্তর এন্দেবিলি"
+ },
+ "se": {
+ "code": "se",
+ "name": "উত্তরাঞ্চলীয় সামি"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "উর্দু"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "এঘেম"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "এম্বু"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "এয়ে"
+ },
+ "et": {
+ "code": "et",
+ "name": "এস্তোনীয়"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "এস্পেরান্তো"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ঐতিহ্যবাহি চীনা"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ওয়েলশ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "কঙ্গো সোয়াহিলি"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "কাজাখ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "কাতালান"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "কানাডীয় ইংরেজি"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "কান্নাড়ী"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "কাবাইলে"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "কাবুভারদিয়ানু"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "কাম্বা"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "কালেনজিন"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "কাশ্মীরী"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "কিকু্ইয়ু"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "কির্গিজ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "কোয়রা চীনি"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "কোয়রাবেনো সেন্নী"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "কোয়াসিও"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "কোরিয়ান"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ক্যানাডিয়ান ফরাসী"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ক্যালাল্লিসুট"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ক্রোয়েশীয়"
+ },
+ "km": {
+ "code": "km",
+ "name": "খমের"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "গান্ডা"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "গুজরাটি"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "গুসী"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "গোম্বা"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "গ্যালিশিয়"
+ },
+ "el": {
+ "code": "el",
+ "name": "গ্রিক"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "চিগা"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "চীনা"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "চেক"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "চেরোকী"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "জর্জিয়ান"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "জলা-ফনী"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "জাপানি"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "জার্মা"
+ },
+ "de": {
+ "code": "de",
+ "name": "জার্মান"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "জুলু"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "জোঙ্গা"
+ },
+ "to": {
+ "code": "to",
+ "name": "টোঙ্গান"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ডাচ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ডেনিশ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "তাইতা"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "তাচেলহিত"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "তামিল"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "তাসাওয়াক"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "তিগরিনিয়া"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "তিব্বতি"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "তুর্কী"
+ },
+ "te": {
+ "code": "te",
+ "name": "তেলেগু"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "তেসো"
+ },
+ "th": {
+ "code": "th",
+ "name": "থাই"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "নরওয়েজিয়ান বোকমাল"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "নরওয়েজীয়ান নিনর্স্ক"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "নামা"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "নিম্নতর সোর্বিয়ান"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "নুয়ার"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "নেপালী"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ন্যায়াঙ্কোলে"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "পর্তুগীজ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "পশ্চিম ফ্রিসিয়"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "পাঞ্জাবী"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "পাশ্তু"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "পোলিশ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ফরাসি"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ফার্সি"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ফিনিশ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ফিলিপিনো"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ফুলাহ্"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ফেরাউনি"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ফ্রিউলিয়ান"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ফ্লেমিশ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "বড়ো"
+ },
+ "my": {
+ "code": "my",
+ "name": "বর্মি"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "বসনীয়ান"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "বাংলা"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "বাফিয়া"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "বামবারা"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "বাসা"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "বাস্ক"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "বুলগেরিয়"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "বেনা"
+ },
+ "be": {
+ "code": "be",
+ "name": "বেলারুশিয়"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ব্রাজিলের পর্তুগীজ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ব্রিটিশ ইংরেজি"
+ },
+ "br": {
+ "code": "br",
+ "name": "ব্রেটন"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ভাই"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ভিয়েতনামী"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ভুঞ্জো"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "মঙ্গোলিয়"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "মরিসিয়ান"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "মলদাভিয়"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "মল্টিয়"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "মাকামে"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "মাকোন্দে"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "মাখুয়া-মেত্তো"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "মারাঠি"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "মালয়"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "মালাগাসি"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "মালায়ালাম"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "মাসাই"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "মুদাঙ্গ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "মেরু"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ম্যাক্সিকান স্প্যানিশ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ম্যাসিডোনীয়"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "রম্বো"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "রাওয়া"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "রুন্দি"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "রুশ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "রোমানীয়"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "রোমান্স"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "লাও"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "লাঙ্গি"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "লাত্‌ভীয়"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "লিঙ্গালা"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "লিথুয়েনীয়"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "লুইয়া"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "লুক্সেমবার্গীয়"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "লুবা-কাটাঙ্গা"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "লুয়ো"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "শাম্বালা"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "শোনা"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "সরলীকৃত চীনা"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "সাঙ্গু"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "সাঙ্গো"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "সামবুরু"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "সার্বীয়"
+ },
+ "si": {
+ "code": "si",
+ "name": "সিংহলী"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "সুইডিশ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "সুইস উচ্চ জার্মানি"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "সুইস জার্মান"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "সুইস ফরাসি"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "সেনা"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "সেন্ট্রাল আটলাস তামাজিগাত"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "সোগা"
+ },
+ "so": {
+ "code": "so",
+ "name": "সোমালী"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "সোয়াহিলি"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "স্কটস-গ্যেলিক"
+ },
+ "es": {
+ "code": "es",
+ "name": "স্প্যানিশ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "স্লোভাক"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "স্লোভেনীয়"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "হাউসা"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "হাঙ্গেরীয়"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "হিন্দি"
+ },
+ "he": {
+ "code": "he",
+ "name": "হিব্রু"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bn.json b/library/intl/resources/language/bn.json
new file mode 100644
index 000000000..d37c446c3
--- /dev/null
+++ b/library/intl/resources/language/bn.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "অস্ট্রিয়ান জার্মানি"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "অস্ট্রেলীয় ইংরেজি"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "আইরিশ"
+ },
+ "is": {
+ "code": "is",
+ "name": "আইসল্যান্ডীয়"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "আকান"
+ },
+ "az": {
+ "code": "az",
+ "name": "আজারবাইজানী"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "আদর্শ মরক্কোন তামাজিগাত"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "আধুনিক আদর্শ আরবী"
+ },
+ "af": {
+ "code": "af",
+ "name": "আফ্রিকান্স"
+ },
+ "am": {
+ "code": "am",
+ "name": "আমহারিক"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "আমেরিকার ইংরেজি"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "আরবী"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "আর্মেনিয়"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "আলবেনীয়"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "আসু"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "আস্তুরিয়"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ইউক্রেনীয়"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ইউরোপীয় স্প্যানিশ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ইউরোপের পর্তুগীজ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ইওন্ডো"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ইওরুবা"
+ },
+ "en": {
+ "code": "en",
+ "name": "ইংরেজি"
+ },
+ "it": {
+ "code": "it",
+ "name": "ইতালীয়"
+ },
+ "id": {
+ "code": "id",
+ "name": "ইন্দোনেশীয়"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "উইঘুর"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "উচ্চ সোর্বিয়ান"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "উজবেকীয়"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "উত্তর এন্দেবিলি"
+ },
+ "se": {
+ "code": "se",
+ "name": "উত্তরাঞ্চলীয় সামি"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "উর্দু"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "এঘেম"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "এম্বু"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "এয়ে"
+ },
+ "et": {
+ "code": "et",
+ "name": "এস্তোনীয়"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "এস্পেরান্তো"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ঐতিহ্যবাহি চীনা"
+ },
+ "or": {
+ "code": "or",
+ "name": "ওড়িয়া"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ওয়েলশ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "কঙ্গো সোয়াহিলি"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "কাজাখ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "কাতালান"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "কানাডীয় ইংরেজি"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "কানাডীয় ফরাসি"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "কান্নাড়ী"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "কাবাইলে"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "কাবুভারদিয়ানু"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "কাম্বা"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "কালেনজিন"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "কাশ্মীরী"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "কিকু্ইয়ু"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "কির্গিজ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "কোয়রা চীনি"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "কোয়রাবেনো সেন্নী"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "কোয়াসিও"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "কোরিয়ান"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ক্যালাল্লিসুট"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ক্রোয়েশীয়"
+ },
+ "km": {
+ "code": "km",
+ "name": "খমের"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "গান্ডা"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "গুজরাটি"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "গুসী"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "গোম্বা"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "গ্যালিশিয়"
+ },
+ "el": {
+ "code": "el",
+ "name": "গ্রিক"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "চিগা"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "চীনা"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "চেক"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "চেরোকী"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "জর্জিয়ান"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "জলা-ফনী"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "জাপানি"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "জার্মা"
+ },
+ "de": {
+ "code": "de",
+ "name": "জার্মান"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "জুলু"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "জোঙ্গা"
+ },
+ "to": {
+ "code": "to",
+ "name": "টোঙ্গান"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ডাচ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ডেনিশ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "তাইতা"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "তাচেলহিত"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "তামিল"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "তাসাওয়াক"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "তিগরিনিয়া"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "তিব্বতি"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "তুর্কী"
+ },
+ "te": {
+ "code": "te",
+ "name": "তেলেগু"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "তেসো"
+ },
+ "th": {
+ "code": "th",
+ "name": "থাই"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "নরওয়েজিয়ান বোকমাল"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "নরওয়েজীয়ান নিনর্স্ক"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "নামা"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "নিম্নতর সোর্বিয়ান"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "নুয়ার"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "নেপালী"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ন্যায়াঙ্কোলে"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "পর্তুগীজ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "পশ্চিম ফ্রিসিয়"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "পাঞ্জাবী"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "পাশ্তু"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "পোলিশ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ফরাসি"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ফার্সি"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ফিনিশ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ফিলিপিনো"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ফুলাহ্"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ফেরাউনি"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ফ্রিউলিয়ান"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ফ্লেমিশ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "বড়ো"
+ },
+ "my": {
+ "code": "my",
+ "name": "বর্মি"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "বসনীয়ান"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "বাংলা"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "বাফিয়া"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "বামবারা"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "বাসা"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "বাস্ক"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "বুলগেরিয়"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "বেনা"
+ },
+ "be": {
+ "code": "be",
+ "name": "বেলারুশিয়"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ব্রাজিলের পর্তুগীজ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ব্রিটিশ ইংরেজি"
+ },
+ "br": {
+ "code": "br",
+ "name": "ব্রেটন"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ভাই"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ভিয়েতনামী"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ভুঞ্জো"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "মঙ্গোলিয়"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "মরিসিয়ান"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "মলদাভিয়"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "মল্টিয়"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "মাকামে"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "মাকোন্দে"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "মাখুয়া-মেত্তো"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "মারাঠি"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "মালয়"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "মালাগাসি"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "মালায়ালাম"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "মাসাই"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "মুদাঙ্গ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "মেরু"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ম্যাক্সিকান স্প্যানিশ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ম্যাসিডোনীয়"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "রম্বো"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "রাওয়া"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "রুন্দি"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "রুশ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "রোমানীয়"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "রোমান্স"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "লাও"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "লাঙ্গি"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "লাত্‌ভীয়"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "লিঙ্গালা"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "লিথুয়েনীয়"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "লুইয়া"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "লুক্সেমবার্গীয়"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "লুবা-কাটাঙ্গা"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "লুয়ো"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "শাম্বালা"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "শোনা"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "সরলীকৃত চীনা"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "সাঙ্গু"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "সাঙ্গো"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "সামবুরু"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "সার্বীয়"
+ },
+ "si": {
+ "code": "si",
+ "name": "সিংহলী"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "সুইডিশ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "সুইস উচ্চ জার্মানি"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "সুইস জার্মান"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "সুইস ফরাসি"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "সেনা"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "সেন্ট্রাল আটলাস তামাজিগাত"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "সোগা"
+ },
+ "so": {
+ "code": "so",
+ "name": "সোমালী"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "সোয়াহিলি"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "স্কটস-গ্যেলিক"
+ },
+ "es": {
+ "code": "es",
+ "name": "স্প্যানিশ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "স্লোভাক"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "স্লোভেনীয়"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "হাউসা"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "হাঙ্গেরীয়"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "হিন্দি"
+ },
+ "he": {
+ "code": "he",
+ "name": "হিব্রু"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bo.json b/library/intl/resources/language/bo.json
new file mode 100644
index 000000000..fe95eca3e
--- /dev/null
+++ b/library/intl/resources/language/bo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ཀནྣ་ཌ་སྐད།"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ཁོ་རེ་ཡའི་སྐད།"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "གུཇ་རཱཏི་སྐད།"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ཏཱ་མིལ་སྐད།"
+ },
+ "te": {
+ "code": "te",
+ "name": "ཏེ་ལུ་གུ་སྐད།"
+ },
+ "da": {
+ "code": "da",
+ "name": "ཏེན་མག་གི་སྐད།"
+ },
+ "th": {
+ "code": "th",
+ "name": "ཐའའི་ཡུལ་སྐད།"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ཐུར་ཁེའི་སྐད།"
+ },
+ "it": {
+ "code": "it",
+ "name": "དབྱི་ཏ་་ལའི་མི།"
+ },
+ "en": {
+ "code": "en",
+ "name": "དབིན་ཇིའི་སྐད།"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "དབིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "དབིན་ཇིའི་སྐད། (དབིན་ཇིའི་རྒྱལ་ཁབ་)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "དབིན་ཇིའི་སྐད། (ཨ་རི་)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ནེ་པ་ལི"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ནོ་ཝེ་སྐད།"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "པ་ཞའི་མི། ཕི་ཐོ་ཡའི་མི།"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "པོ་ལན་སྐད།"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ཕི་ཐོ་ཡའི།"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "བྷང་ག་ལའི་སྐད།"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "བོད་སྐད་"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "མ་ར་ཐི་སྐད།"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "མ་ལ་ཡ་སྐད།"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ཝུའུ་ཏུའུ་སྐད།"
+ },
+ "es": {
+ "code": "es",
+ "name": "ཞི་པན་ཡའི།"
+ },
+ "si": {
+ "code": "si",
+ "name": "ཞི་ལན་སྐད།"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ཟུ་ལུ་སྐད།"
+ },
+ "de": {
+ "code": "de",
+ "name": "འཇར་མན་གྱི།"
+ },
+ "my": {
+ "code": "my",
+ "name": "འབར་མའི་སྐད།"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ཡུ་ཀྲ་ནི་སྐད།"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ཡུ་གུར་སྐད།"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ཡོ་ནན་སྐད།"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "རྒྱ་སྐད་"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "རྫོང་ཁ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "རི་པིན་སྐད་"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "སྟབས་བརྡའི། ཀྲུང་གོའི།"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "སྲོལ་རྒྱུན་གྱི།"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "སོག་སྐད།"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ཧྥ་རན་སིའི་།"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ཧའོ་ལན་སྐད།"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ཧྲུའི་ཏན་སྐད།"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ཧིན་དི"
+ },
+ "id": {
+ "code": "id",
+ "name": "ཨིན་དོ་ནི་སི་སྐད།"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ཨུ་རུ་སུ་སྐད་"
+ },
+ "or": {
+ "code": "or",
+ "name": "ཨཽ་རི་ཡ་སྐད།"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/br.json b/library/intl/resources/language/br.json
new file mode 100644
index 000000000..56cb8c8b9
--- /dev/null
+++ b/library/intl/resources/language/br.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "de": {
+ "code": "de",
+ "name": "alamaneg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alamaneg Aostria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alamaneg Suis"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alamaneg uhel Suis"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaneg"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhareg"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabeg"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabeg modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenianeg"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "be": {
+ "code": "be",
+ "name": "belaruseg"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmaneg"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosneg"
+ },
+ "br": {
+ "code": "br",
+ "name": "brezhoneg"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgareg"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "daneg"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanteg"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoneg"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskareg"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faeroeg"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipineg"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finneg"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandrezeg"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulaneg"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizeg ar Cʼhornôg"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galizeg"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "galleg"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "galleg Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "galleg Suis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresianeg"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haousa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraeg"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungareg"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezeg"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandeg"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianeg"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iwerzhoneg"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "izelsorabeg"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japaneg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "jorjianeg"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabileg"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanareg"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaneg"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazak"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kembraeg"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreaneg"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroateg"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoseg"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvieg"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaneg"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksembourgeg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoneg"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayseg"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgacheg"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteg"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldoveg"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoleg"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "moriseg"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele an Norzh"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandeg"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaleg"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegeg bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegeg nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouigoureg"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbekeg"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perseg"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloneg"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugaleg"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugaleg Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugaleg Europa"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romañcheg"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumaneg"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusianeg"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sámi an Norzh"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "en": {
+ "code": "en",
+ "name": "saozneg"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "saozneg Amerika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "saozneg Aostralia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "saozneg Breizh-Veur"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "saozneg Kanada"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbeg"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinaeg"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "sinaeg eeunaet"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "sinaeg hengounel"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhaleg"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skoseg"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakeg"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveneg"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnoleg"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnoleg Europa"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnoleg Mecʼhiko"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedeg"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamacheg Maroko standart"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamileg"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchekeg"
+ },
+ "te": {
+ "code": "te",
+ "name": "telougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetaneg"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkeg"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "uhelsorabeg"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraineg"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnameg"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorouba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zouloueg"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/brx.json b/library/intl/resources/language/brx.json
new file mode 100644
index 000000000..34d707a33
--- /dev/null
+++ b/library/intl/resources/language/brx.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकन"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंग्रेज़ी"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अंग्रेज़ी (अमरिकी)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "अंग्रेज़ी (ऑस्ट्रेलिया का)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "अंग्रेज़ी (कनाडाई)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "अंग्रेजी (ब्रिटिश)"
+ },
+ "az": {
+ "code": "az",
+ "name": "अज़रबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ्रीकी"
+ },
+ "am": {
+ "code": "am",
+ "name": "अम्हारिक्"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "अरमेनियन्"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आईरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आईस्लैंडिक्"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "आल्बेनियन्"
+ },
+ "id": {
+ "code": "id",
+ "name": "इन्डोनेशियन्"
+ },
+ "it": {
+ "code": "it",
+ "name": "ईटालियन्"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ईवेरियाई स्पैनिश"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उईग़ुर"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "उच्च स्तरिय स्वीस जर्मन"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज़बेक्"
+ },
+ "or": {
+ "code": "or",
+ "name": "उड़िया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उत्तर न्दबेले"
+ },
+ "se": {
+ "code": "se",
+ "name": "उत्तरी सामी"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ऊपरी सौर्बियन"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ऊर्दु"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "एवे"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "एवौंडो"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "एस्पेरान्तो"
+ },
+ "et": {
+ "code": "et",
+ "name": "ऐस्टोनियन्"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "क़ज़ाख़्"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कन्नड्"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कंबा"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कलालीसुत"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "कश्मिरी"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालान्"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबील्"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकुयु"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरग़ीज़्"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "किरून्दी"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरीयन्"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "क्रोएशन्"
+ },
+ "km": {
+ "code": "km",
+ "name": "ख्मेर"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गुजराती"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गैलिशियन्"
+ },
+ "el": {
+ "code": "el",
+ "name": "ग्रीक"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "चीनी (पारम्परिक)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "चीनी (सरलीकृत)"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चीरोकी"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक्"
+ },
+ "de": {
+ "code": "de",
+ "name": "ज़र्मन"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "जर्मन (ऑस्ट्रिया)"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ज़ुलू"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉर्जियन्"
+ },
+ "to": {
+ "code": "to",
+ "name": "टॉंगा"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच्"
+ },
+ "da": {
+ "code": "da",
+ "name": "डैनीश्"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तमिळ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिग्रीन्या"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिब्बती"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तुर्की"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलुगु"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉर्वेजियन् नीनॉर्स्क्"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नोर्वेगी बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "न्यानकोले"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पख़्तु"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पश्चीमी फ्रीज़ियन्"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पुर्तगाली"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फार्सी"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिश्"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फिरोज़ी"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फुलाह्"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ्रांसीसी"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "फ्रांसीसी (कनाडाई)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "फ्रांसीसी (स्वीस)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फ्रीउलीअन्"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ्लेमी"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगला"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बड़ो"
+ },
+ "my": {
+ "code": "my",
+ "name": "बर्मी"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बल्गैरियन्"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बांबारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बास्क्"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बास्क़्"
+ },
+ "be": {
+ "code": "be",
+ "name": "बैलोरूसियन्"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोस्नियाई"
+ },
+ "br": {
+ "code": "br",
+ "name": "ब्रटों"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "भुटानी"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाय"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालटीज़्"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मालागासी"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मैसेडोनियन्"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मोंगोलियन"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोल्डेवियन्"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यूक्रेनियन्"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूबा"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रुसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रूमानीयन्"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रेह्टो-रोमान्स"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओसीयन्"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लाटवियन् (लैट्टीश)"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथुआनियन्"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लुओ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लुक्समबुर्गी"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लुबा कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "वियेतनामी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वैल्श्"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सर्बियन्"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांग्रो"
+ },
+ "si": {
+ "code": "si",
+ "name": "सींहाला"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "सोर्बियन्"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "स्कॉट्स् गैलिक्"
+ },
+ "es": {
+ "code": "es",
+ "name": "स्पैनिश"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "स्लोवाक्"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "स्लोवेनियन्"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "स्वाहिली"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "स्वीडिश"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "स्वीस जर्मन"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हउसा"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगैरीयन्"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिब्रु"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bs-Cyrl.json b/library/intl/resources/language/bs-Cyrl.json
new file mode 100644
index 000000000..2d82ca21a
--- /dev/null
+++ b/library/intl/resources/language/bs-Cyrl.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџански"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албански"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарски"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапски"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астуријски"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Аустралијски енглески"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Аустријски немачки"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканерски"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскијски"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруски"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгласки"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босански"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Бразилски португалски"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонски"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Британски енглески"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарски"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурмански"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вијетнамски"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галски"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горњи сорбијски"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузијски"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "дански"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "en": {
+ "code": "en",
+ "name": "енглески"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "есперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "естонски"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Иберијски португалски"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Иберијски шпански"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонежански"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирски"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландски"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијански"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапански"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "јерменски"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалисут"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "канада"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Канадски енглески"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Канадски француски"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонски"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирски"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинески"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "кинески (поједностављен)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "кинески (традиционални)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиски"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерски"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "козачки"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејски"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоски"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "летонски"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литвански"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "луксембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мађарски"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонски"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагасијски"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајски"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масаи"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мелтешки"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавски"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголски"
+ },
+ "de": {
+ "code": "de",
+ "name": "немачки"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалски"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ниски сорбијански"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки њорск"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "њанколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "оријски"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панџабски"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунски"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "персијски"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "пољски"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалски"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "рето-романски"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунски"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руски"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "САД енглески"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "свахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "северни ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "северни сами"
+ },
+ "si": {
+ "code": "si",
+ "name": "сингалески"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словеначки"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомалски"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "српски"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "тагалог"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландски"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилски"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетански"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турски"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбечки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурски"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украјински"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарски"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фински"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламански"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француски"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фризијски"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриулијски"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејски"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандски"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватски"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "џонга"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Швајцарски високи немачки"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швајцарски немачки"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Швајцарски француски"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведски"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шкотски галски"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпански"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bs.json b/library/intl/resources/language/bs.json
new file mode 100644
index 000000000..ae98240ad
--- /dev/null
+++ b/library/intl/resources/language/bs.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanerski"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "američki engleski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australski engleski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austrijski njemački"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbejdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjeloruski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britanski engleski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "češki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "čiga"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čiroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "donjolužičkosrpski"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "džonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "evropski španski"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinski"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulijski"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornjolužičkosrpski"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gornjonjemački (švicarski)"
+ },
+ "el": {
+ "code": "el",
+ "name": "grčki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "jermenski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubanski"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisutski"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadski engleski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadski francuski"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazački"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kelnski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kineski (pojednostavljeni)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kineski (tradicionalni)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoanski swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoški"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litvanski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagazijski"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "marokanski tamazigt"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijski kreolski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksički španski"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderni standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norveški bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norveški njorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "njemački"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijski"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabski"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "reto-romanski"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singaleski"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sjeverni ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "sjeverni sami"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovački"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenački"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazigt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škotski galski"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šona"
+ },
+ "es": {
+ "code": "es",
+ "name": "španski"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "švajcarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "švajcarski njemački"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedski"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tahelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavak"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbečki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ca.json b/library/intl/resources/language/ca.json
new file mode 100644
index 000000000..c6d582ad9
--- /dev/null
+++ b/library/intl/resources/language/ca.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "àkan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanès"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemany"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemany austríac"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemany suís"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alt alemany suís"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alt sòrab"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "amazic del Marroc central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazic estàndard marroquí"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhàric"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglès"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglès americà"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglès australià"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglès britànic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglès canadenc"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "àrab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "àrab estàndard modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeni"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturià"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidjanès"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baix sòrab"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorús"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmà"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "bissio"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnià"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretó"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgar"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilenc"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caixmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "català"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "colognian"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreà"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "crioll capverdià"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danès"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongka"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "eslovè"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanyol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanyol de Mèxic"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanyol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonià"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroès"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipí"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finès"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenc"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francès"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francès canadenc"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francès suís"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisó oriental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friülà"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ful"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaèlic escocès"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallec"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gal·lès"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgià"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandès"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongarès"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandès"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandès"
+ },
+ "it": {
+ "code": "it",
+ "name": "italià"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonès"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuiu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosià"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letó"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituà"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguès"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoni"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-metto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malai"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiàlam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaix"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltès"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricià"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldau"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandès"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalès"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruec bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruec nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paixtu"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonès"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portuguès"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portuguès de Portugal"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portuguès del Brasil"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromànic"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanès"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwo"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbi"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalès"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "songhai oriental"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahili del Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suec"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandès"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taixelhit"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tàmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetà"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongalès"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txec"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraïnès"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xinès"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "xinès simplificat"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "xinès tradicional"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cgg.json b/library/intl/resources/language/cgg.json
new file mode 100644
index 000000000..8d03b2c4a
--- /dev/null
+++ b/library/intl/resources/language/cgg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oru-Urudu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Orubengari"
+ },
+ "be": {
+ "code": "be",
+ "name": "Oruberarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Oruburugariya"
+ },
+ "my": {
+ "code": "my",
+ "name": "Oruburuma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oruceeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Oruchaina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Orudaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Orufaransa"
+ },
+ "de": {
+ "code": "de",
+ "name": "Orugirimaani"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oruguriiki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oruhangare"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oruharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oruhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oruhindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oruindonezia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Orujapaani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Orukambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Orukani"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Orukoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Orukuraini"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Orukuruki"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Orumalesiya"
+ },
+ "am": {
+ "code": "am",
+ "name": "Orumariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Orunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Orungyereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Orupaasiya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Orupocugo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Orupoori"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Orupungyabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Oruromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Orurrasha"
+ },
+ "so": {
+ "code": "so",
+ "name": "Orusomaari"
+ },
+ "es": {
+ "code": "es",
+ "name": "Orusupaani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oruswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Orutailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Orutamiri"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oruviyetinaamu"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oruyitare"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oruyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oruzuru"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/chr.json b/library/intl/resources/language/chr.json
new file mode 100644
index 000000000..909afb89c
--- /dev/null
+++ b/library/intl/resources/language/chr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ },
+ "de": {
+ "code": "de",
+ "name": "ᎠᏂᏓᏥ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ᎦᎸᏥ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ᎩᎵᏏ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ᎬᏩᎵᏲᏥᎢ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ᏉᏧᎦᎵ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ᏍᏆᏂ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ᏓᎶᏂᎨ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ᏣᎳᎩ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ᏣᏩᏂᏏ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ᏲᏂᎢ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cs.json b/library/intl/resources/language/cs.json
new file mode 100644
index 000000000..b650d8452
--- /dev/null
+++ b/library/intl/resources/language/cs.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánština"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanština"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánština"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharština"
+ },
+ "en": {
+ "code": "en",
+ "name": "angličtina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angličtina (USA)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabština"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabština (moderní standardní)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménština"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturština"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "ázerbájdžánština"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarština"
+ },
+ "my": {
+ "code": "my",
+ "name": "barmština"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskičtina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běloruština"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengálština"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoština"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosenština"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonština"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulharština"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čerokézština"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čeština"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "čínština"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "čínština (zjednodušená)"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánština"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnolužická srbština"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkä"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonština"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eweština"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faerština"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipínština"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finština"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francouzština"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fríština"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbština"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlanština"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijština"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandština"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grónština"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzínština"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarátština"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauština"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejština"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindština"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornolužická srbština"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorvatština"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonéština"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irština"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandština"
+ },
+ "it": {
+ "code": "it",
+ "name": "italština"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangbenština"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonština"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubština"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylština"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambština"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadština"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdština"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmírština"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánština"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaština"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmérština"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujština"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundština"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolínština"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejština"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kyrgyzština"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoština"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalština"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litevština"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lotyština"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lubu-katanžština"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lucemburština"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoština"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maďarština"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonština"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálamština"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajština"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaština"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltština"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maráthština"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajština"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mašame"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijská kreolština"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavština"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolština"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namaština"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ňankolština"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele (Zimbabwe)"
+ },
+ "de": {
+ "code": "de",
+ "name": "němčina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "němčina (Švýcarsko)"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "němčina (walser)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "němčina standardní (Švýcarsko)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepálština"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemština"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norština (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norština (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerština"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "paňdžábština"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštština"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perština"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polština"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalština"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalština (Evropa)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rétorománština"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunština"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruština"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "el": {
+ "code": "el",
+ "name": "řečtina"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sámština (severní)"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangoština"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangština"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhálština"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotská gaelština"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovenština"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovinština"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogština"
+ },
+ "so": {
+ "code": "so",
+ "name": "somálština"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbština"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilština"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahilština (Kongo)"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonština"
+ },
+ "es": {
+ "code": "es",
+ "name": "španělština"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "španělština (Evropa)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švédština"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight (standardní marocký)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight (střední Maroko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilština"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugština"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thajština"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetština"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinijština"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongánština"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turečtina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurština"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinština"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdština"
+ },
+ "or": {
+ "code": "or",
+ "name": "urijština"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbečtina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velština"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamština"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "vlámština"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmština"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluština"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cy.json b/library/intl/resources/language/cy.json
new file mode 100644
index 000000000..fe8df481f
--- /dev/null
+++ b/library/intl/resources/language/cy.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "Acaneg"
+ },
+ "af": {
+ "code": "af",
+ "name": "Affricâneg"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghemeg"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaneg"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaeneg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Almaeneg Awstria"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Almaeneg Safonol y Swistir"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Almaeneg y Swistir"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhareg"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabeg"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arabeg Modern Safonol"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeneg"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaijaneg"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Baffia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambareg"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basâeg"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basgeg"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaleg"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarwseg"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnieg"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bwlgareg"
+ },
+ "my": {
+ "code": "my",
+ "name": "Byrmaneg"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Cabileg"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Caboferdianeg"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Camba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casacheg"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Cashmireg"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalaneg"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cirgiseg"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Coreeg"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croateg"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Cwleneg"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Cymraeg"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "km": {
+ "code": "km",
+ "name": "Chmereg"
+ },
+ "da": {
+ "code": "da",
+ "name": "Daneg"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "it": {
+ "code": "it",
+ "name": "Eidaleg"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embw"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estoneg"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Faieg"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Fietnameg"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ffaröeg"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ffilipineg"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ffinneg"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Fflemeg"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ffrangeg"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Ffrangeg Canada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Ffrangeg y Swistir"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ffriseg y Gorllewin"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Ffriwleg"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ffwla"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaeleg yr Alban"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisieg"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgeg"
+ },
+ "el": {
+ "code": "el",
+ "name": "Groeg"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gwjarati"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gwyddeleg"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebraeg"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hwngareg"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneseg"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iorwba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Iseldireg"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islandeg"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaneeg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoeg"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latfieg"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithwaneg"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lwcsembwrgeg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Lŵo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Lwyia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Llydaweg"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedoneg"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Macondeg"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagaseg"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleieg"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malteg"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mas"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Matsiame"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Mêrw"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoleg"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldofeg"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Gogleddol"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaleg"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Niancole"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwyeg Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwyeg Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nŵereg"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perseg"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portiwgeeg"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portiwgeeg Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portiwgeeg Ewrop"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pwnjabeg"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pwyleg"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romaunsch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rwmaneg"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rwndi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rwseg"
+ },
+ "en": {
+ "code": "en",
+ "name": "Saesneg"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Saesneg America"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Saesneg Awstralia"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Saesneg Canada"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Saesneg Prydain"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangw"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Sambŵrw"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Gogleddol"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sbaeneg"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Sbaeneg Ewrop"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Sbaeneg Mecsico"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbeg"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhaleg"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slofaceg"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slofeneg"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaleg"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbeg Isaf"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbeg Uchaf"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili’r Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedeg"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Swlw"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Safonol Moroco"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamileg"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeteg"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongeg"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsieceg"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tsieineeg"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Tsieineeg Symledig"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tsieineeg Traddodiadol"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Tsierocî"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tyrceg"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uighur"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Wcreineg"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Wrdw"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Wsbeceg"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmaeg"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/da.json b/library/intl/resources/language/da.json
new file mode 100644
index 000000000..444b19ecd
--- /dev/null
+++ b/library/intl/resources/language/da.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australsk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "canadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "canadisk fransk"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalansk"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarokkansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "congolesisk swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europæisk portugisisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europæisk spansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenklet kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisisk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøsk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "græsk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grønlandsk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandsk"
+ },
+ "be": {
+ "code": "be",
+ "name": "hviderussisk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylisk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra-chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgsk"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyana"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassisk"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathisk"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexicansk spansk"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderne standardarabisk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovisk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "nedersorbisk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesisk"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norsk bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumænsk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rætoromansk"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizerhøjtysk"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk fransk"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalisk"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilsk"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandsk"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjekkisk"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionelt kinesisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uygurisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertysk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "østrigsk tysk"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "øvresorbisk"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dav.json b/library/intl/resources/language/dav.json
new file mode 100644
index 000000000..46ce96046
--- /dev/null
+++ b/library/intl/resources/language/dav.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Kitaita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/de-CH.json b/library/intl/resources/language/de-CH.json
new file mode 100644
index 000000000..d4711f0d2
--- /dev/null
+++ b/library/intl/resources/language/de-CH.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanisches Englisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianisch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisches Englisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprache"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprache"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianisches Portugiesisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britisches Englisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarisch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesisch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesisch (vereinfacht)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Diola"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englisch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäisches Portugiesisch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäisches Spanisch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Isländisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadisches Englisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadisches Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Suaheli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprache"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprache"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanisches Spanisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernes Hocharabisch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldauisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niederländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niedersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprache"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Österreichisches Deutsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiesisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprache"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisches Gälisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schweizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schweizer Hochdeutsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schweizerdeutsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanisch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser-Dialekte"
+ },
+ "be": {
+ "code": "be",
+ "name": "Weissrussisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Zentralatlas-Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/de.json b/library/intl/resources/language/de.json
new file mode 100644
index 000000000..f0d5bd340
--- /dev/null
+++ b/library/intl/resources/language/de.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanisches Englisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianisch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisches Englisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprache"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprache"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianisches Portugiesisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britisches Englisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarisch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesisch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesisch (vereinfacht)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Diola"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englisch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäisches Portugiesisch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäisches Spanisch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Isländisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadisches Englisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadisches Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Suaheli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprache"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprache"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanisches Spanisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernes Hocharabisch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldauisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niederländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niedersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprache"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Österreichisches Deutsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiesisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprache"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisches Gälisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schweizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schweizer Hochdeutsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schweizerdeutsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanisch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser-Dialekte"
+ },
+ "be": {
+ "code": "be",
+ "name": "Weißrussisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Zentralatlas-Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dje.json b/library/intl/resources/language/dje.json
new file mode 100644
index 000000000..a7b9f7bb1
--- /dev/null
+++ b/library/intl/resources/language/dje.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmaciine"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dsb.json b/library/intl/resources/language/dsb.json
new file mode 100644
index 000000000..d7d926ed1
--- /dev/null
+++ b/library/intl/resources/language/dsb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanšćina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanšćina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriska engelšćina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharšćina"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabšćina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeńšćina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturšćina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "awstralska engelšćina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanšćina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskišćina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běłorušćina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalšćina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnišćina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalšćina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonšćina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britiska engelšćina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaršćina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmašćina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnoatlaski tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "češćina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinšćina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinšćina (tradicionalna)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinšćina (zjadnorjona)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwatšćina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "danšćina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnoserbšćina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelšćina"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estišćina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europejska portugalšćina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europejska špańšćina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferejšćina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinšćina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finšćina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamšćina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francojšćina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizišćina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicišćina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandšćina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgišćina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "górnoserbšćina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grichišćina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandšćina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratšćina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejšćina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindišćina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungoršćina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonešćina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iršćina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandšćina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italšćina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japańšćina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubšćina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylšćina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodžanšćina"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadiska engelšćina"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadiska francojšćina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadšćina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdšćina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiršćina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katanlanšćina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachšćina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgišćina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundišćina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongojska swahilišćina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejańšćina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyra senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laošćina"
+ },
+ "se": {
+ "code": "se",
+ "name": "lapšćina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letišćina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litawšćina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgšćina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedońšćina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajamšćina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajšćina"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgašćina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltašćina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratišćina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaišćina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauriciska kreolšćina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikańska špańšćina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna wusokoarabšćina"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldawišćina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolšćina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalšćina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "de": {
+ "code": "de",
+ "name": "nimšćina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nižozemšćina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norwegske bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norwegske nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orojišćina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabšćina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunšćina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persišćina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "pódpołnocne ndebele"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólšćina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalšćina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromańšćina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunšćina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rušćina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbišćina"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalšćina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowakšćina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słowjeńšćina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somališćina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonšćina"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "šotišćina"
+ },
+ "es": {
+ "code": "es",
+ "name": "špańšćina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardny marokkański tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahilišćina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "šwedšćina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šwicarska francojšćina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "šwicarska nimšćina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilšćina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugšćina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandšćina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetšćina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganšćina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkojšćina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujguršćina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainšćina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdušćina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekšćina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamšćina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walizišćina"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dyo.json b/library/intl/resources/language/dyo.json
new file mode 100644
index 000000000..34a7a81d6
--- /dev/null
+++ b/library/intl/resources/language/dyo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharik"
+ },
+ "en": {
+ "code": "en",
+ "name": "angle"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmani"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaari"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "endu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franse"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneesi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "joola"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmeer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koree"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "maleesi"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlande"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ongrua"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonees"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "saponee"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "sek"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinua"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "sulu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tay"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrain"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dz.json b/library/intl/resources/language/dz.json
new file mode 100644
index 000000000..f3f2ca654
--- /dev/null
+++ b/library/intl/resources/language/dz.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ཀ་ན་ཌ་ཁ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ཀ་ཛགས་ཁ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ཀྲོ་ཨེ་ཤི་ཡཱན་ཁ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ཀཱཤ་མི་རི་ཁ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ཀིར་གིས་ཁ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ཀེ་ཊ་ལཱན་ཁ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ཀེ་ན་ཌི་ཡཱན་ཨིང་ལིཤ་ཁ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ཀོ་རི་ཡཱན་ཁ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ཁེ་མེར་ཁ"
+ },
+ "el": {
+ "code": "el",
+ "name": "གྲིཀ་ཁ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "གལ་ཨིས་ཨི་ཡན་ཁ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "གུ་ཇ་ར་ཏི་ཁ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ཅེཀ་ཁ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ཇཱ་པཱ་ནིས་ཁ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ཇཱར་མཱན་ཁ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ཇཽ་ཇི་ཡཱན་ཁ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ཊཱར་ཀིཤ་ཁ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ཊོང་གྷན་ཁ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ཌཆ་ཁ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ཌེ་ནིཤ་ཁ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ཏ་མིལ་ཁ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ཏིག་རི་ཉ་ཁ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ཏེ་ལུ་གུ་ཁ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ཐཱའི་ཁ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ནུབ་ཕྼི་སི་ཡན་ཁ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ནེ་པཱལི་ཁ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ནོར་ཝེ་ཇི་ཡཱན་ནོརསཀ་ཁ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "པར་ཤི་ཡཱན་ཁ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "པཱན་ཇ་བི་ཁ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "པཱཤ་ཏོ་ཁ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "པོ་ལིཤ་ཁ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "པོར་ཅུ་གིས་ཁ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ཕྲནཅ་ཁ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ཕྷེལེ་མིཤ་ཁ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ཕཱ་རོ་ཨིས་ཁ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ཕི་ནིཤ་ཁ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ཕི་ལི་པི་ནོ་ཁ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "བངྒ་ལ་ཁ"
+ },
+ "my": {
+ "code": "my",
+ "name": "བར་མིས་ཁ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "བྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "བྲི་ཊིཤ་ཨིང་ལིཤ་ཁ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "བྷོས་ནི་ཡཱན་ཁ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "བཱལ་གེ་རི་ཡཱན་ཁ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "བཱསཀ་ཁ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "བེཊ་ནཱ་མིས་ཁ"
+ },
+ "be": {
+ "code": "be",
+ "name": "བེལ་ཨ་རུས་ཁ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "བོད་ཁ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "མ་ར་ཐི་ཁ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "མ་ལ་ག་སི་ཁ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "མ་ལ་ཡ་ལམ་ཁ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "མ་ལེ་ཁ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "མ་སེ་ཌོ་ནི་ཡཱན་ཁ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "མཱལ་ཊ་ཁ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ཝི་གུར་ཁ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ཝེལཤ་ཁ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ཟུ་ལུ་ཁ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ཡུ་ཀེ་རེ་ནི་ཡཱན་ཁ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ཡུ་ཨེས་ཨིང་ལིཤ་ཁ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ཡོ་རུ་བ་ཁ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "རྒྱ་མི་ཁ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "རྒྱ་མི་ཁ་འཇམ་སངམ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "རྫོང་ཁ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "རོ་མེ་ནི་ཡཱན་ཁ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "རོ་མེ་ནིཤ་ཁ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ལག་ཛམ་བོརྒ་ཁ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ལཊ་བི་ཡཱན་ཁ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ལཱ་ཝོས་ཁ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ལི་ཐུ་ཝེ་ནི་ཡཱན་ཁ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "སྔ་དུས་ཀྱི་རྒྱ་མི་ཁ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "སྭཱ་ཧི་ལི་ཁ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "སཱར་བྷི་ཡཱན་ཁ"
+ },
+ "si": {
+ "code": "si",
+ "name": "སིང་ཧ་ལ་ཁ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "སུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "སུ་ཡིས་ཇཱར་མཱན་ཁ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "སུ་ཡིས་ཕྲནཅ་ཁ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "སུ་ལོ་བཱཀ་ཁ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "སུ་ལོ་བི་ནི་ཡཱན་ཁ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "སུའི་ཌིཤ་ཁ"
+ },
+ "so": {
+ "code": "so",
+ "name": "སོ་མ་ལི་ཁ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "སོག་པོའི་ཁ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ཧཝ་ས་ཁ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ཧཱང་གྷ་རི་ཡཱན་ཁ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ཧིན་དི་ཁ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ཧེ་བྲུ་ཁ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ཨ་ཛར་བྷའི་ཇཱན་ཁ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ཨ་ཡིས་ལེན་ཌིཀ་ཁ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ཨཕ་རི་ཀཱནས་ཁ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ཨམ་ཧ་རིཀ་ཁ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ཨར་མི་ནི་ཡཱན་ཁ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ཨཱའི་རིཤ་ཁ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ཨཱལ་བེ་ནི་ཡཱན་ཁ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ཨཱོས་ཊྲི་ཡཱན་ཇཱར་མཱན་ཁ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ཨི་ཊ་ལི་ཡཱན་ཁ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་ཁ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ཨིང་ལིཤ་ཁ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡཱན་ཁ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ཨིས་པེ་ནིཤ་ཁ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ཨུ་རུ་སུའི་ཁ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ཨུར་དུ་ཁ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ཨུས་བེཀ་ཁ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ཨེ་ར་བིཀ་ཁ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ཨེས་ཊོ་ནི་ཡཱན་ཁ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ཨེས་པ་རཱན་ཏོ་ཁ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ཨོ་རི་ཡ་ཁ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ebu.json b/library/intl/resources/language/ebu.json
new file mode 100644
index 000000000..bd8d663c7
--- /dev/null
+++ b/library/intl/resources/language/ebu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kĩakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kĩamhari"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kĩanjemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kĩarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kĩbangla"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kĩbulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kĩburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kĩcheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kĩchina"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Kĩembu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kĩfaransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kĩhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhindĩ"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kĩhispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kĩholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kĩhungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kĩindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kĩitaliano"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kĩkambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kĩkorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kĩmalesia"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kĩmbelarusi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kĩnepali"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kĩngriki"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kĩnjapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kĩnjeremani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kĩpolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kĩpunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kĩreno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kĩromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kĩrusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kĩsomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kĩswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kĩtailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kĩtamil"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kĩthungu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kĩturuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kĩukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kĩurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kĩvietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kĩyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kĩzulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ee.json b/library/intl/resources/language/ee.json
new file mode 100644
index 000000000..05fcc120b
--- /dev/null
+++ b/library/intl/resources/language/ee.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaangbe"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemgbe"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaniagbe"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariagbe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiagbe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniagbe"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asagbe"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagbe"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australiatɔwo ƒe yevugbe"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austriatɔwo ƒe germaniagbe"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijangbe"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiagbe"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambaragbe"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaagbe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basqugbe"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarusiagbe"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benagbe"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalgbe"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "blema tsainagbe"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "blugbe"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodogbe"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagbe"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "braziltɔwo ƒe portugalgbe"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretongbe"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britaintɔwo ƒe yevugbe"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariagbe"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagbe"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cape verdegbe"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "denmarkgbe"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "dzapangbe"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "dziehe ndebelegbe"
+ },
+ "se": {
+ "code": "se",
+ "name": "dziehe samigbe"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "dzola-fonyigbe"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagbe"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embugbe"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantogbe"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniagbe"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eʋegbe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondogbe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroegbe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipingbe"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlanɖgbe"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flemiagbe"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransegbe"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulagbe"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galatagbe"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "germaniagbe"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gɔgiagbe"
+ },
+ "el": {
+ "code": "el",
+ "name": "grisigbe"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ɣetoɖoƒe frisiagbe"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausagbe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrigbe"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigbe"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hɔlandgbe"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungarigbe"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "iberiatɔwo ƒe portugalgbe"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberiatɔwo ƒe spaniagbe"
+ },
+ "is": {
+ "code": "is",
+ "name": "icelanɖgbe"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagbe"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irelanɖgbe"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiagbe"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaalisugbe"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadatɔwo ƒe fransegbe"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadatɔwo ƒe yevugbe"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadagbe"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmirgbe"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalagbe"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhstangbe"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmergbe"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinagbe"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghistangbe"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagbe"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiagbe"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasiogbe"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "laksembɔggbe"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogbe"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviagbe"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lithuaniagbe"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangagbe"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyiagbe"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagbe"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuwa-mitogbe"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasegbe"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayagbe"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaygbe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagbe"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathiagbe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagbe"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangbe"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalgbe"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "nɔweigbe bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nɔweigbe ninɔsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuergbe"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriyagbe"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtogbe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiagbe"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polandgbe"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "pɔtugalgbe"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pundzabgbe"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romaniagbe"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanshgbe"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombogbe"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rɔtsiagbe"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundigbe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwagbe"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangogbe"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangugbe"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagbe"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonagbe"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalgbe"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skɔtlanɖ gaeliagbe"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiagbe"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveniagbe"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliagbe"
+ },
+ "es": {
+ "code": "es",
+ "name": "spaniagbe"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "swedengbe"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "swizerlanɖ germaniagbe kɔkɔtɔ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "swizerlanɖtɔwo ƒe fransegbe"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "swizerlanɖtɔwo ƒe germaniagbe"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandgbe"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilgbe"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawakgbe"
+ },
+ "te": {
+ "code": "te",
+ "name": "telegugbe"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tɛkigbe"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagbe"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinyagbe"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongagbe"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "tsainagbe"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsɛkgbe"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "u.s.dukɔmetɔwo ƒe yevugbe"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uighurgbe"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraingbe"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugbe"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekistangbe"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaigbe"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamgbe"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesgbe"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsegbe"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangbengbe"
+ },
+ "en": {
+ "code": "en",
+ "name": "yevugbe"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubagbe"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zamagbe"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulugbe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/el.json b/library/intl/resources/language/el.json
new file mode 100644
index 000000000..da61f48e4
--- /dev/null
+++ b/library/intl/resources/language/el.json
@@ -0,0 +1,738 @@
+{
+ "en": {
+ "code": "en",
+ "name": "Αγγλικά"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Αγγλικά Αμερικής"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Αγγλικά Αυστραλίας"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Αγγλικά Ηνωμένου Βασιλείου"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Αγγλικά Καναδά"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Αγκέμ"
+ },
+ "az": {
+ "code": "az",
+ "name": "Αζερμπαϊτζανικά"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ακάν"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Αλβανικά"
+ },
+ "am": {
+ "code": "am",
+ "name": "Αμαρικά"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Απλοποιημένα Κινεζικά"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Αραβικά"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Αρμενικά"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Άσου"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Αστουριανά"
+ },
+ "af": {
+ "code": "af",
+ "name": "Αφρικάανς"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Βάι"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Βάλσερ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Βασκικά"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Βιετναμικά"
+ },
+ "my": {
+ "code": "my",
+ "name": "Βιρμανικά"
+ },
+ "se": {
+ "code": "se",
+ "name": "Βόρεια Σάμι"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Βοσνιακά"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Βουλγαρικά"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Βούντζο"
+ },
+ "br": {
+ "code": "br",
+ "name": "Βρετονικά"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Γαλικιανά"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Γαλλικά"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Γαλλικά Ελβετίας"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Γαλλικά Καναδά"
+ },
+ "de": {
+ "code": "de",
+ "name": "Γερμανικά"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Γερμανικά Αυστρίας"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Γερμανικά Ελβετίας"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Γεωργιανά"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Γι"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Γιανγκμπέν"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Γιορούμπα"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Γκάντα"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Γκουγιαράτι"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Γκούσι"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Γλώσσα Άνω Λουσατίας"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Γλώσσα Κάτω Λουσατίας"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Γλώσσα του Πράσινου Ακρωτηρίου"
+ },
+ "da": {
+ "code": "da",
+ "name": "Δανικά"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Δυτικά Φριζιανά"
+ },
+ "he": {
+ "code": "he",
+ "name": "Εβραϊκά"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Εγουόντο"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Ελβετικά Γερμανικά"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ελληνικά"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Έμπου"
+ },
+ "et": {
+ "code": "et",
+ "name": "Εσθονικά"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Εσπεράντο"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Ζάρμα"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Ζουλού"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Θιβετιανά"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ιαπωνικά"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ινδονησιακά"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ιρλανδικά"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ισλανδικά"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ισπανικά"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ισπανικά Ευρώπης"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Ισπανικά Μεξικού"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ιταλικά"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Καζακικά"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Καλαάλισουτ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Καλεντζίν"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Κάμπα"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Καμπίλε"
+ },
+ "km": {
+ "code": "km",
+ "name": "Καμποτζιανά"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Κανάντα"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Κασμίρι"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Καταλανικά"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Κβάσιο"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Κικούγιου"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Κινεζικά"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Κόιρα Τσίνι"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Κοϊραμπόρο Σένι"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Κολωνικά"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Κονγκό Σουαχίλι"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Κορεατικά"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Κροατικά"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Κυργιζικά"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Λάνγκι"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Λαοθιανά"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Λετονικά"
+ },
+ "be": {
+ "code": "be",
+ "name": "Λευκορωσικά"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Λιθουανικά"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Λινγκάλα"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Λούμπα-Κατάνγκα"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Λουξεμβουργιανά"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Λούο"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Λουχία"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Μακόντε"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Μακούβα-Μέτο"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Μαλαγάσι"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Μαλαγιαλάμ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Μαλάι"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Μαλτεζικά"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Μαράθι"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Μασάι"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Μάχαμε"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Μερού"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Μογγολικά"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Μολδαβικά"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Μορίσιεν"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Μουντάνγκ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Μπαμπάρα"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Μπάσα"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Μπάφια"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Μπένα"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Μπενγκάλι"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Μπόντο"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Νάμα"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Νγκόμπα"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Νεπάλι"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Νιανκόλε"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Νορβηγικά Μποκμάλ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Νορβηγικά Νινόρσκ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Νουέρ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ντεμπέλε Βορρά"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Ντζόνγκχα"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ολλανδικά"
+ },
+ "or": {
+ "code": "or",
+ "name": "Ορίγια"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Ουαλικά"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ουγγρικά"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ουζμπεκικά"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Ουιγουρικά"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ουκρανικά"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ουρντού"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Παντζαπικά"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Παραδοσιακά Κινεζικά"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Πάστο"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Περσικά"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Πολωνικά"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Πορτογαλικά"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Πορτογαλικά Βραζιλίας"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Πορτογαλικά Ευρώπης"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Ρομανικά"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Ρόμπο"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Ρουά"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ρουμανικά"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Ρούντι"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ρωσικά"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Σάμπαλα"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Σαμπούρου"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Σάνγκο"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Σάνγκου"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Σένα"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Σερβικά"
+ },
+ "si": {
+ "code": "si",
+ "name": "Σινχαλεζικά"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Σκωτικά Κελτικά"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Σλαβομακεδονικά"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Σλοβακικά"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Σλοβενικά"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Σόγκα"
+ },
+ "so": {
+ "code": "so",
+ "name": "Σομάλι"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Σουαχίλι"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Σουηδικά"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Σύγχρονα Τυπικά Αραβικά"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Σχόνα"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ταϊλανδικά"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Τάιτα"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Ταμαζίτ Κεντρικού Μαρόκο"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Ταμίλ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Τασαβάκ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Τασελχίτ"
+ },
+ "te": {
+ "code": "te",
+ "name": "Τελούγκου"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Τέσο"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Τζόλα-Φόνι"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Τιγκρίνυα"
+ },
+ "to": {
+ "code": "to",
+ "name": "Τονγκανικά"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Τουρκικά"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Τσερόκι"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Τσεχικά"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Τσίγκα"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Τυπικά Ταμαζίγκτ Μαρόκου"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Φαρόε"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Φιλιππινεζικά"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Φινλανδικά"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Φλαμανδικά"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Φουλάχ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Φριούλιαν"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Χάουσα"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Χίντι"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/en-AU.json b/library/intl/resources/language/en-AU.json
new file mode 100644
index 000000000..e8870d47c
--- /dev/null
+++ b/library/intl/resources/language/en-AU.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australian English"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrian German"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "British English"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadian English"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "English"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standard Arabic"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "United States English"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/en.json b/library/intl/resources/language/en.json
new file mode 100644
index 000000000..499a392e7
--- /dev/null
+++ b/library/intl/resources/language/en.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "American English"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australian English"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrian German"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "British English"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadian English"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "English"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standard Arabic"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/eo.json b/library/intl/resources/language/eo.json
new file mode 100644
index 000000000..a86628b28
--- /dev/null
+++ b/library/intl/resources/language/eo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikansa"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akana"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albana"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "en": {
+ "code": "en",
+ "name": "angla"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "araba"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armena"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "aŭstra germana"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "aŭstralia angla"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajĝana"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "be": {
+ "code": "be",
+ "name": "belorusa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengala"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoa"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilportugala"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretona"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brita angla"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgara"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "burunda"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ĉeĥa"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ĉeroka"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ĉina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ĉina simpligita"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ĉina tradicia"
+ },
+ "da": {
+ "code": "da",
+ "name": "dana"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "dannorvega"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonko"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estona"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "eŭropa hispana"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "eŭropportugala"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "eŭska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroa"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finna"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandra"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franca"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisa"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaela"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galega"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "germana"
+ },
+ "el": {
+ "code": "el",
+ "name": "greka"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "gronlanda"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guĝarata"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haŭsa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hinda"
+ },
+ "es": {
+ "code": "es",
+ "name": "hispana"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungara"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlanda"
+ },
+ "is": {
+ "code": "is",
+ "name": "islanda"
+ },
+ "it": {
+ "code": "it",
+ "name": "itala"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japana"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanada angla"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanada franca"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanara"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "kartvela"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaŝmira"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "kataluna"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaĥa"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kimra"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiza"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmera"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroata"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latva"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laŭa"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litova"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedona"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasa"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaja"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalama"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "malsuprasoraba"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksika hispana"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna norma araba"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongola"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlanda"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepala"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novnorvega"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panĝaba"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paŝtoa"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pola"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugala"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanĉa"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumana"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusa"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoa"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serba"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaka"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovena"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somala"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahila"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sveda"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svisa franca"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svisa germana"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ŝona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "taja"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamila"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugua"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibeta"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigraja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongaa"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turka"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgura"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urduo"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "usona angla"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeka"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vjetnama"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulua"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-AR.json b/library/intl/resources/language/es-AR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-AR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-BO.json b/library/intl/resources/language/es-BO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-BO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CL.json b/library/intl/resources/language/es-CL.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CL.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CO.json b/library/intl/resources/language/es-CO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CR.json b/library/intl/resources/language/es-CR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CU.json b/library/intl/resources/language/es-CU.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CU.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-DO.json b/library/intl/resources/language/es-DO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-DO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-EC.json b/library/intl/resources/language/es-EC.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-EC.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-GT.json b/library/intl/resources/language/es-GT.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-GT.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-HN.json b/library/intl/resources/language/es-HN.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-HN.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-MX.json b/library/intl/resources/language/es-MX.json
new file mode 100644
index 000000000..5f07c32ac
--- /dev/null
+++ b/library/intl/resources/language/es-MX.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suizo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán suizo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorbio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bajo sorbio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilio"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "halenjin"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panyabí"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sindebele"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estándar marroquí"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-NI.json b/library/intl/resources/language/es-NI.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-NI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PA.json b/library/intl/resources/language/es-PA.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PA.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PE.json b/library/intl/resources/language/es-PE.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PE.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PR.json b/library/intl/resources/language/es-PR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PY.json b/library/intl/resources/language/es-PY.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PY.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-SV.json b/library/intl/resources/language/es-SV.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-SV.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-US.json b/library/intl/resources/language/es-US.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-US.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-UY.json b/library/intl/resources/language/es-UY.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-UY.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-VE.json b/library/intl/resources/language/es-VE.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-VE.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es.json b/library/intl/resources/language/es.json
new file mode 100644
index 000000000..74e16ddb2
--- /dev/null
+++ b/library/intl/resources/language/es.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suizo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerí"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskera"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/et.json b/library/intl/resources/language/et.json
new file mode 100644
index 000000000..67b00258f
--- /dev/null
+++ b/library/intl/resources/language/et.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaani"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akani"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alamsorbi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaania"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "araabia"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "araabia (tänapäevane)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeenia"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbaidžaani"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astuuria"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretooni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaaria"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "cologniani"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "et": {
+ "code": "et",
+ "name": "eesti"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flaami"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fääri"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaeli"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galeegi"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruusia"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grööni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "heebrea"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "hiina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "hiina (lihtsustatud)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "hiina (traditsiooniline)"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "hispaania"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "hispaania (Euroopa)"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandi"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvaadi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iiri"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglise"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglise (Briti)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglise (USA)"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "itaalia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "jaapani"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabiili"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kaljenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasahhi"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaani"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Kesk-Maroko tamazighti"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeeri"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiisi"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo suahiili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "el": {
+ "code": "el",
+ "name": "kreeka"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kõmri"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "leedu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "letseburgi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "läti"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "läänefriisi"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoonia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malai"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalami"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Mauritiuse kreoolkeel"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldova"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoli"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangi"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nkole"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norra bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norra nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nueri"
+ },
+ "or": {
+ "code": "or",
+ "name": "oria"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poola"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugali (Euroopa)"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "prantsuse"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "põhjandebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "põhjasaami"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "pärsia"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromaani"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "rootsi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeenia"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "de": {
+ "code": "de",
+ "name": "saksa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "saksa (kõrgsaksa)"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singali"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveeni"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaali"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "soome"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahiili"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "suulu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šona"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "šveitsisaksa"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "da": {
+ "code": "da",
+ "name": "taani"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhiti"
+ },
+ "th": {
+ "code": "th",
+ "name": "tai"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamasikti (Maroko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamili"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "taswaqi"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tiibeti"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tšehhi"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "tšerokii"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "türgi"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguuri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "be": {
+ "code": "be",
+ "name": "valgevene"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walseri"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "vene"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ülemsorbi"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangbeni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/eu.json b/library/intl/resources/language/eu.json
new file mode 100644
index 000000000..e980e5461
--- /dev/null
+++ b/library/intl/resources/language/eu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaansa"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemera"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanera"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaniera"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "aleman garaia (Suitza)"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemana"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemana (Suitza)"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharera"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ankolera"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiera"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabiera moderno estandarra"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniera"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asua"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijanera"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiera"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarera"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "behe-sorabiera"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benera"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalera"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusiera"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoera"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmala (Norvegia)"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniera"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoiera"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariera"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmatarra"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Cabo Verdeko kreola"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chigera"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "daniera"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embua"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "erromantxera"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "errumaniera"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "errusiera"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "eskoziako gaelikoa"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovakiera"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveniera"
+ },
+ "es": {
+ "code": "es",
+ "name": "espainiera"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espainiera (Europa)"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantoa"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniera"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskara"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eweera"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroera"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandiera"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandriera"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "fonyi jolera"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "frantsesa"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisiera"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "gaelikoa"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galesera"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiziera"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandera"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiera"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "goi-sorabiera"
+ },
+ "el": {
+ "code": "el",
+ "name": "greziera"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratera"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusiiera"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreera"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindia"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungariera"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiera"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingelesa"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingelesa (AEB)"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "iparraldeko ndebeleera"
+ },
+ "se": {
+ "code": "se",
+ "name": "iparraldeko samiera"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandiera"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiera"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoniera"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilera"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisutera"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinera"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambera"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadera"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmirera"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalana"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhera"
+ },
+ "km": {
+ "code": "km",
+ "name": "khemerera"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyuera"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizera"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongoko swahilia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreera"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiiniera"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro sennia"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroaziera"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasiera"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langiera"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosera"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letoniera"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaniera"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangera"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhyera"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoera"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxenburgera"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machamera"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meettoera"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondera"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasyera"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalamera"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaysiera"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltera"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathera"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Maroko erdialdeko tamazighta"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaiera"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Mauritaniako kreolera"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "mazedoniera"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meruera"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliera"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mudangera"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namera"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandera"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalera"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerera"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk norvegiera"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriyera"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxtuera"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiera"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloniera"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugesa"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugesa (Europa)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabera"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "romboera"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundiera"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwaera"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburuera"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoera"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguera"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senera"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiera"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalera"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonera"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogera"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliera"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suediera"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhita"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "tagaloga"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitera"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estandarra"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilera"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaqa"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluguera"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesoera"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandiera"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetera"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriñera"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongera"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiera"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txekiera"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "txerokiera"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "txinera"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "txinera soildua"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "txinera tradizionala"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurrera"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainera"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdua"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekera"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaiera"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamera"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjoa"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubera"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmera"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluera"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ewo.json b/library/intl/resources/language/ewo.json
new file mode 100644
index 000000000..fc4ca1131
--- /dev/null
+++ b/library/intl/resources/language/ewo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ǹkɔ́bɔ akán"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ǹkɔ́bɔ amária"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Ǹkɔ́bɔ arábia"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ǹkɔ́bɔ aúsá"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ǹkɔ́bɔ belarúsian"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ǹkɔ́bɔ bɛngalí"
+ },
+ "my": {
+ "code": "my",
+ "name": "Ǹkɔ́bɔ birəmán"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ǹkɔ́bɔ buləgárian"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ǹkɔ́bɔ éngəlís"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ǹkɔ́bɔ etáliɛn"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ǹkɔ́bɔ ɛndonésian"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ǹkɔ́bɔ fɛ́rəsian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ǹkɔ́bɔ fólis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ǹkɔ́bɔ fɔtugɛ́s"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ǹkɔ́bɔ fulɛnsí"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ǹkɔ́bɔ funəhábia"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ǹkɔ́bɔ gəlɛ́g"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ǹkɔ́bɔ hapɔ́n"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ǹkɔ́bɔ hiɛdənám"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ǹkɔ́bɔ hindí"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ǹkɔ́bɔ kəmɛ́r"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ǹkɔ́bɔ koréan"
+ },
+ "es": {
+ "code": "es",
+ "name": "ǹkɔ́bɔ kpənyá"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ǹkɔ́bɔ malɛ́sian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ǹkɔ́bɔ ndzáman"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ǹkɔ́bɔ nefálian"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ǹkɔ́bɔ nɛrəlándía"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ńkɔ́bɔ románía"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ǹkɔ́bɔ rúsian"
+ },
+ "so": {
+ "code": "so",
+ "name": "ǹkɔ́bɔ somália"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ǹkɔ́bɔ suwɛ́d"
+ },
+ "th": {
+ "code": "th",
+ "name": "ǹkɔ́bɔ táilan"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ǹkɔ́bɔ tamíl"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ǹkɔ́bɔ tsainís"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ǹkɔ́bɔ tsɛ́g"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ǹkɔ́bɔ túrəki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ǹkɔ́bɔ ukelénia"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ǹkɔ́bɔ ungárían"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ǹkɔ́bɔ urudú"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ǹkɔ́bɔ yorúba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ǹkɔ́bɔ zulú"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fa-AF.json b/library/intl/resources/language/fa-AF.json
new file mode 100644
index 000000000..1327eea2f
--- /dev/null
+++ b/library/intl/resources/language/fa-AF.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "آستوری"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "af": {
+ "code": "af",
+ "name": "آفریکانس"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "آکان"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "آگیم"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "آلبانیایی"
+ },
+ "de": {
+ "code": "de",
+ "name": "آلمانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آلمانی اتریش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "آلمانی سوئیسی"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "آلمانی علیای سوئیس"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "آمازیغی اطلس مرکزی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "آمازیغی معیار مراکش"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آیرلندی"
+ },
+ "is": {
+ "code": "is",
+ "name": "آیسلندی"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمنی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "اسپانیایی اروپا"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "اسپانیایی مکزیک"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "استونیایی"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "اسلواکی"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "اسلووینیایی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهری"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "انده‌بله‌ای شمالی"
+ },
+ "id": {
+ "code": "id",
+ "name": "اندونیزیایی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگلیسی"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "انگلیسی استرالیا"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "انگلیسی امریکا"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "انگلیسی بریتانیا"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "انگلیسی کانادا"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "اواندو"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوریه‌ای"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکراینی"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "اوه‌ای"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اویغوری"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایتالوی"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسایی"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافیایی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبارایی"
+ },
+ "br": {
+ "code": "br",
+ "name": "برتانیایی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمه‌ای"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "be": {
+ "code": "be",
+ "name": "بلوروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بنایی"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودویی"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنیایی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "بوکسمال نروژی"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتغالی اروپا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتغالی برزیل"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولندی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تاچل‌هیت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامیلی"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تایتا"
+ },
+ "th": {
+ "code": "th",
+ "name": "تایلندی"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "az": {
+ "code": "az",
+ "name": "ترکی آذربایجانی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی استانبولی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تسواکی"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تسویی"
+ },
+ "te": {
+ "code": "te",
+ "name": "تلوگویی"
+ },
+ "to": {
+ "code": "to",
+ "name": "تونگایی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تیگرینیایی"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "جونخایی"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چروکیایی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چکی"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی ساده‌شده"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "چینی سنتی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمری"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانمارکی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "دری"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "دیولا فونی"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روایی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانیایی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبویی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "روندیایی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولویی"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "سامی شمالی"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگویی"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سنا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "سواحلی کنگویی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگایی"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالیایی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویدنی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سینهالی"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونایی"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "صُربی سفلی"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "صُربی علیا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبری"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "عربی رسمی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فارویی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فرانسوی"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "فرانسوی سوئیس"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "فرانسوی کانادا"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "فریزی غربی"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "فریولیایی"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "فلمنگی"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فنلندی"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "فولایی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فیلیپینی"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبایلی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قرغزی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاقی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "کابووردیانو"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاتالان"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "کالنجین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبایی"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کاناده‌ای"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروشیایی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "کوازیو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "کوجراچینی"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریایی"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "کویرابورا سنی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویویی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیسیایی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندایی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گرجی"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گرینلندی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گوسی"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "گیلی اسکاتلندی"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسی"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لتونیایی"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوبایی‐کاتانگا"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لوگزامبورگی"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لوئویی"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لیتوانیایی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لینگالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامه‌ای"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسایی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماکوا متو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماکونده"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مالاگاسیایی"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالامی"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالایی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ماندانگی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "مجاری"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراتی"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "مرویی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغلی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسین"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداویایی"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "نامایی"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نرس جدید نروژی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نیانکوله‌ای"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هالندی"
+ },
+ "es": {
+ "code": "es",
+ "name": "هسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندی"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "هوسیایی"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ویایی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلزی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبایی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fa.json b/library/intl/resources/language/fa.json
new file mode 100644
index 000000000..a09658ef2
--- /dev/null
+++ b/library/intl/resources/language/fa.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "آستوری"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "af": {
+ "code": "af",
+ "name": "آفریکانس"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "آکان"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "آگیم"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "آلبانیایی"
+ },
+ "de": {
+ "code": "de",
+ "name": "آلمانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آلمانی اتریش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "آلمانی سوئیسی"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "آلمانی علیای سوئیس"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "آمازیغی اطلس مرکزی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "آمازیغی معیار مراکش"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمنی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکی"
+ },
+ "es": {
+ "code": "es",
+ "name": "اسپانیایی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "اسپانیایی اروپا"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "اسپانیایی مکزیک"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "استونیایی"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "اسلواکی"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "اسلووینیایی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهری"
+ },
+ "id": {
+ "code": "id",
+ "name": "اندونزیایی"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "انده‌بله‌ای شمالی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگلیسی"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "انگلیسی استرالیا"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "انگلیسی امریکا"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "انگلیسی بریتانیا"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "انگلیسی کانادا"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "اواندو"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوریه‌ای"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکراینی"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "اوه‌ای"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اویغوری"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایتالیایی"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ایرلندی"
+ },
+ "is": {
+ "code": "is",
+ "name": "ایسلندی"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسایی"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافیایی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبارایی"
+ },
+ "br": {
+ "code": "br",
+ "name": "برتانیایی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمه‌ای"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "be": {
+ "code": "be",
+ "name": "بلوروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بنایی"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودویی"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنیایی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "بوکسمال نروژی"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پرتغالی"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتغالی اروپا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتغالی برزیل"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تاچل‌هیت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامیلی"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تایتا"
+ },
+ "th": {
+ "code": "th",
+ "name": "تایلندی"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "az": {
+ "code": "az",
+ "name": "ترکی آذربایجانی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی استانبولی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تسواکی"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تسویی"
+ },
+ "te": {
+ "code": "te",
+ "name": "تلوگویی"
+ },
+ "to": {
+ "code": "to",
+ "name": "تونگایی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تیگرینیایی"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "جونخایی"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چروکیایی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چکی"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی ساده‌شده"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "چینی سنتی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمری"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانمارکی"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "دیولا فونی"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روایی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانیایی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبویی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "روندیایی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولویی"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ژاپنی"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "سامی شمالی"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگویی"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سنا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "سواحلی کنگویی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سوئدی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگایی"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالیایی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سینهالی"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونایی"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "صُربی سفلی"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "صُربی علیا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبری"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "عربی رسمی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "فارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فارویی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فرانسوی"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "فرانسوی سوئیس"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "فرانسوی کانادا"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "فریزی غربی"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "فریولیایی"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "فلمنگی"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فنلاندی"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "فولایی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فیلیپینی"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبایلی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قرقیزی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاقی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "کابووردیانو"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاتالان"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "کالنجین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبایی"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کاناده‌ای"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروات"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کره‌ای"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "کوازیو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "کوجراچینی"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "کویرابورا سنی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویویی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیسیایی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندایی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گرجی"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گرینلندی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گوسی"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "گیلی اسکاتلندی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسی"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لتونیایی"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لوئویی"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوبایی‐کاتانگا"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لوگزامبورگی"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "لهستانی"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لیتوانیایی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لینگالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامه‌ای"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسایی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماکوا متو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماکونده"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مالاگاسیایی"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالامی"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالایی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ماندانگی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "مجاری"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراتی"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "مرویی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغولی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسین"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداویایی"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "نامایی"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نپالی"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نرس جدید نروژی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نیانکوله‌ای"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ویایی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلزی"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هلندی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندی"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "هوسیایی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبایی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ff.json b/library/intl/resources/language/ff.json
new file mode 100644
index 000000000..bf5e4df7f
--- /dev/null
+++ b/library/intl/resources/language/ff.json
@@ -0,0 +1,738 @@
+{
+ "ar": {
+ "code": "ar",
+ "name": "Aarabeere"
+ },
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akaan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruuse"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgariire"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmeese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cekkere"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dacceere"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "Docceere"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "id": {
+ "code": "id",
+ "name": "Endonesiire"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engeleere"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Español"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Farayseere"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gerke"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsaŋkoore"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hinndi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongariire"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiyeere"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kemeere"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreere"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malayeere"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaaleere"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perseere"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloneere"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Pulaar"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabeere"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Purtugeere"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Riis"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaneere"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Saponeere"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwaare"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalii"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Suluŋkoore"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweedeere"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taay"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkeere"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukereneere"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Wiyetnameere"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorrubaa"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fi.json b/library/intl/resources/language/fi.json
new file mode 100644
index 000000000..44434b238
--- /dev/null
+++ b/library/intl/resources/language/fi.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alasorbi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albania"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikanenglanti"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabia"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australianenglanti"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasilianportugali"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoni"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britannianenglanti"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "burma"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "djerma"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "englanti"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanja"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanjanespanja"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "farsi"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flaami"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fääri"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaeli"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "heprea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollanti"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iiri"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesia"
+ },
+ "is": {
+ "code": "is",
+ "name": "islanti"
+ },
+ "it": {
+ "code": "it",
+ "name": "italia"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "itävallansaksa"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japani"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyyli"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadanenglanti"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadanranska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdenkreoli"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaani"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "katanganluba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakki"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "keskiatlaksentamazight"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kingwana"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiisi"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "el": {
+ "code": "el",
+ "name": "kreikka"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymri"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "lango"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvia"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettua"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburg"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "länsifriisi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "maasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonia"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaiji"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikonespanja"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldova"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoli"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norjan bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norjan nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "perinteinen kiina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "pohjois-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "pohjoissaame"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalinportugali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "puola"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ranska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromaani"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romania"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruotsi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "de": {
+ "code": "de",
+ "name": "saksa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveeni"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šona"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomi"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsinranska"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsinsaksa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsinyläsaksa"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamili"
+ },
+ "da": {
+ "code": "da",
+ "name": "tanska"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tiibet"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tšekki"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkki"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguuri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "unkari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "vakioitu tamazight"
+ },
+ "be": {
+ "code": "be",
+ "name": "valkovenäjä"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "venäjä"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnam"
+ },
+ "et": {
+ "code": "et",
+ "name": "viro"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "yksinkertaistettu kiina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "yleisarabia"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yläsorbi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fil.json b/library/intl/resources/language/fil.json
new file mode 100644
index 000000000..494145b3e
--- /dev/null
+++ b/library/intl/resources/language/fil.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingles"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingles (UK)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingles (US)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Ingles ng Australya"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Ingles sa Canada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirghiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernong Karaniwang Arabe"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuges"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scots Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili (Congo)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight ng Gitnang Atlas"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukranian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fo.json b/library/intl/resources/language/fo.json
new file mode 100644
index 000000000..c9a158e2a
--- /dev/null
+++ b/library/intl/resources/language/fo.json
@@ -0,0 +1,738 @@
+{
+ "ps": {
+ "code": "ps",
+ "name": "afghanskt"
+ },
+ "af": {
+ "code": "af",
+ "name": "afríska"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanskt"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariskt"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiskt"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenskt"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu (Tanzania)"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijaniskt"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiskt"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengaliskt"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniskt"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonskt"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarskt"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiskt"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "danskt"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "enskt"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estlendskt"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipiniskt"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finskt"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franskt"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "føroyskt"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisiskt"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiskt"
+ },
+ "el": {
+ "code": "el",
+ "name": "grikiskt"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujariti"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraiskt"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollendskt"
+ },
+ "be": {
+ "code": "be",
+ "name": "hvitarussiskt"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiskt"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írskt"
+ },
+ "is": {
+ "code": "is",
+ "name": "íslendskt"
+ },
+ "it": {
+ "code": "it",
+ "name": "italskt"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanskt"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodjanskt"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiskt"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiriskt"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanskt"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiskt"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "kekkiskt"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiskt"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisikt"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanskt"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiskt"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiskt"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviskt"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litavskt"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiskt"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonskt"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasiskt"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiskt"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiskt"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathiskt"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliskt"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalskt"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bokmál"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nýnorskt"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiskt"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskt"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiskt"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabiskt"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romansh"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanskt"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russiskt"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiskt"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalesiskt"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotskt gæliskt"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiskt"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenskt"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliskt"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanskt"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "sulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenskt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilskt"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugiskt"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailendskt"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanskt"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganskt"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiskt"
+ },
+ "de": {
+ "code": "de",
+ "name": "týskt"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uighur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainskt"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarskt"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiskt"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valisiskt"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisikt"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiskt"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fr-CA.json b/library/intl/resources/language/fr-CA.json
new file mode 100644
index 000000000..7dbc873a3
--- /dev/null
+++ b/library/intl/resources/language/fr-CA.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "de": {
+ "code": "de",
+ "name": "allemand"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "allemand autrichien"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "allemand suisse"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazighe standard marocain"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharique"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglais américain"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglais australien"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglais britannique"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglais canadien"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabe standard moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménien"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "assou"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturien"
+ },
+ "az": {
+ "code": "az",
+ "name": "azéri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bas-sorabe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basque"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "bassa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "béna"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "biélorusse"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaque"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgare"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capverdien"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "chambala"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinois"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinois simplifié"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinois traditionnel"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "chleuh"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalais"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coréen"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "créole mauricien"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croate"
+ },
+ "da": {
+ "code": "da",
+ "name": "danois"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fogny"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embou"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espagnol ibérique"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espagnol mexicain"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "espéranto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonien"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "éwé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "éwondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "féroïen"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnois"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "français"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "français canadien"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "français suisse"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "francique ripuaire"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frison"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélique écossais"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicien"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallois"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "géorgien"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "goudjarâtî"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandais"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "haut-sorabe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hébreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrois"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonais"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghize"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanien"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgeois"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macédonien"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malais"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merou"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldave"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndébélé du Nord"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "néerlandais"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "népalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvégien bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvégien nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolé"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "oluluyia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouïgour"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbek"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "peul"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonais"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brésilien"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais ibérique"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumain"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "roundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami du Nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangho"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbe"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaque"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovène"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suédois"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "suisse allemand"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili du Congo"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchèque"
+ },
+ "te": {
+ "code": "te",
+ "name": "télougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibétain"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainien"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaï"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fr.json b/library/intl/resources/language/fr.json
new file mode 100644
index 000000000..2459e9df9
--- /dev/null
+++ b/library/intl/resources/language/fr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alémanique"
+ },
+ "de": {
+ "code": "de",
+ "name": "allemand"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "allemand autrichien"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "allemand suisse"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazighe standard marocain"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharique"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglais américain"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglais australien"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglais britannique"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglais canadien"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabe standard moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménien"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "assou"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturien"
+ },
+ "az": {
+ "code": "az",
+ "name": "azéri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bas-sorabe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basque"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "bassa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "béna"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "biélorusse"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaque"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgare"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capverdien"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "chambala"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinois"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinois simplifié"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinois traditionnel"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "chleuh"
+ },
+ "si": {
+ "code": "si",
+ "name": "cinghalais"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coréen"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "créole mauricien"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croate"
+ },
+ "da": {
+ "code": "da",
+ "name": "danois"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fogny"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embou"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espagnol d’Europe"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espagnol mexicain"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "espéranto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonien"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "éwé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "éwondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "féroïen"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnois"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "français"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "français canadien"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "français suisse"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "francique ripuaire"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frison occidental"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélique écossais"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicien"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallois"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "géorgien"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "haut-sorabe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hébreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrois"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonais"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghize"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanien"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgeois"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macédonien"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malais"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merou"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldave"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndébélé du Nord"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "néerlandais"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "népalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvégien bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvégien nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolé"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "oluluyia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouïghour"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbek"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "peul"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonais"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brésilien"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais d’Europe"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumain"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "roundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami du Nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangho"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbe"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaque"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovène"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suédois"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili du Congo"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchèque"
+ },
+ "te": {
+ "code": "te",
+ "name": "télougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibétain"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonguien"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainien"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaï"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fur.json b/library/intl/resources/language/fur.json
new file mode 100644
index 000000000..16c262dc3
--- /dev/null
+++ b/library/intl/resources/language/fur.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alt todesc de Svuizare"
+ },
+ "am": {
+ "code": "am",
+ "name": "amaric"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arap"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armen"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalês"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorùs"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniac"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cec"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "cinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "cinês semplificât"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "cinês tradizionâl"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "corean"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "cravuat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraic"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipin"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamant"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês dal Canade"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês de Svuizare"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlan"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "gaelic irlandês"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelic scozês"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galizian"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "gjaponês"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gjeorgjian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grêc"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesian"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australian"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britanic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingles merecan"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazac"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "leton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lussemburghês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedon"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malês"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldâf"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongul"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele setentrionâl"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalês"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegjês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegjês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ongjarês"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polac"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portughês"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portughês brasilian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portughês iberic"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romen"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rumanç"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami setentrionâl"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serp"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinalês"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somal"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnûl"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnûl iberic"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedês"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "talian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telegu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "de": {
+ "code": "de",
+ "name": "todesc"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "todesc de Austrie"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucrain"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbec"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamite"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fy.json b/library/intl/resources/language/fy.json
new file mode 100644
index 000000000..ccf6d7156
--- /dev/null
+++ b/library/intl/resources/language/fy.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaansk"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaneesk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikaansk Ingelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarsk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabysk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeensk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturysk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australysk Ingelsk"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidzjaansk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskysk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaalsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmees"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnysk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazyljaansk Portugees"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britsk Ingelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaarsk"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deensk"
+ },
+ "de": {
+ "code": "de",
+ "name": "Dútsk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Eastenryks Dútsk"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estlânsk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europees Portugees"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europeesk Spaansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faeröersk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ferienfâldich Sineesk"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipynsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finsk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frânsk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulysk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisysk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgysk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grienlâns"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gryks"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeuwsk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaarsk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iersk"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingelsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaansk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japans"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kaapverdysk Creools"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadeesk Frânsk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadeesk Ingelsk"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaansk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazachs"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizysk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatysk"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiaansk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letlâns"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litouws"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonysk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasysk"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikaansk Spaansk"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern standert Arabysk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavysk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlânsk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nedersorbysk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Ngumba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noard-Ndbele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noard-Samysk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noors - Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noors - Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Odia"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Oeigoers"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Oppersorbysk"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjtoe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perzysk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poalsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugeesk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaansk"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeensk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russysk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schotsk Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Servysk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sineesk"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalees"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloveensk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalysk"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standert Marokkaanske Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Switsers Dútsk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Switserse Frânsk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Switsersk Heechdútsk"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight (Sintraal-Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thais"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetaansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tradisjoneel Sineesk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjechysk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsk"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "West-Frysk"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wyt-Russysk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "id": {
+ "code": "id",
+ "name": "Yndonezysk"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yslâns"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Zweeds"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ga.json b/library/intl/resources/language/ga.json
new file mode 100644
index 000000000..9133573f5
--- /dev/null
+++ b/library/intl/resources/language/ga.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "Acáinis"
+ },
+ "af": {
+ "code": "af",
+ "name": "Afracáinis"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Airméinis"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albáinis"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amáiris"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Araibis"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Araibis Chaighdeánach"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Ard-Ghearmáinis Eilvéiseach"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asarbaiseáinis"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astúiris"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bascais"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bealarúisis"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Beangáilis"
+ },
+ "en": {
+ "code": "en",
+ "name": "Béarla"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Béarla Astrálach"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Béarla Briotanach"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Béarla Ceanadach"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Béarla Meiriceánach"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boisnis"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Breatnais"
+ },
+ "br": {
+ "code": "br",
+ "name": "Briotáinis"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgáiris"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmais"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Caismíris"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Cannadais"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casaicis"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalóinis"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ciméiris"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Ciocúis"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cirgisis"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Cóiréis"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Cróitis"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmhairgis"
+ },
+ "he": {
+ "code": "he",
+ "name": "Eabhrais"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eastóinis"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faróis"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipínis"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fionlainnis"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fraincis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Fraincis Cheanadach"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Fraincis Eilvéiseach"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Freaslainnis Iartharach"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friúilis"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fuláinis"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gaeilge"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaeilge na hAlban"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gailísis"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gearmáinis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Gearmáinis Eilvéiseach"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Gearmáinis Ostarach"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gréigis"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gúisearáitis"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hásais"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hiondúis"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iarúibis"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indinéisis"
+ },
+ "it": {
+ "code": "it",
+ "name": "Iodáilis"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Ioruais Bokmål"
+ },
+ "is": {
+ "code": "is",
+ "name": "Íoslainnis"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laitvis"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoisis"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Liongáilis"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Liotuáinis"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Lúba-Cataingis"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lucsambuirgis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Lugandais"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macadóinis"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Mailéalaimis"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaeis"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagáisis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Máltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Maraitis"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldáivis"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongóilis"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndeibéilis an Tuaiscirt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neipeailis"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nua-Ioruais"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oirísis"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ollainnis"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paistis"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Peirsis"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Pléimeannais"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polainnis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portaingéilis"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portaingéilis Ibéarach"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portaingéilis na Brasaíle"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Puinseáibis"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rómainis"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rómáinis"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rúindis"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rúisis"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sáimis Thuaidh"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sangóis"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Seapáinis"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Seicis"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Seirbis"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Seiricis"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Seoinicis"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Seoinis"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Seoirsis"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sínis"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Sínis Shimplithe"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Sínis Thraidisiúnta"
+ },
+ "si": {
+ "code": "si",
+ "name": "Siolóinis"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slóivéinis"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slóvaicis"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somáilis"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbais Íochtarach"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbais Uachtarach"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spáinnis"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spáinnis Eorpach"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spáinnis Mheicsiceach"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sualainnis"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Súlúis"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Svahaílis"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Svahaílis an Chongó"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamailis"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "Téalainnis"
+ },
+ "te": {
+ "code": "te",
+ "name": "Teileagúis"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibéidis"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinis"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongais"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tuircis"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Úcráinis"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigiúiris"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Úisbéiceastáinis"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungáiris"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdúis"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vítneaimis"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmais"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gd.json b/library/intl/resources/language/gd.json
new file mode 100644
index 000000000..e774f2691
--- /dev/null
+++ b/library/intl/resources/language/gd.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afraganais"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Airmeinis"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albàinis"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amtharais"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabais"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Àrd-Ghearmailtis na h-Eilbheise"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asarbaideànais"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astùrais"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basgais"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bealaruisis"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Beangailis"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "en": {
+ "code": "en",
+ "name": "Beurla"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Beurla Astràilia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Beurla Bhreatainn"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Beurla Chanada"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Beurla na h-Aimeireaga"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Bhiet-Namais"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål na Nirribhidh"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnais"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breatnais"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarais"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmais"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Cairtbheilis"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Caismiris"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casachais"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalanais"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cìorgasais"
+ },
+ "km": {
+ "code": "km",
+ "name": "Cmèar"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Coirèanais"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Cròthaisis"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Cuimris"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmhairgis"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Duitsis"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "Eabhra"
+ },
+ "it": {
+ "code": "it",
+ "name": "Eadailtis"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eastoinis"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Fàrothais"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsaidh"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipinis"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fionnlannais"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flannrais"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fraingis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Fraingis Chanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Fraingis Eilbheiseach"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frìoslannais Siarach"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friùilis"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gaeilge"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gàidhlig"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gailìsis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gearmailtis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Gearmailtis Eilbheiseach"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Gearmailtis na h-Ostaire"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greugais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindis"
+ },
+ "id": {
+ "code": "id",
+ "name": "Innd-Innsis"
+ },
+ "is": {
+ "code": "is",
+ "name": "Innis Tìlis"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ioruba"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kiswahili na Congo"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laitbheis"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Làtho"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Liotuainis"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lugsamburgais"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasais"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaidhis"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masadonais"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldobhais"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolais"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Thuathach"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neapàilis"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Nuadh-Arabais Stannardach"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk na Nirribhidh"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pachtu"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pòlainnis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portagailis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portagailis Bhraisileach"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portagailis Eòrpach"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romàinis"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruisis"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rumains"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sàmais Thuathach"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Seacais"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Seapanais"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sèirbis"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sìnis"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Sìnis Shimplichte"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Sìnis Thradaiseanta"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slòbhacais"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slòbhainis"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somàilis"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sòrbais Ìochdarach"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sòrbais Uachdarach"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spàinntis"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spàinntis Eòrpach"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spàinntis Mheagsagach"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suainis"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tàidh"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Taimilis"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Meadhan na h-Atlas"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Stannardach Moroco"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeitis"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongais"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turcais"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ucràinis"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Ùigiurais"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungairis"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ùrdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbagais"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gl.json b/library/intl/resources/language/gl.json
new file mode 100644
index 000000000..53405511a
--- /dev/null
+++ b/library/intl/resources/language/gl.json
@@ -0,0 +1,738 @@
+{
+ "az": {
+ "code": "az",
+ "name": "acerbaixano"
+ },
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akán"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán de austria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suízo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán suízo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sorabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "caboverdiano"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemir"
+ },
+ "km": {
+ "code": "km",
+ "name": "cambodiano"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "casaco"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "castelán"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinés"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinés simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinés tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "crioulo mauritano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarqués"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniano"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "éuscaro"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suízo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guxaratiano"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandés"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiano"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés dos Estados Unidos"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malabar"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruegués bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruegués nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxtún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués brasileiro"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués europeo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanés"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "romanés moldavo"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahili congolés"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight de Marrocos estándar"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight marroquí central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganés"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraíno"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeco"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "xaponés"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "xeorxiano"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gsw.json b/library/intl/resources/language/gsw.json
new file mode 100644
index 000000000..07374ed4c
--- /dev/null
+++ b/library/intl/resources/language/gsw.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanischs Änglisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Änglisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Aschturianisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu (Tanzania)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Auschtralischs Änglisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianischs Portugiisisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britischs Änglisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Brötoonisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaarisch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chineesisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dschongkha"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eestnisch"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Eschperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Fläämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Friesisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda-Schpraach"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Gröönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ibeerischs Schpanisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberischs Portugiisisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iirisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iisländisch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiänisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadischs Änglisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadischs Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu-Schpraach"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiisisch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroazisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laozisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Schpraach"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Schpraach"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niderländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nidersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Schpraach"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Öschtriichischs Tüütsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandschabisch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiisisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Schpraach"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Schhona"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisch-Gäälisch"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpanisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwiizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwiizer Hochtüütsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwiizertüütsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "da": {
+ "code": "da",
+ "name": "Tänisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tradizionells Chineesisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Tüütsch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai-Schpraach"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Veräifachts Chineesisch"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wiissrussisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gu.json b/library/intl/resources/language/gu.json
new file mode 100644
index 000000000..073c814ef
--- /dev/null
+++ b/library/intl/resources/language/gu.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "અંગ્રેજી"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "અકાન"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "અઘેમ"
+ },
+ "az": {
+ "code": "az",
+ "name": "અઝરબૈજાની"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "અપ્પર સોર્બિયન"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "અમેરિકન અંગ્રેજી"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "અરબી"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "અલ્બેનિયન"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "અસુ"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "અસ્તુરિયન"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "આઇરિશ"
+ },
+ "is": {
+ "code": "is",
+ "name": "આઇસલેન્ડિક"
+ },
+ "af": {
+ "code": "af",
+ "name": "આફ્રિકન્સ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "આર્મેનિયન"
+ },
+ "it": {
+ "code": "it",
+ "name": "ઇટાલિયન"
+ },
+ "id": {
+ "code": "id",
+ "name": "ઇન્ડોનેશિયન"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ઇવોન્ડો"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ઈવ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ઉઇગુર"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ઉઝ્બેક"
+ },
+ "or": {
+ "code": "or",
+ "name": "ઉડિયા"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ઉતર દેબેલ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ઉત્તરીય સામી"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ઉર્દૂ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ઍમ્બુ"
+ },
+ "am": {
+ "code": "am",
+ "name": "એમ્હારિક"
+ },
+ "et": {
+ "code": "et",
+ "name": "એસ્ટોનિયન"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "એસ્પેરાન્ટો"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ઓસ્ટ્રિઅન જર્મન"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ઓસ્ટ્રેલિયન અંગ્રેજી"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "કઝાખ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "કતલાન"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "કન્નડ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "કબાઇલ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "કમ્બા"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "કલાલ્લિસુત"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "કલેજિન"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "કાબુવર્ડિઆનુ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "કાશ્મીરી"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "કિકુયૂ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "કિર્ગીઝ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "કેનેડિયન અંગ્રેજી"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "કેનેડિયન ફ્રેંચ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "કોંગો સ્વાહિલી"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "કોયરા ચિનિ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "કોયરાબોરો સેન્ની"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "કોરિયન"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ક્રોએશિયન"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ક્વાસિઓ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ખ્મેર"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ગાંડા"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ગુજરાતી"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ગુસી"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ગેલિશિયન"
+ },
+ "el": {
+ "code": "el",
+ "name": "ગ્રીક"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ચાઇનીઝ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ચિગા"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ચેક"
+ },
+ "de": {
+ "code": "de",
+ "name": "જર્મન"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "જાપાનીઝ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "જોલા-ફોન્યી"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "જ્યોર્જિઅન"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ઝર્મા"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ઝુલુ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ટર્કીશ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ટાઇગ્રિનિયા"
+ },
+ "to": {
+ "code": "to",
+ "name": "ટોંગાન"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ડચ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ડેનિશ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ડ્ઝોંગ્ખા"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "તમિલ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "તસાવાક"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "તિબેટીયન"
+ },
+ "te": {
+ "code": "te",
+ "name": "તેલુગુ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "તેશીલહિટ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "તેસો"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "તૈતા"
+ },
+ "th": {
+ "code": "th",
+ "name": "થાઈ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "નગોમ્બા"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "નમા"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "નિમ્ન સોર્બિયન"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "નુએર"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "નેપાળી"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "નૉર્વેજીયન નાયનૉર્સ્ક"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "નોર્વેજીયન બોકમાલ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ન્યાનકોલ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "પંજાબી"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "પશ્ચિમી ફ્રિશિયન"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "પશ્તો"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "પારંપરિક ચાઇનીઝ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "પોર્ટુગીઝ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "પોલીશ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "પ્રમાણભૂત મોરોક્કન ટમાઝિટ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ફારસી"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ફિનિશ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ફિલિપિનો"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ફુલાહ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ફોરિસ્ત"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ફ્રિયુલિયાન"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ફ્રેન્ચ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ફ્લેમિશ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "બંગાળી"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "બફિયા"
+ },
+ "my": {
+ "code": "my",
+ "name": "બર્મીઝ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "બલ્ગેરિયન"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "બસા"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "બામ્બારા"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "બાસ્ક"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "બેના"
+ },
+ "be": {
+ "code": "be",
+ "name": "બેલારુશિયન"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "બોડો"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "બોસ્નિયન"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "બ્રાઝિલીયન પોર્ટુગીઝ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "બ્રિટિશ અંગ્રેજી"
+ },
+ "br": {
+ "code": "br",
+ "name": "બ્રેટોન"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "મકામે"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "મકોન્ડે"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "મરાઠી"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "મલય"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "મલયાલમ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "મલાગસી"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "મસાઇ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "માખુવા-મીટ્ટુ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "માલ્ટિઝ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "મુનડાન્ગ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "મેક્સિકન સ્પેનિશ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "મેરુ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "મેસેડોનિયન"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "મોંગોલિયન"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "મોડર્ન સ્ટાન્ડર્ડ અરબી"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "મોરીસ્યેન"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "મોલડાવિયન"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "યુક્રેનિયન"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "યુરોપિયન પોર્ટુગીઝ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "યુરોપિયન સ્પેનિશ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "યોરૂબા"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "રવા"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "રશિયન"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "રૂન્દી"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "રોમાનિયન"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "રોમાન્શ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "રોમ્બો"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "લંગી"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "લક્ઝેમબર્ગિશ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "લાઓથિયન"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "લાતવિયન"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "લિંગાલા"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "લિથુનિયન"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "લુઈયા"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "લ્યુઓ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "લ્યૂબા કટાંગા"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "વાઇ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "વિયેતનામીસ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "વુન્જો"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "વેલ્શ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "શમ્બાલા"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "શેરોકી"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "શોના"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "સમ્બુરુ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "સરળીકૃત ચાઇનીઝ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "સર્બિયન"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "સાંગુ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "સાંગો"
+ },
+ "si": {
+ "code": "si",
+ "name": "સિંહાલી"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "સેના"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "સેન્ટ્રલ ઍટ્લસ તામાઝિગ્ટ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "સોગા"
+ },
+ "so": {
+ "code": "so",
+ "name": "સોમાલી"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "સ્કોટ્સ ગેલિક"
+ },
+ "es": {
+ "code": "es",
+ "name": "સ્પેનિશ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "સ્લોવૅક"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "સ્લોવેનિયન"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "સ્વાહિલી"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "સ્વિસ જર્મન"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "સ્વિસ ફ્રેંચ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "સ્વિસ હાય જર્મન"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "સ્વીડિશ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "હંગેરિયન"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "હિન્દી"
+ },
+ "he": {
+ "code": "he",
+ "name": "હીબ્રુ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "હૌસા"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/guz.json b/library/intl/resources/language/guz.json
new file mode 100644
index 000000000..ad2a4f072
--- /dev/null
+++ b/library/intl/resources/language/guz.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Ekegusii"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ha.json b/library/intl/resources/language/ha.json
new file mode 100644
index 000000000..3d16f3254
--- /dev/null
+++ b/library/intl/resources/language/ha.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afirkanci"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeniyanci"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijanci"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Bagalike"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Basulabe"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Basulake"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusanci"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosniyanci"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaranci"
+ },
+ "br": {
+ "code": "br",
+ "name": "Buretananci"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmanci"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Dan Ailan"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Dan Filifin"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Dan Masedoniya"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Dan\/ʼYar Kabilar Bas"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Dan\/ʼYar Kabilar Kannada"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Dʼan\/ʼYar Kabilar Albaniya"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Dʼan\/ʼYar Kabilar Andalus"
+ },
+ "te": {
+ "code": "te",
+ "name": "Dʼan\/ʼYar Kabilar Telug"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Faransanci"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Fotigis (Burazil)"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Girkanci"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Harshen Biyetinam"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Harshen Cak"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Harshen Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Harshen Hungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Harshen Indunusiya"
+ },
+ "km": {
+ "code": "km",
+ "name": "Harshen Kimar"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Harshen Koreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Harshen Malai"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Harshen Maltis"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Harshen Polan"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Harshen Portugal"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Harshen Sin"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Harshen Suwahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Harshen Suwedan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Harshen Turkiyya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Harshen Urdu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Harshen Yukuren"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Harshen Zulu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holanci"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ispaniyanci"
+ },
+ "et": {
+ "code": "et",
+ "name": "Istoniyanci"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiyanci"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jamusanci"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japananci"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Jojiyanci"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Kabilar Maleyalam"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Kabilar Welsh"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kataloniyanci"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizanci"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kuroshiyan"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Kʼabilan Firsi"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Kʼabilan Marathi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Kʼabilan Scots Gaelic"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laothian"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Larabci"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latbiyanci"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituweniyanci"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriyanci"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Parisanci"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashtanci"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rashanci"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaniyanci"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sabiyan"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhalanci"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigriyanci"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Turanci"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Ugiranci"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "he": {
+ "code": "he",
+ "name": "Yahudanci"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yarbanci"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Yaren Kasar Norway"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Yaren Kasar Portugal"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Yaren mutanen Finland"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yaren mutanen Iceland"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/he.json b/library/intl/resources/language/he.json
new file mode 100644
index 000000000..c6769757f
--- /dev/null
+++ b/library/intl/resources/language/he.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "אהיים"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "אווה"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "אוונדו"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "אוזבקית"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "אויגהור"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "אוקראינית"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "אורדו"
+ },
+ "or": {
+ "code": "or",
+ "name": "אוריה"
+ },
+ "az": {
+ "code": "az",
+ "name": "אזרית"
+ },
+ "it": {
+ "code": "it",
+ "name": "איטלקית"
+ },
+ "id": {
+ "code": "id",
+ "name": "אינדונזית"
+ },
+ "is": {
+ "code": "is",
+ "name": "איסלנדית"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "אירית"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "אלבנית"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "אמבו"
+ },
+ "am": {
+ "code": "am",
+ "name": "אמהרית"
+ },
+ "en": {
+ "code": "en",
+ "name": "אנגלית"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "אנגלית אוסטרלית"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "אנגלית אמריקאית"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "אנגלית בריטית"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "אנגלית קנדית"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "אסו"
+ },
+ "et": {
+ "code": "et",
+ "name": "אסטונית"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "אסטורית"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "אספרנטו"
+ },
+ "af": {
+ "code": "af",
+ "name": "אפריקאנס"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "אקאן"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ארמנית"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "באפיה"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "בודו"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "בולגרית"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "בוסנית"
+ },
+ "my": {
+ "code": "my",
+ "name": "בורמזית"
+ },
+ "be": {
+ "code": "be",
+ "name": "בלארוסית"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "במבארה"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "בנגלית"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "בנה"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "בסאא"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "בסקית"
+ },
+ "br": {
+ "code": "br",
+ "name": "ברטונית"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "גאורגית"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "גאלית סקוטית"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "גאנדה"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "גוג׳ראטית"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "גוסי"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "גליציאנית"
+ },
+ "de": {
+ "code": "de",
+ "name": "גרמנית"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "גרמנית אוסטרית"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "גרמנית שוויצרית"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "גרמנית שוויצרית (גבוהה)"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "דזונקה"
+ },
+ "da": {
+ "code": "da",
+ "name": "דנית"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "האוסה"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "הולה-פוניי"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "הולנדית"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "הונגרית"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "הינדי"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ואי"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "וואלסר"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "וונג׳ו"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ויאטנמית"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ולשית"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "זארמה"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "זולו"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "טאיטה"
+ },
+ "to": {
+ "code": "to",
+ "name": "טונגן"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "טורקית"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "טיבטית"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "טיגרינאית"
+ },
+ "te": {
+ "code": "te",
+ "name": "טלוגו"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "טמזייט של מרכז מרוקו"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "טמילית"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "טסו"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "טסוואק"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "טצ׳להיט"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "יאנגבן"
+ },
+ "el": {
+ "code": "el",
+ "name": "יוונית"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "יורובה"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "יפנית"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "לאית"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "לאנגי"
+ },
+ "se": {
+ "code": "se",
+ "name": "לאפית צפונית"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "לואו"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "לובה-קטנגה"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "לויה"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "לוקסמבורגית"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "לטבית"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ליטאית"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "לינגלה"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "מאסאית"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "מולדבית"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "מונגולית"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "מונדאנג"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "מוריסיין"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "מלאיאלם"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "מלאית"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "מלגשית"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "מלטית"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "מצ׳אמה"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "מקדונית"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "מקואה-מיטו"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "מקונדה"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "מרו"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "מרטהי"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "נאמה"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "נגומה"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "נואר"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "נורבגית חדשה"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "‏נורבגית ספרותית"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ניאנקולה"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "נפאלית"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "סאנגו"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "סוגה"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "סווהילי קונגולטזית"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "סווהילית"
+ },
+ "so": {
+ "code": "so",
+ "name": "סומלית"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "סורבית גבוהה"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "סורבית נמוכה"
+ },
+ "si": {
+ "code": "si",
+ "name": "סינהלה"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "סינית"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "סינית מסורתית"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "סינית מפושטת"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "סלובנית"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "סלובקית"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "סמבורו"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "סנגו"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "סנה"
+ },
+ "es": {
+ "code": "es",
+ "name": "ספרדית"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ספרדית אירופאית"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ספרדית מקסיקנית"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "סרבית"
+ },
+ "he": {
+ "code": "he",
+ "name": "עברית"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ערבית"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ערבית ספרותית"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "פארואזית"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "פאשטו"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "פולה"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "פולנית"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "פורטוגלית"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "פורטוגלית אירופאית"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "פורטוגלית ברזילאית"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "פיליפינית"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "פינית"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "פלמית"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "פנג׳אבית"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "פריולית"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "פריזית"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "פרסית"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "צ׳יגה"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "צ׳כית"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "צ׳רוקי"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "צפון נדבלה"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "צרפתית"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "צרפתית קנדית"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "צרפתית שוויצרית"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "קאבוורדיאנו"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "קאלאליסוטית"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "קאלנג׳ין"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "קבילה"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "קוואסיו"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "קויראבורו סני"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "קוירה צ׳יני"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "קולוניאן"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "קוריאנית"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "קזחית"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "קטלאנית"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "קיקויו"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "קירגיזית"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "קירונדי"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "קמבה"
+ },
+ "km": {
+ "code": "km",
+ "name": "קמרית"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "קנאדה"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "קרואטית"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "קשמירית"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "רווא"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "רומאנש"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "רומבו"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "רומנית"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "רוסית"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "שוודית"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "שונה"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "שמבאלה"
+ },
+ "th": {
+ "code": "th",
+ "name": "תאית"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "תמזיע׳ת מרוקאית תקנית"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hi.json b/library/intl/resources/language/hi.json
new file mode 100644
index 000000000..9145e2dff
--- /dev/null
+++ b/library/intl/resources/language/hi.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंग्रेज़ी"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकन"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "अग्हेम"
+ },
+ "az": {
+ "code": "az",
+ "name": "अज़रबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ़्रीकी"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अमेरिकी अंग्रेज़ी"
+ },
+ "am": {
+ "code": "am",
+ "name": "अम्हेरी"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अल्बानियाई"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "असु"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "अस्तुरियन"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसलैंडी"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधुनिक मानक अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आर्मेनियाई"
+ },
+ "id": {
+ "code": "id",
+ "name": "इंडोनेशियाई"
+ },
+ "it": {
+ "code": "it",
+ "name": "इतालवी"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "इवोन्डो"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ईवे"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज़्बेक"
+ },
+ "or": {
+ "code": "or",
+ "name": "उड़िया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उत्तरी देबेल"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उर्दू"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ऊपरी सॉर्बियन"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "एम्बु"
+ },
+ "et": {
+ "code": "et",
+ "name": "एस्टोनियाई"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "एस्पेरेंतो"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ऑस्ट्रियाई जर्मन"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ऑस्ट्रेलियाई अंग्रेज़ी"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "कज़ाख़"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "कनाडाई अंग्रेज़ी"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "कनाडाई फ़्रेंच"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कन्नड़"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "कबाइल"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कम्बा"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कलेंजिन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "कश्मीरी"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कांगो स्वाहिली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालान"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबुवेर्दियानु"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकुयू"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किर्गीज़"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चीनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेन्नी"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाई"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "क्रोएशियाई"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "क्वासिओ"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गुजराती"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गुसी"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गैलिशियन"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ग्रीनलैंडिक"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "de": {
+ "code": "de",
+ "name": "जर्मन"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ज़ुलू"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉर्जियाई"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ज़ोन्गखा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोंई"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "झार्मा"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "टासवाक"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोंगन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तमिल"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिग्रीन्या"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिब्बती"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तुर्की"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलुगू"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "तैचेल्हित"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "तैता"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "नगोंबा"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "निचला सॉर्बियन"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नुएर"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "se": {
+ "code": "se",
+ "name": "नॉर्दन सामी"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉर्वेजियाई नॉयनॉर्स्क"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नॉर्वेजियाई बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "न्यानकोल"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पश्चिमी फ़्रिसियाई"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पश्तो"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "पारंपरिक चीनी"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पुर्तगाली"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फ़ारसी"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फ़िनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फ़िलिपीनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फुलाह"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फ़ैरोइज़"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फ्रीयुलीयान"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ़्रेंच"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ़्लेमिश"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बफिआ"
+ },
+ "my": {
+ "code": "my",
+ "name": "बर्मीज़"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बसा"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बाम्बारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बास्क"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बुल्गारियाई"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "be": {
+ "code": "be",
+ "name": "बेलारूसी"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोस्नियाई"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ब्राज़ीली पुर्तगाली"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ब्रिटिश अंग्रेज़ी"
+ },
+ "br": {
+ "code": "br",
+ "name": "ब्रेटन"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोलीयाई"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "मध्य एटलस तमाज़ित"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलय"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरक्कन तामाज़ाइट"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मालागासी"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "माल्टीज़"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मुंडैंग"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरु"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "मैकहैमे"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "मैकोंड"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "मैक्सिकन स्पेनिश"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "मैखुवा-मीट्टो"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मैसिडोनियाई"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरीस्येन"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोलडावियन"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यूक्रेनियाई"
+ },
+ "el": {
+ "code": "el",
+ "name": "यूनानी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "यूरोपीय पुर्तगाली"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "यूरोपीय स्पेनी"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूबा"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रुन्दी"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाई"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमान्श"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोम्बो"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लग्ज़मबर्गी"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लांगि"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लातवियाई"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथुआनियाई"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ल्युईआ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ल्युओ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ल्यूबा-कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "विघुर"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "वियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "वुंजो"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेल्श"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शम्बाला"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "शिगा"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "शेरोकी"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोणा"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलीकृत चीनी"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सर्बियाई"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांगो"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिंहली"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "सैंगु"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सैम्बुरु"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "स्काट्स् गायेलिक्"
+ },
+ "es": {
+ "code": "es",
+ "name": "स्पेनी"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "स्लोवाक"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "स्लोवेनियाई"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "स्वाहिली"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "स्विस उच्च जर्मन"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "स्विस जर्मन"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "स्विस फ़्रेंच"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "स्वीडिश"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगेरियाई"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिब्रू"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हौसा"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hr.json b/library/intl/resources/language/hr.json
new file mode 100644
index 000000000..cf62df56d
--- /dev/null
+++ b/library/intl/resources/language/hr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanski"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "američki engleski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australski engleski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austrijski njemački"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjeloruski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britanski engleski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čeroki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "češki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europski portugalski"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europski španjolski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferojski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornjolužički"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gornjonjemački (švicarski)"
+ },
+ "el": {
+ "code": "el",
+ "name": "grčki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratski"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "se": {
+ "code": "se",
+ "name": "južni sami"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilski"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadski engleski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadski francuski"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadski"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaški"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kelnski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kineski (pojednostavljeni)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kineski (tradicionalni)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiški"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "književni norveški"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoanski swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoski"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvijski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litavski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lužičkosrpski"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalamski"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaški"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "marokanski tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajski"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijski kreolski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksički španjolski"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderni standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemski"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novonorveški"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "njemački"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijski"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžapski"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanš"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunjski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhaleški"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sjeverni ndebele"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovački"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenski"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škotski-galski"
+ },
+ "es": {
+ "code": "es",
+ "name": "španjolski"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedski"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "švicarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "švicarski njemački"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "talijanski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganski"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdski"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbečki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velški"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zapadnofrizijski"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hsb.json b/library/intl/resources/language/hsb.json
new file mode 100644
index 000000000..79753bc2f
--- /dev/null
+++ b/library/intl/resources/language/hsb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaanšćina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemšćina"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanšćina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanšćina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriska jendźelšćina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharšćina"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabšćina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenšćina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturšćina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "awstralska jendźelšćina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "awstriska němčina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdźanšćina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskišćina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běłorušćina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalšćina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bołharšćina"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnišćina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalšćina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonšćina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britiska jendźelšćina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmašćina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čěšćina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinšćina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinšćina (tradicionalna)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinšćina (zjednorjena)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwatšćina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "danšćina"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "delnjoserbšćina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estišćina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europska portugalšćina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europska španišćina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöšćina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinšćina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finšćina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamšćina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francošćina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizišćina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicišćina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandšćina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgišćina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grjekšćina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "gröndlandšćina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejšćina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindišćina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornjoserbšćina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonešćina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iršćina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandšćina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italšćina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanšćina"
+ },
+ "en": {
+ "code": "en",
+ "name": "jendźelšćina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubašćina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylšćina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadiska francošćina"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadiska jendźelšćina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadšćina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdšćina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiršćina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanšćina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachšćina"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeršćina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgišćina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundišćina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoska suahelšćina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejšćina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyra senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laošćina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letišćina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litawšćina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgšćina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "madźaršćina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonšćina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassišćina"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajamšćina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajšćina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltašćina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratišćina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaišćina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauriciska kreolšćina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexiska španišćina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna wysokoarabšćina"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldawšćina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolšćina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "němčina"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalšćina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nižozemšćina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norwegšćina (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norwegšćina (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijšćina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandźabšćina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunšćina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persišćina"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólšćina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalšćina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanšćina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunšćina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rušćina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbišćina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sewjero-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "sewjerosamišćina"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhalšćina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowakšćina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słowjenšćina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somališćina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonašćina"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "šotiska gelšćina"
+ },
+ "es": {
+ "code": "es",
+ "name": "španišćina"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahelšćina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "šwedšćina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šwicarska francošćina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "šwicarska němčina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight (srjedźny Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilšćina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandšćina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetšćina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinšćina"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongašćina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkowšćina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujguršćina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainšćina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdušćina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekšćina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamšćina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walizišćina"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulušćina\""
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hu.json b/library/intl/resources/language/hu.json
new file mode 100644
index 000000000..440e370fc
--- /dev/null
+++ b/library/intl/resources/language/hu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albán"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alsó szorb"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikai angol"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "en": {
+ "code": "en",
+ "name": "angol"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asztúr"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ausztrál angol"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzsáni"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basza"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baszk"
+ },
+ "be": {
+ "code": "be",
+ "name": "belorusz"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengáli"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgár"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnyák"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazíliai portugál"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brit angol"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmai"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "butáni"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cseh"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cseroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "dán"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "egyszerűsített kínai"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "északi ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "északi számi"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "eszperantó"
+ },
+ "et": {
+ "code": "et",
+ "name": "észt"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "európai portugál"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "európai spanyol"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "felső szorb"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feröeri"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippínó"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finn"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francia"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuli"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fríz"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galíciai"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "görög"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "grúz"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudzsarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "guszii"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "hagyományos kínai"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausza"
+ },
+ "he": {
+ "code": "he",
+ "name": "héber"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holland"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvát"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonéz"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ír"
+ },
+ "is": {
+ "code": "is",
+ "name": "izlandi"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japán"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabije"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendzsin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodzsai"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadai angol"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadai francia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kásmíri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalán"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazah"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kínai"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundi"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra-csíni"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojra-szenni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongói szuahéli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreai"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "közép-marokkói tamazigt"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoszi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lengyel"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lett"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litván"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujia"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedón"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "magyar"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-metó"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "maláj"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "málgas"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "máltai"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marokkói tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritiusi kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern szabányos arab"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldvai"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "német"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepáli"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ngumba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvég bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvég nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "it": {
+ "code": "it",
+ "name": "olasz"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "orosz"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "osztrák német"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "örmény"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandzsábi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzsa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugál"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "réto-román"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "román"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skót gael"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "sona"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanyol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanyol (mexikói)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svájci felnémet"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svájci francia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "svájci német"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svéd"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "szamburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "szangó"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "szangu"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "szavák"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "szena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "szerb"
+ },
+ "si": {
+ "code": "si",
+ "name": "szingaléz"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "szlovák"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "szlovén"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "szoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "szomáliai"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "szuahéli"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teszó"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibeti"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "török"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrán"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "üzbég"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesi"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hy.json b/library/intl/resources/language/hy.json
new file mode 100644
index 000000000..df2c2721b
--- /dev/null
+++ b/library/intl/resources/language/hy.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "az": {
+ "code": "az",
+ "name": "ադրբեջաներեն"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ալբաներեն"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "աղեմ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ամերիկյան անգլերեն"
+ },
+ "am": {
+ "code": "am",
+ "name": "ամհարերեն"
+ },
+ "en": {
+ "code": "en",
+ "name": "անգլերեն"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ասու"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ավանդական չինարեն"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ավստրալական անգլերեն"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ավստրիական գերմաներեն"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "արաբերեն"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "արևմտյան ֆրիզերեն"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "աքաներեն"
+ },
+ "af": {
+ "code": "af",
+ "name": "աֆրիկաանս"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "բամբարա"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "բասկերեն"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "բաֆիա"
+ },
+ "be": {
+ "code": "be",
+ "name": "բելառուսերեն"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "բենա"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "բենգալերեն"
+ },
+ "my": {
+ "code": "my",
+ "name": "բիրմայերեն"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "բոդո"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "բոսնիերեն"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "բուլղարերեն"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "բրազիլական պորտուգալերեն"
+ },
+ "br": {
+ "code": "br",
+ "name": "բրետոներեն"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "բրիտանական անգլերեն"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Գաելյան Շոտլանդերեն"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "գալիսերեն"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "գանդա"
+ },
+ "de": {
+ "code": "de",
+ "name": "գերմաներեն"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "գուջարաթի"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "գուսի"
+ },
+ "da": {
+ "code": "da",
+ "name": "դանիերեն"
+ },
+ "he": {
+ "code": "he",
+ "name": "եբրայերեն"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "եվրոպական իսպաներեն"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "եվրոպական պորտուգալերեն"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "զարմա"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "զուլուսերեն"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "էմբու"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "էսպերանտո"
+ },
+ "et": {
+ "code": "et",
+ "name": "էստոներեն"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "էվե"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "թաիթա"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "թամիլերեն"
+ },
+ "th": {
+ "code": "th",
+ "name": "թայերեն"
+ },
+ "te": {
+ "code": "te",
+ "name": "թելուգու"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "թիգրինիա"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "թուրքերեն"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ժամանակակից ստանդարտ արաբերեն"
+ },
+ "id": {
+ "code": "id",
+ "name": "ինդոնեզերեն"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "իռլանդերեն"
+ },
+ "is": {
+ "code": "is",
+ "name": "իսլանդերեն"
+ },
+ "es": {
+ "code": "es",
+ "name": "իսպաներեն"
+ },
+ "it": {
+ "code": "it",
+ "name": "իտալերեն"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "լանգի"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "լաոսերեն"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "լատվիերեն"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "լեհերեն"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "լինգալա"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "լիտվերեն"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "լյուքսեմբուրգերեն"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "լուբա-կատանգա"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "լույա"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "լուո"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "խորվաթերեն"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "կաբիլերեն"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "կալաալիսուտ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "կալենջին"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "կամբա"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "կանադական անգլերեն"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "կանադական ֆրանսերեն"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "կաննադա"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "կատալաներեն"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "կենտրոնատլասյան թամազիխտ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "կիկույու"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "կոյրա չինի"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "կոյրաբորո սեննի"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "կոնգոյի սուահիլի"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "կորեերեն"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "կուբավերդիանու"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "կվասիո"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "հայերեն"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "հաուսա"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "հինդի"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "հյուսիսային նդեբելե"
+ },
+ "se": {
+ "code": "se",
+ "name": "հյուսիսային սամի"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "հոլանդերեն"
+ },
+ "el": {
+ "code": "el",
+ "name": "հունարեն"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "հունգարերեն"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ղազախերեն"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ղրղզերեն"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ճապոներեն"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "մալագասերեն"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "մալայալամ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "մալայերեն"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "մալթերեն"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "մակեդոներեն"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "մակոնդե"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "մաշամե"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "մասաի"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "մարաթի"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "մաքուա-մետտո"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "մերու"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "մեքսիկական իսպաներեն"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "մոլդովերեն"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "մոնղոլերեն"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "մորիսյեն"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "մունդանգ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "յորուբա"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "նամա"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "նգոմբա"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "նեպալերեն"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "նյանկոլե"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "նորվեգերեն բուկմոլ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "նորվեգերեն նյունորսկ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "նուեր"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "շամբալա"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "շերոկի"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "շոնա"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "շվեդերեն"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "շվեյցարական բարձր գերմաներեն"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "շվեյցարական գերմաներեն"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "շվեյցարական ֆրանսերեն"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ուելսերեն"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ուզբեկերեն"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ուկրաիներեն"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ույղուրերեն"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ուրդու"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "չեխերեն"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "չիգա"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "չինարեն"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "պարզեցված չինարեն"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "պարսկերեն"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "պորտուգալերեն"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ջոլա-ֆոնյի"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ջոնգքհա"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ռոմանշերեն"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ռոմբո"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ռումիներեն"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ռունդի"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ռուսերեն"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ռվա"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "սամբուրու"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "սանգո"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "սանգու"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "սենա"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "սերբերեն"
+ },
+ "si": {
+ "code": "si",
+ "name": "սինհալերեն"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "սլովակերեն"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "սլովեներեն"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "սոգա"
+ },
+ "so": {
+ "code": "so",
+ "name": "սոմալիերեն"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "սուահիլի"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ստանդարտ մարոկական թամազիղտ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ստորին սորբիերեն"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "վաի"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "վերին սորբիերեն"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "վիետնամերեն"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "վունջո"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "վրացերեն"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "տաշելհիթ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "տասավաք"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "տեսո"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "տիբեթերեն"
+ },
+ "to": {
+ "code": "to",
+ "name": "տոնգա"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "փենջաբերեն"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "փուշթու"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "քաշմիրերեն"
+ },
+ "km": {
+ "code": "km",
+ "name": "քմերերեն"
+ },
+ "or": {
+ "code": "or",
+ "name": "օրիյա"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ֆարյորերեն"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ֆիլիպիներեն"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ֆիններեն"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ֆլամանդերեն"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ֆրանսերեն"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/id.json b/library/intl/resources/language/id.json
new file mode 100644
index 000000000..7611d98ca
--- /dev/null
+++ b/library/intl/resources/language/id.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharik"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arab Standar Modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astur"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Bahasa Indonesia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bask"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Belanda"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål Norwegia"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burma"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cheska"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "China"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "China (Aksara Sederhana)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "China (Aksara Tradisional)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dansk"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Dialek Kolsch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Esti"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faro"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frisia Barat"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaelik Skotlandia"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaria"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ibrani"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inggris"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Inggris Amerika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Inggris Australia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Inggris Inggris"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Inggris Kanada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irlandia"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islandia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jepang"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jerman"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Jerman Austria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Jerman Swiss"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jerman Tinggi Swiss"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmir"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiz"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroasia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituavi"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luksemburg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Makedonia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Melayu"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavia"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisien"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Utara"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk Norwegia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portugis Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portugis Eropa"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Prancis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Prancis Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Prancis Swiss"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Roman"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumania"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusia"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Utara"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbia Atas"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbia Rendah"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanyol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spanyol Eropa"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spanyol Meksiko"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Suomi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedia"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Maroko Standar"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Maroko Tengah"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "el": {
+ "code": "el",
+ "name": "Yunani"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/is.json b/library/intl/resources/language/is.json
new file mode 100644
index 000000000..4269cc639
--- /dev/null
+++ b/library/intl/resources/language/is.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afríkanska"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharíska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabíska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenska"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astúríska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austurrísk þýska"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "áströlsk enska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafía"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "bandarísk enska"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskneska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalska"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosníska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bódó"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasílísk portúgalska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "bresk enska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretónska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmneska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgarska"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee-mál"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dsongka"
+ },
+ "et": {
+ "code": "et",
+ "name": "eistneska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "enska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantó"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondó"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "evrópsk portúgalska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "evrópsk spænska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippseyska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flæmska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "fríúlska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fúla"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færeyska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galíanska"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgíska"
+ },
+ "el": {
+ "code": "el",
+ "name": "gríska"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "grænhöfðeyska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grænlenska"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gújaratí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hása"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hásorbneska"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindí"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollenska"
+ },
+ "be": {
+ "code": "be",
+ "name": "hvítrússneska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indónesíska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írska"
+ },
+ "is": {
+ "code": "is",
+ "name": "íslenska"
+ },
+ "it": {
+ "code": "it",
+ "name": "ítalska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jórúba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabíle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadísk enska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadísk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasmírska"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalónska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kíga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kíkújú"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kínverska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kínverska (einfölduð)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kínverska (hefðbundin)"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koíraboró-senní"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongó-svahílí"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kóreska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "króatíska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölníska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langí"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laó"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lágsorbneska"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettneska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litháíska"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lúbakatanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "lúó"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lúxemborgíska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedónska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasíska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaíska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltneska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaí"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "masjáme"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "máritíska"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merú"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexíkósk spænska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldóvska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongólska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "norður-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "norðursamíska"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bókmál"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "núer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nýnorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "óría"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastú"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persneska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portúgalska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólska"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "púnjabí"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombó"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rómanska"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rúa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rúmenska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rúndí"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rússneska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "sambúrú"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangó"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangú"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbneska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalíska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sjambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skosk gelíska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slóvakíska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slóvenska"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sóga"
+ },
+ "so": {
+ "code": "so",
+ "name": "sómalska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spænska"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "staðlað marokkóskt tamazight"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "stöðluð nútímaarabíska"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "súlú"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahílí"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svissnesk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svissnesk háþýska"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "svissnesk þýska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sænska"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "taílenska"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taíta"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamílska"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telúgú"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesó"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tékkneska"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tíbeska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tígrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongverska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkneska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungverska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "úígúr"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "úkraínska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "úrdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "úsbekska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaí"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velska"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vesturfrísneska"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "víetnamska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjó"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "de": {
+ "code": "de",
+ "name": "þýska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/it.json b/library/intl/resources/language/it.json
new file mode 100644
index 000000000..eb7c57555
--- /dev/null
+++ b/library/intl/resources/language/it.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanese"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorabo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto tedesco svizzero"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabo"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabo moderno standard"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeno"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaigiano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "basso sorabo"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalese"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaco"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretone"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilo"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capoverdiano"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalano"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ceco"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "chirghiso"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "cinese"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "cinese semplificato"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "cinese tradizionale"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "coloniese"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "congo swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "creolo mauriziano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croato"
+ },
+ "da": {
+ "code": "da",
+ "name": "danese"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraico"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estone"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroese"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "fiammingo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francese canadese"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francese svizzero"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisone occidentale"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelico scozzese"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiziano"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallese"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "giapponese"
+ },
+ "el": {
+ "code": "el",
+ "name": "greco"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiano"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglese"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglese americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglese australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglese britannico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglese canadese"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandese"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandese"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fony"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazako"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettone"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lussemburghese"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedone"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malese"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgascio"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolo"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele del nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalese"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngamambo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegese bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegese nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandese"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiano"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polacco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portoghese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portoghese brasiliano"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portoghese europeo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romancio"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami del nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalese"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovacco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveno"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalo"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnolo"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnolo europeo"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnolo messicano"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedese"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight del Marocco standard"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "de": {
+ "code": "de",
+ "name": "tedesco"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "tedesco austriaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "tedesco svizzero"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrino"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraino"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguro"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungherese"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeco"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ja.json b/library/intl/resources/language/ja.json
new file mode 100644
index 000000000..65ecee180
--- /dev/null
+++ b/library/intl/resources/language/ja.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "is": {
+ "code": "is",
+ "name": "アイスランド語"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "アイルランド語"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "アカン語"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "アゲム語"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "アストゥリアス語"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "アス語"
+ },
+ "az": {
+ "code": "az",
+ "name": "アゼルバイジャン語"
+ },
+ "af": {
+ "code": "af",
+ "name": "アフリカーンス語"
+ },
+ "am": {
+ "code": "am",
+ "name": "アムハラ語"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "アメリカ英語"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "アラビア語"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "アルバニア語"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "アルメニア語"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "イギリス英語"
+ },
+ "it": {
+ "code": "it",
+ "name": "イタリア語"
+ },
+ "id": {
+ "code": "id",
+ "name": "インドネシア語"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ヴァイ語"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ヴァリス語"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ウイグル語"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ウェールズ語"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ウクライナ語"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ウズベク語"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ウルドゥー語"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ヴンジョ語"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "エウェ語"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "エウォンド語"
+ },
+ "et": {
+ "code": "et",
+ "name": "エストニア語"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "エスペラント語"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "エンブ語"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "オーストラリア英語"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "オランダ語"
+ },
+ "or": {
+ "code": "or",
+ "name": "オリヤー語"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "カーボベルデ・クレオール語"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "カザフ語"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "カシミール語"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "カタロニア語"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "カナダ英語"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "カビル語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ガリシア語"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "カレンジン語"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ガンダ語"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "カンナダ語"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "カンバ語"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "キクユ語"
+ },
+ "el": {
+ "code": "el",
+ "name": "ギリシャ語"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "キルギス語"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "グシイ語"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "グジャラート語"
+ },
+ "km": {
+ "code": "km",
+ "name": "クメール語"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "グリーンランド語"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "グルジア語"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "クロアチア語"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "クワシオ語"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "ケルン語"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "コイラ・チーニ語"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "コイラボロ・センニ語"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "コンゴ・スワヒリ語"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ザルマ語"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "サング語"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "サンゴ語"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "サンバー語"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "サンブル語"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ショナ語"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ジョラ=フォニィ語"
+ },
+ "si": {
+ "code": "si",
+ "name": "シンハラ語"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "スイスドイツ語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "スウェーデン語"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ズールー語"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "スコットランド・ゲール語"
+ },
+ "es": {
+ "code": "es",
+ "name": "スペイン語"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "スペイン語(イベリア半島)"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "スロバキア語"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "スロベニア語"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "スワヒリ語"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "セナ語"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "セルビア語"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ソガ語"
+ },
+ "so": {
+ "code": "so",
+ "name": "ソマリ語"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ゾンカ語"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "タイタ語"
+ },
+ "th": {
+ "code": "th",
+ "name": "タイ語"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "タサワク語"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "タシルハイト語"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "タマージク語(モロッコ公用語)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "タミル語"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "チェコ語"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "チェロキー語"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "チガ語"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "チベット語"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ティグリニア語"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "テソ語"
+ },
+ "te": {
+ "code": "te",
+ "name": "テルグ語"
+ },
+ "da": {
+ "code": "da",
+ "name": "デンマーク語"
+ },
+ "de": {
+ "code": "de",
+ "name": "ドイツ語"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "トルコ語"
+ },
+ "to": {
+ "code": "to",
+ "name": "トンガ語"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ナマ語"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ニャンコレ語"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ヌエル語"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ネパール語"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ノルウェー語(ニーノシュク)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ノルウェー語(ブークモール)"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ハウサ語"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "バサ語"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "パシュトゥー語"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "バスク語"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "バフィア語"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ハンガリー語"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "パンジャブ語"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "バンバラ語"
+ },
+ "my": {
+ "code": "my",
+ "name": "ビルマ語"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ヒンディー語"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "フィリピノ語"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "フィンランド語"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "フェロー語"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "フラニ語"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "フランス語"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "フリウリ語"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ブルガリア語"
+ },
+ "br": {
+ "code": "br",
+ "name": "ブルトン語"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "フレミッシュ語"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ベトナム語"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ベナ語"
+ },
+ "he": {
+ "code": "he",
+ "name": "ヘブライ語"
+ },
+ "be": {
+ "code": "be",
+ "name": "ベラルーシ語"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ペルシア語"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ベンガル語"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ポーランド語"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ボスニア語"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ボド語"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ポルトガル語"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ポルトガル語(イベリア半島)"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "マクア・ミート語"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "マケドニア語"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "マコンデ語"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "マサイ語"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "マダガスカル語"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "マチャメ語"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "マラーティー語"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "マラヤーラム語"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "マルタ語"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "マレー語"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ムンダン語"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "メル語"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "モーリシャス・クレオール語"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "モルダビア語"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "モンゴル語"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "ヤンベン語"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ヨルバ語"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ラオ語"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ラトビア語"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ランギ語"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "リトアニア語"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "リンガラ語"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ルーマニア語"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ルオ語"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ルクセンブルク語"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ルバ・カタンガ語"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ルヒヤ語"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ルワ語"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ルンディ語"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ロシア語"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ロマンシュ語"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ロンボ語"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ンゴンバ語"
+ },
+ "en": {
+ "code": "en",
+ "name": "英語"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡体中国語"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓国語"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "現代標準アラビア語"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上ソルビア語"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西フリジア語"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "中央アトラス・タマジクト語"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中国語"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "低ソルビア語"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日本語"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁体中国語"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "標準ドイツ語(スイス)"
+ },
+ "se": {
+ "code": "se",
+ "name": "北サーミ語"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北ンデベレ語"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/jgo.json b/library/intl/resources/language/jgo.json
new file mode 100644
index 000000000..3e8302ae7
--- /dev/null
+++ b/library/intl/resources/language/jgo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Alâbɛ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "en": {
+ "code": "en",
+ "name": "Aŋgɛlúshi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fɛlánci"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ndaꞌa"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "de": {
+ "code": "de",
+ "name": "Njáman"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ŋgɛlɛ̂k"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Shinwâ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/jmc.json b/library/intl/resources/language/jmc.json
new file mode 100644
index 000000000..328450431
--- /dev/null
+++ b/library/intl/resources/language/jmc.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Kimachame"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ka.json b/library/intl/resources/language/ka.json
new file mode 100644
index 000000000..e651e5028
--- /dev/null
+++ b/library/intl/resources/language/ka.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ავსტრალიური ინგლისური"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ავსტრიული გერმანული"
+ },
+ "az": {
+ "code": "az",
+ "name": "აზერბაიჯანული"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "აკანი"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ალბანური"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ამერიკული ინგლისური"
+ },
+ "am": {
+ "code": "am",
+ "name": "ამჰარული"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "არაბული"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ასტურიული"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ასუ"
+ },
+ "af": {
+ "code": "af",
+ "name": "აფრიკაანსი"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "აღემი"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ბამბარა"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ბასა"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ბასკური"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ბაფია"
+ },
+ "be": {
+ "code": "be",
+ "name": "ბელორუსული"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ბენა"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ბენგალური"
+ },
+ "el": {
+ "code": "el",
+ "name": "ბერძნული"
+ },
+ "my": {
+ "code": "my",
+ "name": "ბირმული"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ბოდო"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ბოსნიური"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ბრაზილიური პორტუგალიური"
+ },
+ "br": {
+ "code": "br",
+ "name": "ბრეტონული"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ბრიტანული ინგლისური"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ბულგარული"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "გალისიური"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "გამარტივებული ჩინური"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "განდა"
+ },
+ "de": {
+ "code": "de",
+ "name": "გერმანული"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "გუსიი"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "გუჯარათი"
+ },
+ "da": {
+ "code": "da",
+ "name": "დანიური"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "დასავლეთ გრენლანდიური"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "დასავლეთფრიზიული"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "დიოლა"
+ },
+ "he": {
+ "code": "he",
+ "name": "ებრაული"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ევე"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ევონდო"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ევროპული ესპანური"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ევროპული პორტუგალიური"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ემბუ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ესპანური"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ესპერანტო"
+ },
+ "et": {
+ "code": "et",
+ "name": "ესტონური"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ვაი"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ვიეტნამური"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ვუნჯო"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ზარმა"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ზემოსორბული"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ზულუ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "თანამედროვე სტანდარტული არაბული"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "თიგრინია"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "თურქული"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "იაპონური"
+ },
+ "en": {
+ "code": "en",
+ "name": "ინგლისური"
+ },
+ "id": {
+ "code": "id",
+ "name": "ინდონეზიური"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "იორუბა"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ირლანდიური"
+ },
+ "is": {
+ "code": "is",
+ "name": "ისლანდიური"
+ },
+ "it": {
+ "code": "it",
+ "name": "იტალიური"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "კაბილური"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "კაბუვერდიანუ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "კალენჯინი"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "კამბა"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "კანადა"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "კანადური ინგლისური"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "კანადური ფრანგული"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "კატალანური"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "კვასიო"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "კიკუიუ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "კიმაშამი"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "კოირა-ჩიინი"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "კოირაბორო-სენი"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "კონგოს სუაჰილი"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "კორეული"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ლანგი"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ლაოსური"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ლატვიური"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ლინგალა"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ლიტვური"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ლუბა-კატანგა"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ლუო"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ლუქსემბურგული"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ლუჰია"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "მაკედონური"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "მაკონდე"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "მალაგასიური"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "მალაიალამური"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "მალაიური"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "მალტური"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "მარათჰი"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "მასაი"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "მაქუვა-მეეტო"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "მერუ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "მექსიკური ესპანური"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "მოლდავური"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "მონღოლური"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "მორისიენი"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "მუნდანგი"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ნამა"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ნგომბა"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ნეპალური"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ნიანკოლე"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ნიდერლანდური"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ნორვეგიული ბუკმოლი"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ნორვეგიული ნიუნორსკი"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ნუერი"
+ },
+ "or": {
+ "code": "or",
+ "name": "ორია"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "პენჯაბური"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "პოლონური"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "პორტუგალიური"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "პუშტუ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "რეტორომანული"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "რომბო"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "რუა"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "რუმინული"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "რუნდი"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "რუსული"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "სამბურუ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "სანგო"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "სანგუ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "სენა"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "სერბული"
+ },
+ "si": {
+ "code": "si",
+ "name": "სინჰალური"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "სლოვაკური"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "სლოვენური"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "სოგა"
+ },
+ "so": {
+ "code": "so",
+ "name": "სომალიური"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "სომხური"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "სპარსული"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "სტანდარტული მაროკოული ტამაზიგხტი"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "სუაჰილი"
+ },
+ "th": {
+ "code": "th",
+ "name": "ტაი"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ტაიტა"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ტამილური"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ტასავაქი"
+ },
+ "te": {
+ "code": "te",
+ "name": "ტელუგუ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ტესო"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ტიბეტური"
+ },
+ "to": {
+ "code": "to",
+ "name": "ტონგანური"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ტრადიციული ჩინური"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "უელსური"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "უზბეკური"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "უიღურული"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "უკრაინული"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "უნგრული"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ურდუ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ფარერული"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ფილიპინური"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ფინური"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ფლამანდიური"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ფრანგული"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ფრიულური"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ქართული"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ქაშმირული"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ქვემოსორბული"
+ },
+ "km": {
+ "code": "km",
+ "name": "ქმერული"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ყაზახური"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ყირგიზული"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "შამბალა"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "შვედური"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "შვეიცარიული გერმანული"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "შვეიცარიული ზემოგერმანული"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "შვეიცარიული ფრანგული"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "შილჰა"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "შონა"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "შოტლანდიური გელური"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ჩეროკი"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ჩეხური"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ჩიგა"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ჩინური"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ჩრდილოეთ ნდებელე"
+ },
+ "se": {
+ "code": "se",
+ "name": "ჩრდილოეთ საამური"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ცენტრალური მოროკოს ტამაზიგხტი"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ძონგკხა"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ხორვატული"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ჰაუსა"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ჰინდი"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kab.json b/library/intl/resources/language/kab.json
new file mode 100644
index 000000000..755d88b1a
--- /dev/null
+++ b/library/intl/resources/language/kab.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tabengalit"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tabilarusit"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tabulgarit"
+ },
+ "my": {
+ "code": "my",
+ "name": "Taburmisit"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Tabyiṭnamit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tačikit"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tacinwat, Tamundarint"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Tadučit"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Taɛrabt"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tafarisit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tafransist"
+ },
+ "en": {
+ "code": "en",
+ "name": "Taglizit"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tagrikit"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tahendit"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tahungarit"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tahwasit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tajapunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Takanit"
+ },
+ "km": {
+ "code": "km",
+ "name": "Takemrit"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "Talmant"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tamahrict"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tamalawit"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tandunisit"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tanipalit"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tapulunit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tapunjabit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Tapurtugalit"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Taqbaylit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Tarumanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "Taspenyulit"
+ },
+ "so": {
+ "code": "so",
+ "name": "Taṣumalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taṭalyanit"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Taṭamulit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taṭaylundit"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Taṭurkit"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tayurubit"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Tazulut"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kam.json b/library/intl/resources/language/kam.json
new file mode 100644
index 000000000..430da602b
--- /dev/null
+++ b/library/intl/resources/language/kam.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kikamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kde.json b/library/intl/resources/language/kde.json
new file mode 100644
index 000000000..e41132377
--- /dev/null
+++ b/library/intl/resources/language/kde.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Chakan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Chalabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Chamhali"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Chiajemi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Chibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Chibelalusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Chibulgalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Chibulma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Chichechi"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chichina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Chidyapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Chidyelumani"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Chifalansa"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "el": {
+ "code": "el",
+ "name": "Chigilichi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Chihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Chihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Chihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Chiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Chihungali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Chiingeleza"
+ },
+ "id": {
+ "code": "id",
+ "name": "Chiiongonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Chiitaliano"
+ },
+ "km": {
+ "code": "km",
+ "name": "Chikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Chikolea"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Chileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Chilomania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Chilusi"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Chimakonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Chimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Chinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Chipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Chipunjabi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Chisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Chiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Chitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Chitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Chituluchi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Chiuklania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Chiuldu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Chivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Chiyoluba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Chizulu"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kea.json b/library/intl/resources/language/kea.json
new file mode 100644
index 000000000..a5a2671c5
--- /dev/null
+++ b/library/intl/resources/language/kea.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaner"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanes"
+ },
+ "de": {
+ "code": "de",
+ "name": "alimãu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alimãu austriaku"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alimãu di Suisa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "altu alimãu suisu"
+ },
+ "am": {
+ "code": "am",
+ "name": "amariku"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabi mudernu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arméniu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "auza"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijanu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basku"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanes"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretãu"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarkes"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonka"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraiku"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroes"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinu"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandes"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franses"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franses kanadianu"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franses suisu"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisiu osidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galegu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gales"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "gregu"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "indi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneziu"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingles"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ingles australianu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ingles britanuku"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ingles kanadianu"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingles merkanu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandes"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandes"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japones"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "jorjianu"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanares"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalãu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaxmira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazak"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroata"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kureanu"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lausianu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letãu"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanes"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburges"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaialam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaiu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxi"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltes"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "masedoniu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "matxame"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepales"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ñomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueges bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueges nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandes"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pulaku"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "purtuges"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "purtuges brazileru"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "purtuges europeu"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanxi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumenu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérviu"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singales"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaku"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveniu"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sórbiu altu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sórbiu baxu"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanhol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spanhol europeu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanhol mexikanu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "sperantu"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "et": {
+ "code": "et",
+ "name": "stonianu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli di Kongu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueku"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandes"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganes"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turku"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txeku"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukranianu"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "úngaru"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "xeroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "xiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xines"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "xines simplifikadu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "xines tradisional"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/khq.json b/library/intl/resources/language/khq.json
new file mode 100644
index 000000000..f38afa86d
--- /dev/null
+++ b/library/intl/resources/language/khq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Julu senni"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni, Game here"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra ciini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ki.json b/library/intl/resources/language/ki.json
new file mode 100644
index 000000000..6466bcf24
--- /dev/null
+++ b/library/intl/resources/language/ki.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Gikuyu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Gĩthungũ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kĩarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kĩbaranja"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kĩcaina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kĩcumarĩ"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhĩndĩ"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kĩnjabani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kĩnjeremani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kĩracia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kĩtaliano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kk.json b/library/intl/resources/language/kk.json
new file mode 100644
index 000000000..ea44442f7
--- /dev/null
+++ b/library/intl/resources/language/kk.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "австралиялық ағылшын тілі"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "австриялық неміс тілі"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агхем"
+ },
+ "en": {
+ "code": "en",
+ "name": "ағылшын тілі"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албан"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американдық ағылшын тілі"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхар"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "араб тілі"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армян тілі"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанс"
+ },
+ "az": {
+ "code": "az",
+ "name": "әзірбайжан тілі"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баск"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "батыс фриз"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиа"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларус тілі"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгал тілі"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирман"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо тілі"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгар тілі"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босния тілі"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "бразилиялық португал тілі"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретон тілі"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британиялық ағылшын тілі"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вай"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлий"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгер"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнам"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "гали"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "el": {
+ "code": "el",
+ "name": "грек тілі"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузин тілі"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гусии"
+ },
+ "da": {
+ "code": "da",
+ "name": "дат"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "дәстүрлі қытай тілі"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-кэ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "диола"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "еуропалық португал тілі"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "жапон тілі"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "жеңілдетілген қытай тілі"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "жоғарғы лужица"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ибериялық испан тілі"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонез тілі"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирланд тілі"
+ },
+ "is": {
+ "code": "is",
+ "name": "исланд"
+ },
+ "es": {
+ "code": "es",
+ "name": "испан тілі"
+ },
+ "it": {
+ "code": "it",
+ "name": "итальян тілі"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабил"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиана"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калаалисут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадалық ағылшын тілі"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадалық француз тілі"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталан"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмир тілі"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "кәріс тілі"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квасио"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "кига"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйю"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо сенни"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго суахили тілі"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмер"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "қазақ тілі"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "қазіргі стандартты араб тілі"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "қырғыз тілі"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "қытай тілі"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги тілі"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаос тілі"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латыш тілі"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литва тілі"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухиа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембург"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македон тілі"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа-меетто"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаси"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малай"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайялам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальта"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхи"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "марокколық стандартты тамазигхт"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масай"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мексикалық испан тілі"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдован тілі"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "моңғол тілі"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисиен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "неміс тілі"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "неміс тілінің швейцариялық диалекті"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непал"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нианколе"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "нидерланд тілі"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвегиялық букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвегиялық нинорск"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "or": {
+ "code": "or",
+ "name": "ория"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "орталық атлас тамасагихт тілі"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "орыс тілі"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "өзбек"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "парсы тілі"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенджаб"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "поляк тілі"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португал тілі"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романш"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румын"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "серб тілі"
+ },
+ "si": {
+ "code": "si",
+ "name": "сингал"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словак"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словен"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "солтүстік ндебел"
+ },
+ "se": {
+ "code": "se",
+ "name": "солтүстік сами"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Солтүстік Шотландия"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомали"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахили"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тай"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамил"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибет тілі"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигринья"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонган"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "төменгі лужица тілі"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "түрік"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украин тілі"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ұйғыр тілі"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарер"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппин"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фин"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанд тілі"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француз тілі"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорват"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки тілі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чех тілі"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "швед"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцариялық неміс тілі"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцариялық француз тілі"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "эве"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "эсперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "эстон тілі"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kl.json b/library/intl/resources/language/kl.json
new file mode 100644
index 000000000..ceacc33f0
--- /dev/null
+++ b/library/intl/resources/language/kl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiamiusut"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjaniskisut"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalimiutut"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estlandimiutut"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandimiutut"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franskisut"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraimiutut"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindimiutut"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandimiutut"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiamiutut"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandimiutut"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandimiusut"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiamiutut"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanimiusut"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineserisut"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreamiusut"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letlandimiutut"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauenimiutut"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiskisut"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtomiutut"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiskisut"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polenimiutut"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalimiutut"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "da": {
+ "code": "da",
+ "name": "qallunaatut"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumænimiutut"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisut"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "savalimmiutut"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakimiusut"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanskisut"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenskisut"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahilimiutut"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandimiutut"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjekkiamut"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "en": {
+ "code": "en",
+ "name": "tuluttut"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkiskisut"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyskisut"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainimiusut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdumiutut"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamimiusut"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kln.json b/library/intl/resources/language/kln.json
new file mode 100644
index 000000000..d0b5a0cda
--- /dev/null
+++ b/library/intl/resources/language/kln.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "kutitab Aka"
+ },
+ "am": {
+ "code": "am",
+ "name": "kutitab Amariek"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "kutitab Arabuk"
+ },
+ "be": {
+ "code": "be",
+ "name": "kutitab Belarusa"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "kutitab Bengali"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "kutitab Boa"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "kutitab Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "kutitab Burma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "kutitab Chek"
+ },
+ "de": {
+ "code": "de",
+ "name": "kutitab Chermani"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kutitab China"
+ },
+ "es": {
+ "code": "es",
+ "name": "kutitab Espianik"
+ },
+ "el": {
+ "code": "el",
+ "name": "kutitab Greece"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "kutitab Hangari"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "kutitab Hausa"
+ },
+ "id": {
+ "code": "id",
+ "name": "kutitab Indonesia"
+ },
+ "km": {
+ "code": "km",
+ "name": "kutitab Kher nebo Kwen"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "kutitab Kifaransa"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kutitab Korea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "kutitab Maindiik"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "kutitab Malay"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "kutitab Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "kutitab Persia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "kutitab Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "kutitab Punjab"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "kutitab Romaniek"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "kutitab Russia"
+ },
+ "so": {
+ "code": "so",
+ "name": "kutitab Somaliek"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "kutitab Sweden"
+ },
+ "it": {
+ "code": "it",
+ "name": "kutitab Talianek"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "kutitab Tamil"
+ },
+ "th": {
+ "code": "th",
+ "name": "kutitab Thailand"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "kutitab Turkey"
+ },
+ "en": {
+ "code": "en",
+ "name": "kutitab Uingeresa"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "kutitab Ukraine"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "kutitab Urdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "kutitab Vietnam"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "kutitab Yoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "kutitab Zulu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "kutitap Japan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "kutitap Poland"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/km.json b/library/intl/resources/language/km.json
new file mode 100644
index 000000000..a3c64b503
--- /dev/null
+++ b/library/intl/resources/language/km.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Atlas Tamazight កណ្ដាល"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami ភាគ​ខាង​ជើង"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "កន្នដ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "កាតាឡាន"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "កាស្មៀរ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "កាហ្សាក់ស្តង់់"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "កូរ៉េ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ក្រិច"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ក្រូអាត"
+ },
+ "km": {
+ "code": "km",
+ "name": "ខ្មែរ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "គៀរហ្គីស្តង់"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ចិន"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ចិន​អក្សរ​កាត់"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ចិន​អក្សរ​ពេញ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ឆេក"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ឆេរូគី"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ជប៉ុន"
+ },
+ "da": {
+ "code": "da",
+ "name": "ដាណឺម៉ាក"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "តាមីល"
+ },
+ "to": {
+ "code": "to",
+ "name": "តុងហ្គោ"
+ },
+ "te": {
+ "code": "te",
+ "name": "តេលុគុ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ថៃ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ទីបេ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ទីរិនយា"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ទួរគី"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ន័រវែស នីនូស"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ន័រវែស បុកម៉ាល់"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "នេប៉ាល់"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "បង់ក្លាដែស"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "បាម្បារា"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "បារាំង"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "បាស្កេ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "បាស្តូ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "បឹនជាពិ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ប៊ុលហ្ការី"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "បូស្នី"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ប៉ូឡូញ"
+ },
+ "be": {
+ "code": "be",
+ "name": "បេឡារុស្ស"
+ },
+ "br": {
+ "code": "br",
+ "name": "ប្រីស្តុន"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ផ្លាមីស"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ព័រទុយហ្កាល់"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ព័រទុយហ្គាល់ ប្រេស៊ីល"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ព័រទុយហ្គាល់ អឺរ៉ុប"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ភាសាប៊ូតាន"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ភាសាម៉ុលដាវី"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ភាសាហ្កែលិគ (gd)"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ភឺសៀន"
+ },
+ "my": {
+ "code": "my",
+ "name": "ភូមា"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "មរាធិ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "មលយាល័ម"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ម៉ារ៉ុក"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ម៉ាល់តា"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ម៉ាសេដូនី"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ម៉ាឡាហ្គាស៊ី"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ម៉ាឡេស៊ី"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ម៉ុងហ្គោលី"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "យរូបា"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "រុស្ស៊ី"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "រូន្ឌី"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "រ៉ូម៉ង់"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "រូម៉ានី"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "លីទុយអានី"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "លីនកាឡា"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "លុចហ្សំបួរ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "វៀតណាម"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "វេល"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ស៊ុយអែដ"
+ },
+ "so": {
+ "code": "so",
+ "name": "សូម៉ាលី"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "សូលូ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "សើប"
+ },
+ "si": {
+ "code": "si",
+ "name": "ស្រីលង្កា"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ស្លូវ៉ាគី"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ស្លូវ៉ានី"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ស្វាហ៊ីលី"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ហិណ្ឌូ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ហុងគ្រី"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ហុល្លង់"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ហូសា"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ហ្កុយ៉ារាទី"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ហ្គាលីស្យាន"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ហ្វារូស"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ហ្វីលីពីន"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ហ្វាំងឡង់"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ហ្វ្រីស៊ានខាងលិច"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ហ្សក​ហ្ស៊ី"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ឡាតវីយ៉ា"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ឡាវ"
+ },
+ "en": {
+ "code": "en",
+ "name": "អង់គ្លេស"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "អង់គ្លេស កាណាដា"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "អង់គ្លេស ចក្រភព​អង់គ្លេស"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "អង់គ្លេស អាមេរិក"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "អង់គ្លេស អូស្ត្រាលី"
+ },
+ "am": {
+ "code": "am",
+ "name": "អាមហារីច"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "អារមេនី"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "អារ៉ាប់"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "អារ៉ាប់​ស្តង់ដារ​ទំនើប"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "អាល់បានី"
+ },
+ "de": {
+ "code": "de",
+ "name": "អាល្លឺម៉ង់"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "អាល្លឺម៉ង ស្វីស"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "អាល្លឺម៉ង់ ស្វីស"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "អាល្លឺម៉ង់ អូទ្រីស"
+ },
+ "af": {
+ "code": "af",
+ "name": "អាហ្វ្រីកាអាន"
+ },
+ "az": {
+ "code": "az",
+ "name": "អាហ៊្សែរបែហ្សង់"
+ },
+ "id": {
+ "code": "id",
+ "name": "ឥណ្ឌូណេស៊ី"
+ },
+ "it": {
+ "code": "it",
+ "name": "អ៊ីតាលី"
+ },
+ "he": {
+ "code": "he",
+ "name": "អ៊ីស្រាអែល"
+ },
+ "is": {
+ "code": "is",
+ "name": "អ៊ីស្លង់"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "អ៊ុយក្រែន"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "អ៊ុយហ្គឺរ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "អ៊ូរឌូ"
+ },
+ "or": {
+ "code": "or",
+ "name": "អូរីយ៉ា"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "អ៊ូហ្សបេគីស្តង់"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "អៀរឡង់"
+ },
+ "et": {
+ "code": "et",
+ "name": "អេស្តូនី"
+ },
+ "es": {
+ "code": "es",
+ "name": "អេស្ប៉ាញ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "អេស្ប៉ាញ អឺរ៉ុប"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "អេស្ពេរ៉ាន់តូ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kn.json b/library/intl/resources/language/kn.json
new file mode 100644
index 000000000..d7f52da4e
--- /dev/null
+++ b/library/intl/resources/language/kn.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "am": {
+ "code": "am",
+ "name": "ಅಂಹರಿಕ್"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ಅಕಾನ್"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ಅಘೆಮ್"
+ },
+ "az": {
+ "code": "az",
+ "name": "ಅಜೆರ್ಬೈಜಾನಿ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ಅರೇಬಿಕ್"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ಅರ್ಮೇನಿಯನ್"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ಅಲ್ಬೇನಿಯನ್"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ಅಸು"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್"
+ },
+ "af": {
+ "code": "af",
+ "name": "ಆಫ್ರಿಕಾನ್ಸ್"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ಆಸ್ಟುರಿಯನ್"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್"
+ },
+ "en": {
+ "code": "en",
+ "name": "ಇಂಗ್ಲೀಷ್"
+ },
+ "id": {
+ "code": "id",
+ "name": "ಇಂಡೋನೇಶಿಯನ್"
+ },
+ "it": {
+ "code": "it",
+ "name": "ಇಟಾಲಿಯನ್"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ಇವಾಂಡೋ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ಈವ್"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ಉಕ್ರೈನಿಯನ್"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ಉಜ್ಬೇಕ್"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ಉತ್ತರ ದೆಬೆಲೆ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ಉತ್ತರ ಸಾಮಿ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ಉಯಿಘರ್"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ಉರ್ದು"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ಎಂಬು"
+ },
+ "et": {
+ "code": "et",
+ "name": "ಎಸ್ಟೊನಿಯನ್"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ಎಸ್ಪೆರಾಂಟೊ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ಐರಿಷ್"
+ },
+ "is": {
+ "code": "is",
+ "name": "ಐಸ್ಲಾಂಡಿಕ್"
+ },
+ "or": {
+ "code": "or",
+ "name": "ಒರಿಯಾ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ಕಂಬಾ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ಕಝಕ್"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ಕನ್ನಡ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ಕಬುವೆರ್ಡಿಯನು"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ಕಬೈಲ್"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ಕಲಾಲ್ಲಿಸುಟ್"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ಕಲೆಂಜಿನ್"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ಕಾಂಗೊ ಸ್ವಹಿಲಿ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ಕಾಶ್ಮೀರಿ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ಕಿಕುಯು"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ಕಿರ್ಗಿಜ್"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ಕೆಟಲಾನ್"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ಕೊಯ್ರ ಚೀನಿ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ಕೊರಿಯನ್"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ಕ್ರೊಯೇಶಿಯನ್"
+ },
+ "km": {
+ "code": "km",
+ "name": "ಖಮೇರ್"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ಖ್ವಾಸಿಯೊ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ಗಾಂಡಾ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ಗುಜರಾತಿ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ಗುಸಿ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ಗ್ಯಾಲಿಶಿಯನ್"
+ },
+ "el": {
+ "code": "el",
+ "name": "ಗ್ರೀಕ್"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ಚಿಗಾ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ಚೆರೋಕೀ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ಚೈನೀಸ್"
+ },
+ "de": {
+ "code": "de",
+ "name": "ಜರ್ಮನ್"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ಜರ್ಮಾ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ಜಾಪನೀಸ್"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ಜಾರ್ಜಿಯನ್"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ಜುಲು"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ಜೆಕ್"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ಜೊಲ-ಫೊನ್ಯಿ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ಜೋಂಗ್‌ಖಾ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ಟರ್ಕಿಶ್"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ಟಷೆಲ್‍ಹಿಟ್"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ಟಸವಕ್"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ಟಿಗ್ರಿನ್ಯಾ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ಟಿಬೇಟಿಯನ್"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ಟೆಸೊ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ಟೈಟ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ಟೋಂಗನ್"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ಡಚ್"
+ },
+ "da": {
+ "code": "da",
+ "name": "ಡ್ಯಾನಿಶ್"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ತಮಿಳು"
+ },
+ "te": {
+ "code": "te",
+ "name": "ತೆಲುಗು"
+ },
+ "th": {
+ "code": "th",
+ "name": "ಥಾಯ್"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ನಮ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ನಾರ್ವೆಜಿಯನ್ ನೈನೊಸ್ಕ್"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ನಾರ್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ನೂಯರ್"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ನೇಪಾಳಿ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ನೊಂಬಾ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ನ್ಯಾನ್‌ಕೋಲೆ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ಪಂಜಾಬಿ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ಪರ್ಶಿಯನ್"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ಪಾಷ್ಟೋ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ಪೋರ್ಚುಗೀಸ್"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ಪೋಲಿಶ್"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ಫರೋಸಿ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ಫಿನ್ನಿಶ್"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ಫಿಲಿಪಿನೊ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ಫುಲಾಹ್"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ಫ್ರಿಯುಲಿಯನ್"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ಫ್ರೆಂಚ್"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ಫ್ಲೆಮಿಷ್"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ಬಂಬಾರಾ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ಬಫಿಯ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ಬರ್ಮೀಸ್"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ಬಲ್ಗೇರಿಯನ್"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ಬಸಾ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ಬಾಸ್ಕ್"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ಬೆಂಗಾಲಿ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ಬೆನ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ಬೆಲರೂಸಿಯನ್"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ಬೋಡೊ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ಬೋಸ್ನಿಯನ್"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್"
+ },
+ "br": {
+ "code": "br",
+ "name": "ಬ್ರೆಟನ್"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ಮಂಗೋಲಿಯನ್"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ಮರಾಠಿ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ಮಲಗಾಸಿ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ಮಲಯಾಳಂ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ಮಲಯ್"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ಮಸಾಯ್"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ಮಾಲ್ಟೀಸ್"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ಮುಂಡಂಗ್"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ಮೆರು"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ಮೆಸಿಡೋನಿಯನ್"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ಮೊರಿಸನ್"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ಮೊಲ್ಡೆವಿಯನ್"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ಮ್ಯಕಮೆ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ಮ್ಯಾಕೊಂಡ್"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ಯೊರುಬಾ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ರಷ್ಯನ್"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ರುಂಡಿ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ರುವ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ರೊಂಬೊ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ರೊಮಾನ್ಷ್"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ರೊಮೇನಿಯನ್"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ಲಕ್ಸಂಬರ್ಗ್"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ಲಟ್ವಿಯನ್"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ಲಾಂಗಿ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ಲಾವೋ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ಲಿಂಗಾಲ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ಲಿಥುವೇನಿಯನ್"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ಲುಯಿಯ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ಲುವೋ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ಲೂಬಾ-ಕಟಾಂಗಾ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ಲೋವರ್ ಸೋರ್ಬಿಯನ್"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ವಾಯಿ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ವಿಯೇಟ್ನಾಮೀಸ್"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ವುಂಜೊ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ವೆಲ್ಶ್"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ಶಂಬಲ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ಶೋನಾ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ಸಂಗು"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ಸಂಬುರು"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ಸರಳೀಕೃತ ಚೈನೀಸ್"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ಸರ್ಬಿಯನ್"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ಸಾಂಗೋ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್"
+ },
+ "si": {
+ "code": "si",
+ "name": "ಸಿಂಹಳ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ಸೆನ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ಸೊಗ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ಸೊಮಾಲಿ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್"
+ },
+ "es": {
+ "code": "es",
+ "name": "ಸ್ಪ್ಯಾನಿಷ್"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ಸ್ಲೋವಾಕ್"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ಸ್ಲೋವೇನಿಯನ್"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ಸ್ವಹಿಲಿ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ಸ್ವಿಸ್ ಜರ್ಮನ್"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ಸ್ವಿಸ್ ಫ್ರೆಂಚ್"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ಸ್ವೀಡಿಷ್"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ಹಂಗೇರಿಯನ್"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ಹಿಂದಿ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ಹೀಬ್ರ್ಯೂ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ಹೌಸಾ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ko.json b/library/intl/resources/language/ko.json
new file mode 100644
index 000000000..7539064c1
--- /dev/null
+++ b/library/intl/resources/language/ko.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "간다어"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "갈리시아어"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "고지 독일어 (스위스)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "고지 소르비아어"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "구시어"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "구자라트어"
+ },
+ "el": {
+ "code": "el",
+ "name": "그리스어"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "그린란드어"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "나마어"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "네덜란드어"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "네팔어"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "노르웨이어(니노르스크)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "노르웨이어(보크말)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "누에르어"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "니안콜어"
+ },
+ "da": {
+ "code": "da",
+ "name": "덴마크어"
+ },
+ "de": {
+ "code": "de",
+ "name": "독일어"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "독일어(스위스)"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "라오어"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "라트비아어"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "랑기어"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "러시아어"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "레토로만어"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "롬보어"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "루마니아어"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "루바-카탄가어"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "루야어"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "루오어"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "룩셈부르크어"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "룬디어"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "르와어"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "리투아니아어"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "링갈라어"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "마라티어"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "마사이어"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "마차메어"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "마케도니아어"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "마콘데어"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "마크후와-메토어"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "말라가시어"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "말라얄람어"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "말레이어"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "메루어"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "모리스얀어"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "몰도바어"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "몰타어"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "몽고어"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "문당어"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "바사어"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "바스크어"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "바이어"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "바피아어"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "밤바라어"
+ },
+ "my": {
+ "code": "my",
+ "name": "버마어"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "베나어"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "베트남어"
+ },
+ "be": {
+ "code": "be",
+ "name": "벨라루스어"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "벵골어"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "보도어"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "보스니아어"
+ },
+ "se": {
+ "code": "se",
+ "name": "북부 사미어"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "북부 은데벨레어"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "분조어"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "불가리아어"
+ },
+ "br": {
+ "code": "br",
+ "name": "브르타뉴어"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "산고어"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "삼부루어"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "상구어"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "샴발라어"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "세나어"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "세르비아어"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "소가어"
+ },
+ "so": {
+ "code": "so",
+ "name": "소말리아어"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "쇼나어"
+ },
+ "si": {
+ "code": "si",
+ "name": "스리랑카어"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "스와힐리어"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "스웨덴어"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "스코틀랜드 게일어"
+ },
+ "es": {
+ "code": "es",
+ "name": "스페인어"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "슬로바키아어"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "슬로베니아어"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "아그햄어"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "아랍어"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "아르메니아어"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "아수어"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "아스투리아어"
+ },
+ "is": {
+ "code": "is",
+ "name": "아이슬란드어"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "아일랜드어"
+ },
+ "az": {
+ "code": "az",
+ "name": "아제르바이잔어"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "아칸어"
+ },
+ "af": {
+ "code": "af",
+ "name": "아프리칸스어"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "알바니아어"
+ },
+ "am": {
+ "code": "am",
+ "name": "암하라어"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "양본어"
+ },
+ "et": {
+ "code": "et",
+ "name": "에스토니아어"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "에스페란토어"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "에웨어"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "엠부어"
+ },
+ "en": {
+ "code": "en",
+ "name": "영어"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "영어 (영국식)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "영어 (캐나다)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "영어(호주)"
+ },
+ "or": {
+ "code": "or",
+ "name": "오리야어"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "요루바어"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "우르두어"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "우즈베크어"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "우크라이나어"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "월저어"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "웨일스어"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "위구르어"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "유럽식 스페인어"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "유럽식 포르투갈어"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "응곰바어"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "이원도어"
+ },
+ "it": {
+ "code": "it",
+ "name": "이탈리아어"
+ },
+ "id": {
+ "code": "id",
+ "name": "인도네시아어"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "일본어"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "자르마어"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "저지 소르비아어"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "조지아어"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "졸라 포니어"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "종카어"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "줄루어"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "중국어"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "중국어(간체)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "중국어(번체)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "중앙모로코 타마지트어"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "체로키어"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "체코어"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "치가어"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "카슈미르어"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "카자흐어"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "카탈로니아어"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "칸나다어"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "칼렌진어"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "캄바어"
+ },
+ "km": {
+ "code": "km",
+ "name": "캄보디아어"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "커바일어"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "코이라 친니어"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "코이야보로 세니어"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "콜로그니안어"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "콩고 스와힐리어"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "크로아티아어"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "크리올어"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "크와시오어"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "키르기스어"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "키쿠유어"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "타밀어"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "타사와크어"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "타셸히트어"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "타이타어"
+ },
+ "th": {
+ "code": "th",
+ "name": "태국어"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "터키어"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "테조어"
+ },
+ "te": {
+ "code": "te",
+ "name": "텔루구어"
+ },
+ "to": {
+ "code": "to",
+ "name": "통가어"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "티그리냐어"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "티베트어"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "파슈토어"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "펀잡어"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "페로어"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "페르시아어"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "포르투갈어"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "포르투갈어 (브라질)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "폴란드어"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "표준 모로코 타마제크어"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "풀라어"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "프랑스어"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "프랑스어 (스위스)"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "프랑스어 (캐나다)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "프리우리안어"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "프리지아어"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "플라망어"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "핀란드어"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "필리핀어"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "하우사어"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "한국어"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "헝가리어"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "현대 표준 아랍어"
+ },
+ "he": {
+ "code": "he",
+ "name": "히브리어"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "힌디어"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ks.json b/library/intl/resources/language/ks.json
new file mode 100644
index 000000000..fc8052cc2
--- /dev/null
+++ b/library/intl/resources/language/ks.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیَن اَنٛگریٖزۍ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹرِیَن جٔرمَن"
+ },
+ "is": {
+ "code": "is",
+ "name": "آیِسلینڈِک"
+ },
+ "it": {
+ "code": "it",
+ "name": "اِٹیلیَن"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اُردوٗ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "اَرمینیَن"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "اُزبیک"
+ },
+ "az": {
+ "code": "az",
+ "name": "اَزَربیجانی"
+ },
+ "af": {
+ "code": "af",
+ "name": "اَفریٖکانٛز"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اَکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانِیَن"
+ },
+ "am": {
+ "code": "am",
+ "name": "اَمہاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "اِنڈونیشیا"
+ },
+ "en": {
+ "code": "en",
+ "name": "اَنٛگیٖزۍ"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوٚرِیا"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "اَیرِش"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایٚسپَرینٹو"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ایسٹوٗریَن"
+ },
+ "et": {
+ "code": "et",
+ "name": "ایٚسٹونیَن"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایٖو"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ایٚوونڈو"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسا"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسک"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیٖلی پُتَگیٖز"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "بَرطانوی اَنٛگریٖزۍ"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹَن"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بَمبارا"
+ },
+ "my": {
+ "code": "my",
+ "name": "بٔمیٖز"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بَنٛگٲلۍ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنِیَن"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "بوٚنِم ساربِیَن"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلَروٗشیَن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بینا"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پالِش"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پُرتَگیٖز"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پَشتوٗ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پَنجٲبۍ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تِبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "تُرکِش"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تَمِل"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھاے"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگوٗ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ٹِگرِنیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونٛگا"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپٲنۍ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجِیَن"
+ },
+ "de": {
+ "code": "de",
+ "name": "جٔرمَن"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیٚروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیٚک"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چیٖنی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خَمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ڈَچ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینِش"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رُندی"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "رِوٲجی چیٖنی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روٗسی"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومٲنی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زُلوٗ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "زونٛگکھا"
+ },
+ "es": {
+ "code": "es",
+ "name": "سپینِش"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سٔربِیَن"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکوٹِش گیےلِک"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلووَک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیَن"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سَنگو"
+ },
+ "si": {
+ "code": "si",
+ "name": "سِنہالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواہِلی"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سٕوِس جٔرمَن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سٕوٕس فریٚنچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سٕوِس ہاےجٔرمَن"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومٲلی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویٖڈِش"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "سیٚود چیٖنی"
+ },
+ "se": {
+ "code": "se",
+ "name": "شُمٲلی سَمی"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شُمال ڈَبیل"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرٲنۍ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "فارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فَروس"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "فروٗلِیَن"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فریٚنچ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "فُلاہ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فِلِپیٖنو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "فلیٚمِش"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فِنِش"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کٲشُر"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "کازَخ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "کَبایِل"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کَتلان"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کِرگِز"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروشِیَن"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کِکُیوٗ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "کَلالِسُت"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کَنَڑ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کَنیڈیَن فریٚنچ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریَن"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینَڈِیٲیی اَنٛگریٖزۍ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندا"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گُجرٲتی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گیلِشِیَن"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاو"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "لِبیریَن پُرتَگیٖز"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "لِبیریَن سپینِش"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لِتھوانِیَن"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لَتوِیَن"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لُکھزیمبورگِش"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لِنگالا"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوُبا کَتَنٛگا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لُوو"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مَرٲٹھۍ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "مَساے"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی فرِشیَن"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مَلاگَسی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مَلتیٖس"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مٔلیالَم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مَلَے"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مَنٛگولی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداوِیَن"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "میکَڈونیَن"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ناروییَن بوکمال"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ناروییَن نَے نورسک"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیٚپٲلۍ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نِیَنکول"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ہاوسا"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ہِندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ہَنٛگیریَن"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ہیٚرِم ساربِیَن"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "واے"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "وِیَتنَمیٖز"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویٚلش"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "یوٗ ایٚس اَنٛگریٖزۍ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یورُبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوٗکرینیٲیی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یوٗنٲنی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksb.json b/library/intl/resources/language/ksb.json
new file mode 100644
index 000000000..a9e0fcae3
--- /dev/null
+++ b/library/intl/resources/language/ksb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kialabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhali"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelaausi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kibulma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifalansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiiki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungai"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingeeza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijeumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikolea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kileno"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiomania"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Kishambaa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiuklania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiuldu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoluba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksf.json b/library/intl/resources/language/ksf.json
new file mode 100644
index 000000000..ba988f0f7
--- /dev/null
+++ b/library/intl/resources/language/ksf.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "riakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "riamarik"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "riarab"
+ },
+ "be": {
+ "code": "be",
+ "name": "ribɛlɔrís"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ribɛngáli"
+ },
+ "my": {
+ "code": "my",
+ "name": "ribirmán"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ribulgarí"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ricɛ́k"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ricinɔá"
+ },
+ "de": {
+ "code": "de",
+ "name": "ridjɛrman"
+ },
+ "el": {
+ "code": "el",
+ "name": "rigrɛ́k"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "riíndí"
+ },
+ "id": {
+ "code": "id",
+ "name": "riindonɛsí"
+ },
+ "en": {
+ "code": "en",
+ "name": "riingɛrís"
+ },
+ "it": {
+ "code": "it",
+ "name": "riitalyɛ́n"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "rijapɔ́ŋ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "rikaksa"
+ },
+ "km": {
+ "code": "km",
+ "name": "rikmɛr"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "rikɔrɛɛ́"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "rikpa"
+ },
+ "es": {
+ "code": "es",
+ "name": "rikpanyá"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "rimalaí"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "rinepalɛ́"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "riɔlándɛ́"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "riɔngrɔá"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ripɛnjabí"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ripɛrɛsǝ́"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ripɛrsán"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ripɔlɔ́n"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ripɔrtugɛ́"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rirís"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rirɔmán"
+ },
+ "so": {
+ "code": "so",
+ "name": "risomalí"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "riswɛ́dǝ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ritaí"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ritamúl"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "riturk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "riukrɛ́n"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "riurdú"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "riwyɛtnám"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "riyúuba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "rizúlu"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksh.json b/library/intl/resources/language/ksh.json
new file mode 100644
index 000000000..fa10ab9a9
--- /dev/null
+++ b/library/intl/resources/language/ksh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akahnesch"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaanesch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amärrekaanesch Änglesch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhahresch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Änglesch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Änglesch uß Außtraalije"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Änglesch uß Jruußbrettannije"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Änglesch uß Kanada"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arahbesch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeenesch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asserbaidschahnesch"
+ },
+ "et": {
+ "code": "et",
+ "name": "Äßnesch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astuhrejahnesch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bängjaalesch"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskesch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bettohnesch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Boddo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boßnesch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilljaanesch Pochtojesesch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulljaaresch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmessesch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butahnesch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dähnesch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Deutsch uß de Schweijz"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Deutsch uß Ößterich"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "it": {
+ "code": "it",
+ "name": "Etalljänesch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färröeresch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnesch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämesch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franzüüsesch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Franzüüsesch uß de Schweijz"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Franzüüsesch uß Kanada"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gutscharatesch"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haußa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräjesch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holländesch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ieresch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesesch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ißländesch"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Jalliizesch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaanesch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Je’orjesch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Joruuba"
+ },
+ "el": {
+ "code": "el",
+ "name": "Jrihschesch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "K-Rundesch"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kapvärdesch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmieresch"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kassakesch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kattalahnesch"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirjihsesch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kirombo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korrejaanesch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Krowatesch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lahootesch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lättesch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingjalla"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Littouesch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemborjesch"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyjanesch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madajaßkesch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Mallaijesch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Mallajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malteesesch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marraatesch"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedoonesch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongjolesch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepallessesch"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Neu-Norrweejesch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niddersorbesch"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nood-Lappländesch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nood-Ndebele"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norrweejesch Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panschaabesch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pärsesch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtuunesch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Pochtojesesch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Pochtojesesch uß Pochtojall"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pollnesch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromaanesch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänesch"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rußßesch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sangjo"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Särbesch"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Schi-Schona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Schineesesch"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Schineesesch en de eijfacher Schreff"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Schineesesch en de tradizjonälle Schreff"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpahnesch"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Schpahnesch en Mäxikoh"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Schpahnesch en Schpahneje"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Schtandatt Arahbesch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schweedesch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwitzerdütsch"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singjaleesesch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaalesch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ẞlovakesch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ẞloveenesch"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheelesch"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Suulu"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tailändesch"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiilesch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telluuju"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibehtesch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tijrenejaanesch"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongjaanesch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Törkesch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschäschesch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uj’juuersch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainesch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Unjarresch"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu\/Hindi"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ußbeekesch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vijätnammeesesch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wallihsesch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walserdütsch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Wäßfriisesch"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wiißrußesch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ky.json b/library/intl/resources/language/ky.json
new file mode 100644
index 000000000..6a22c40cf
--- /dev/null
+++ b/library/intl/resources/language/ky.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агемче"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайжанча"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "азыркы адабий араб тилинде"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "аканча"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанча"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарча"
+ },
+ "en": {
+ "code": "en",
+ "name": "англисче"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабча"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армянча"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асуча"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанча"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбарада"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бангладешче"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскча"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "батыш фризче"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафияча"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларусча"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бенача"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бододо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарча"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "борбордук Атлас тамазитче"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боснийче"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретончо"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурмача"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вайиче"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунжочо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнамча"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галисияча"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "гандача"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландча"
+ },
+ "el": {
+ "code": "el",
+ "name": "грекче"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинче"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гужаратча"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гусиче"
+ },
+ "da": {
+ "code": "da",
+ "name": "датча"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "жогорку немисче (Швейцария)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "жогорку сорбианча"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "жола-фониче"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "жонгуча"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "замрача"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуча"
+ },
+ "he": {
+ "code": "he",
+ "name": "ивритте"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезче"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландча"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландча"
+ },
+ "es": {
+ "code": "es",
+ "name": "испанча"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "испанча (Европа)"
+ },
+ "it": {
+ "code": "it",
+ "name": "италиянча"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йорубача"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиче"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабылча"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казакча"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калаалисутча"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжиче"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камбача"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннадача"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталанча"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирче"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квасиочо"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйиче"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерче"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиниче"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо сенниче"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго суахаличе"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейче"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "кыргызча"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кытайча"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "кытайча (жөнөкөйлөштүрүлгөн)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "кытайча (салттуу)"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "лангиче"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаочо"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышча"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингалача"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовчо"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катангача"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луочо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухияча"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембургча"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мажарча"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македончо"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "макондече"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуача"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагасча"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайаламча"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайча"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтизче"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратиче"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "марокко тамазигт адабий тилинде"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масайча"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачамече"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меруча"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдованча"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "моңголчо"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисианча"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мундангча"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "намача"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомбача"
+ },
+ "de": {
+ "code": "de",
+ "name": "немисче"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "немисче (Швейцария)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалча"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежче (Букмал)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежче (Нинорск)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуерче"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ныйанколчо"
+ },
+ "or": {
+ "code": "or",
+ "name": "орияча"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "орусча"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "өзбекче"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пашточо"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полякча"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалча"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португалча (Европа)"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пунжабиче"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романшча"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбочо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руача"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынча"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рундиче"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуруча"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "сангочо"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангуча"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сенача"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "сербче"
+ },
+ "si": {
+ "code": "si",
+ "name": "сингалача"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словакча"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словенче"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "согача"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомаличе"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахиличе"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таитача"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайча"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилче"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасабакча"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелитче"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугуча"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесочо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетче"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриниача"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонгача"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "төмөнкү сорбианча"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "түндүк ндыбелче"
+ },
+ "se": {
+ "code": "se",
+ "name": "түндүк самиче"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "түркчө"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уелшче"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурча"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинче"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урдуча"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фароэче"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "фарсыча"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипино"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финче"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандча"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французча"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хаусача"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хиндиче"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватча"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокиче"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чехче"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чигача"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамабалача"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведче"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шонача"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "эбече"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "эмбуча"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "эсперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "эстончо"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "япончо"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lag.json b/library/intl/resources/language/lag.json
new file mode 100644
index 000000000..f2a85327c
--- /dev/null
+++ b/library/intl/resources/language/lag.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kɨajéemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kɨakáani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kɨaráabu"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kɨbáama"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kɨbangála"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kɨberalúusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kɨbulugária"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kɨchéeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kɨchíina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kɨfaráansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kɨgiríki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kɨhaúusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kɨhíindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kɨhispánia"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kɨholáanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kɨhungári"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kɨɨndonésia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kɨɨngeréesa"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kɨjapáani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kɨjerʉmáani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kɨkambódia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kɨkoréa"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Kɨlaangi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kɨmelésia"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kɨmʉháari"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kɨnepáali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kɨpólandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kɨpúnjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kɨréeno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kɨromanía"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kɨrúusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kɨsómáali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kɨswíidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kɨtáilandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kɨtaliáano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kɨtamíili"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kɨturúuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kɨukɨranía"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kɨúrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kɨvietináamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kɨyorúuba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kɨzúulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lb.json b/library/intl/resources/language/lb.json
new file mode 100644
index 000000000..9a77664ca
--- /dev/null
+++ b/library/intl/resources/language/lb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanesch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanescht Englesch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharesch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabesch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenesch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanesch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianesch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu (Tanzania)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australescht Englesch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprooch"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprooch"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskesch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalesch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanesch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanesch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnesch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianescht Portugisesch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonesch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britescht Englesch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaresch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesesch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesesch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesesch (vereinfacht)"
+ },
+ "de": {
+ "code": "de",
+ "name": "Däitsch"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänesch"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Éisträichescht Däitsch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englesch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnesch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäescht Portugisesch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäescht Spuenesch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe-Sprooch"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöesch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnesch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämesch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franséisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulesch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizesch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda-Sprooch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgesch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griichesch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönlännesch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii-Sprooch"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräesch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollännesch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesesch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iresch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islännesch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienesch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanesch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylesch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanesch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadescht Englesch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadescht Franséisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachesch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmiresch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanesch"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Kiembu"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu-Sprooch"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisesch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanesch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatesch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotesch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettesch"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lëtzebuergesch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauesch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprooch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagassi-Sprooch"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiesch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesesch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Marokkanescht Standard-Tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprooch"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonesch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru-Sprooch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Mëttlert-Atlas-Tamazight"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanescht Spuenesch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernt Héicharabesch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawesch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolesch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesesch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niddersorbesch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprooch"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nordsamesch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegesch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegesch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandschabesch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persesch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnesch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugisesch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanesch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänesch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprooch"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russesch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottescht Gällesch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwäizer Franséisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwäizer Héichdäitsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwäizerdäitsch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedesch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbesch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesesch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakesch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenesch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spuenesch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilesch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailännesch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetesch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tierkesch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaesch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechesch"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Uewersorbesch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uiguresch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainesch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungaresch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekesch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai-Sprooch"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesesch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wäissrussesch"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisesch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walliserdäitsch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesesch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lg.json b/library/intl/resources/language/lg.json
new file mode 100644
index 000000000..3c5189d76
--- /dev/null
+++ b/library/intl/resources/language/lg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Lu-akaani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Lu-amhariki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Lu-urudu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "my": {
+ "code": "my",
+ "name": "Lubbama"
+ },
+ "be": {
+ "code": "be",
+ "name": "Lubelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Lubengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Lubulugariya"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Lucayina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Luceeke"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ludaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Lufalansa"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Luganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Lugereeki\/Luyonaani"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Luhangare"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Luhawuza"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Luhindu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Luholandi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Lujapani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Lukme"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Lukoreya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lulasa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Lulomaniya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Lumalayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Lunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lungereza"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Luperusi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Lupolandi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Lupotugiizi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Lupunjabi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Lusipanya"
+ },
+ "so": {
+ "code": "so",
+ "name": "Lusomaliya"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Luswideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Lutake"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Lutamiiru"
+ },
+ "th": {
+ "code": "th",
+ "name": "Luttaayi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Luvyetinaamu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Luwarabu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Luyindonezya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Luyitale"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Luyoruba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Luyukurayine"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Luzzulu"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ln.json b/library/intl/resources/language/ln.json
new file mode 100644
index 000000000..78f1646e3
--- /dev/null
+++ b/library/intl/resources/language/ln.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikansi"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "kiluba"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "kiswahíli"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "lialabo"
+ },
+ "de": {
+ "code": "de",
+ "name": "lialemá"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "lialémani ya Otrish"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "lialémani ya Swisi"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "lialemaniki"
+ },
+ "am": {
+ "code": "am",
+ "name": "liamariki"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "libengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "libiligali"
+ },
+ "my": {
+ "code": "my",
+ "name": "libilimá"
+ },
+ "be": {
+ "code": "be",
+ "name": "libyelorisí"
+ },
+ "he": {
+ "code": "he",
+ "name": "liébeleo"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "lifalamá"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "lifalansɛ́"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "lifalansɛ́ ya Kanadá"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "lifalansɛ́ ya Swisi"
+ },
+ "el": {
+ "code": "el",
+ "name": "ligeleki"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "lihindi"
+ },
+ "km": {
+ "code": "km",
+ "name": "likambodza"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "likoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "likrɛni"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "limalezi"
+ },
+ "id": {
+ "code": "id",
+ "name": "lindonezi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "linepalɛ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingála"
+ },
+ "en": {
+ "code": "en",
+ "name": "lingɛlɛ́sa"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "lingɛlɛ́sa ya Ingɛlɛ́tɛlɛ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "lingɛlɛ́sa ya Kanadá"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "liongili"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "lipelésanɛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "lipendzabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lipolonɛ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "lipulutugɛ́si"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "lipulutugɛ́si ya Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "lipulutugɛ́si ya Erópa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "lirisí"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "liromani"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "liromansh"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "lisinwa"
+ },
+ "es": {
+ "code": "es",
+ "name": "lisipanye"
+ },
+ "so": {
+ "code": "so",
+ "name": "lisomali"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "lispanyoli ya Erópa"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "lisuwedɛ"
+ },
+ "it": {
+ "code": "it",
+ "name": "litaliano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "litamuli"
+ },
+ "th": {
+ "code": "th",
+ "name": "litaye"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "litiliki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "litshekɛ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "liurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "liviyetinámi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "lizapɔ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lo.json b/library/intl/resources/language/lo.json
new file mode 100644
index 000000000..3c4b395e1
--- /dev/null
+++ b/library/intl/resources/language/lo.json
@@ -0,0 +1,738 @@
+{
+ "el": {
+ "code": "el",
+ "name": "ກຣີກ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ກຣີນແລນລິດ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ກວາຊີໂອ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ກາໄບລ໌"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ກາມບາ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ກາລິຊຽນ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ກູຈາຣາຕິ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ກູຊິ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ເກຍກີສ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ເກົາຫລີ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ແກນດາ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ຂະເໝນ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ຄອງໂກ ຊວາຮີລິ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ຄອຍຣາ ຊິນີ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ຄັດຊະມີຣີ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ຄັນນາດາ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ຄາຊັກ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ຄາຕາລານ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ຄາເລັນຈິນ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ຄາເວີເດຍນູ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ຄິຄູຢຸ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ເຄເນດຽນ ຝຣັ່ງ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ໂຄຍຣາໂບໂຣ ເຊນນິ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ໂຄຣເອທຽນ"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "ໂຄລອກນຽນ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ງອມບາ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ຈໍຈຽນ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ຈີນ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ຈີນແບບດັ້ງເດີມ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ຈີນແບບຮຽບງ່າຍ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ໂຈລາ-ຟອນຢີ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ສະກັອດເກລິກ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ສະແປນນິຊ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ສະໂລເວນຽນ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ສະໂລແວັກ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ສະວິສ ເຈີແມນ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ສະວິສ ຝຣັ່ງ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ສະວິສ ໄຮ ເຈີແມນ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ສະວີດິຊ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ສິນຫາລາ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ຊໍບຽນຕໍ່ກວ່າ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ຊວາຮີລິ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ຊານກູ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ຊາມາ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ຊາມິເໜືອ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ຊຳບາລ້າ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ຊຳບູຣູ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ຊີກາ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ຊີນາ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ຊີໂຣກີ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ຊຸບເປີຊໍບຽນ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ຊູລູ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ເຊກ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ເຊີບຽນ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ແຊງໂກ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ໂຊກາ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ໂຊນາ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ໂຊມາລີ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ຍີ່ປຸ່ນ"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "ແຍງເບນ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ດັຊ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ດີຊອງຄາ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ແດນິຊ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ຕາຊາວັກ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ຕິກຣິນຢາ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ເຕໂຊ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ເຕລູກູ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ໄຕຕາ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ທອງການ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ທາເຊວຫິດ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ທາມິລ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ທິເບທັນ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ເທີຄິຊ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ໄທ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ນໍເວຈຽນ ນີນອກ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ນໍເວຈຽນ ບັອກມອລ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ນານຄອນ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ນາມາ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ເນປາລີ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ເນີ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ບຣາຊິລຽນ ປໍຕູກີສ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ບອສນຽນ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ບັງກາຣຽນ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ບັສກີ"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ບາຊາ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ບາເຟຍ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ບາມບາຣາ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ບີນາ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ເບຣຕັນ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ເບລາຣັສຊຽນ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ເບັງກາລີ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ໂບດູ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ປໍຕູກີສ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ປັນຈາບີ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ປາສໂຕ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ເປີຊຽນ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ໂປລິຊ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ຝຣັ່ງ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ຟຣີລຽນ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ຟລີມິຊ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ຟາໂຣສ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ຟິນນິຊ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ຟີລິປີໂນ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ຟູລາ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ມໍຣິສເຢນ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ມອງໂກເລຍ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ມອລທີສ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ມັນດັງ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ມາຄອນເດ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ມາຄູວາ-ມີດໂຕ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ມາແຊມ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ມາໄຊ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ມາຣາທີ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ມາລາກາສຊີ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ມາເລ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ມາເລອາລຳ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ມຽນມາ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ເມຣູ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ເມັກຊິກັນ ສະແປນນິຊ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ແມັກເຊໂດນຽນ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ໂມດາວຽນ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ຢູເຄຣນຽນ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ຢູໂຣປຽນ ສະແປນນິຊ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ຢູໂຣປຽນ ປໍຕູກີສ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ເຢຍລະມັນ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ໂຢຣູບາ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ຣັດຊຽນ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ຣຸນດິ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ຣົມໂບ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ໂຣແມນ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ໂຣແມນຽນ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ລັກເຊມບວກກິຊ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ລັດວຽນ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ລາວ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ລິງກາລາ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ລິທົວນຽນ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ລູໄຍ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ລູບາ-ຄາຕັງກາ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ລົວ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ແລນກິ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ວັນໂຈ"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ວາເຊີ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ເວສເທີນ ຟຣິຊຽນ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ເວວ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ໄວ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ຫວຽດນາມ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ອອສຕຣຽນ ເຈີແມນ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ອັງກິດ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ອັງກິດ (ເຄເນດຽນ)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ອັງກິດ (ບຣິດທິຊ)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ອັງກິດ (ອອສເຕຣລຽນ)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ອັງກິດ (ອາເມລິກັນ)"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ອັສຕູຮຽນ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ອັດລາສ ທາມາຊີກ ກາງ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ອາການ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ອາຊູ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ອາເຊີໄບຈານິ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ອານບານຽນ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ອາຟຣິການ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ອາເມນຽນ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ອາຣວາ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ອາຣັບ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ອາຣາບິກມາດຕະຖານສະໄໝໃໝ່"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ອາເຮັມ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ອຳຮາຣິກ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ອິຕາລຽນ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ອິນໂດເນຊຽນ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ອິວາ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ອີວອນດູ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ອຸສເບກ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ອຸຍເຄີ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ອູຣະດູ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ເອສໂຕນຽນ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ເອສເປີຣັນໂຕ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ເອັນເດເບເລເໜືອ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ເອັມບູ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ໂອຣິຢາ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ໄອສແລນດິກ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ໄອຣິສ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ຮັງກາຣຽນ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ຮິນດິ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ຮີບຣິວ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ເຮົາຊາ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lt.json b/library/intl/resources/language/lt.json
new file mode 100644
index 000000000..3cc9d41d1
--- /dev/null
+++ b/library/intl/resources/language/lt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanų"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemų"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "airių"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanų"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanų"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharų"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglų"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabų"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armėnų"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturianų"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "aukštutinių sorbų"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australijos anglų"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrijos vokiečių"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidžaniečių"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafų"
+ },
+ "be": {
+ "code": "be",
+ "name": "baltarusių"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarų"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskų"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basų"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalų"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benų"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmiečių"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnių"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "botijų"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilijos portugalų"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonų"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarų"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Centrinio Maroko tamazitų"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čekų"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čerokių"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "čigų"
+ },
+ "da": {
+ "code": "da",
+ "name": "danų"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Didžiosios Britanijos anglų"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "džiola-foni"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estų"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europos ispanų"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europos portugalų"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evių"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farerų"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipiniečių"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandų"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frulan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulahų"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisų"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "graikų"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzinų"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratų"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausų"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrajų"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneziečių"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandų"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispanų"
+ },
+ "it": {
+ "code": "it",
+ "name": "italų"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangbenų"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonų"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubų"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Jungtinių Valstijų anglų"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinų"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanados anglų"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanados prancūzų"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanadų"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmyrų"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonų"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachų"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kebailų"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kembų"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmerų"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujų"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinų"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizų"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra čini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolognų"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo suahilių"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korėjiečių"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatų"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasių"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiečių"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvių"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lenkų"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lietuvių"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "liuksemburgiečių"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mačamų"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonų"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondų"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-maeto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasų"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalių"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiečių"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltiečių"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratų"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajų"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikos ispanų"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merų"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavų"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolų"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisijų"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangų"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "naujoji norvegų"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaliečių"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ngalų"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombų"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "niankolų"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norvegijos rašytinė – būkmolų"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerų"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandų"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijų"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendžabų"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persų"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalų"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "prancūzų"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštūnų"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanų"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunų"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusų"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "sambūrų"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangų"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senų"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbų"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalų"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakų"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovėnų"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogų"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliečių"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standartinė Maroko tamazigtų"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahilių"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomių"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "supaprastintoji kinų"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambalų"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "šiaurės ndebelų"
+ },
+ "se": {
+ "code": "se",
+ "name": "šiaurės samių"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "šiuolaikinė standartinė arabų"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škotų (gėlų)"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonų"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedų"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Šveicarijos aukštutinė vokiečių"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Šveicarijos prancūzų"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Šveicarijos vokiečių"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhitų"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitų"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajų"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilų"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavakų"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugų"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetiečių"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrajų"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganų"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradicinė kinų"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkų"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigūrų"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainiečių"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdų"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekų"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vakarų fryzų"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "valserų"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valų"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "vengrų"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamiečių"
+ },
+ "de": {
+ "code": "de",
+ "name": "vokiečių"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmų"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulų"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Žaliojo Kyšulio kreolų"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "žemutinių sorbų"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lu.json b/library/intl/resources/language/lu.json
new file mode 100644
index 000000000..6f1aca5d3
--- /dev/null
+++ b/library/intl/resources/language/lu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabi"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulegari"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Giliki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongili"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Liakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Liamhariki"
+ },
+ "es": {
+ "code": "es",
+ "name": "Lihispania"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Likoreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Limalezia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Lindonezia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lingelesa"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Lipunjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lirisi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Liromani"
+ },
+ "so": {
+ "code": "so",
+ "name": "Lisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Lisuwidi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Litali"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Liviyetinamu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Liyapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Lizelumani"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Mfwàlànsa"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Mpepajemi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Mpoloni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Mputulugɛsi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Mtamuili"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Nkrani"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ntailandi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ntuluki"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Nyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Nzulu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandi"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "shinɛ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsheki"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Tshiluba"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/luo.json b/library/intl/resources/language/luo.json
new file mode 100644
index 000000000..e4536c824
--- /dev/null
+++ b/library/intl/resources/language/luo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Dholuo"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/luy.json b/library/intl/resources/language/luy.json
new file mode 100644
index 000000000..576f6dedc
--- /dev/null
+++ b/library/intl/resources/language/luy.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Luhindi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luluhia"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lusungu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lv.json b/library/intl/resources/language/lv.json
new file mode 100644
index 000000000..4f1b40829
--- /dev/null
+++ b/library/intl/resources/language/lv.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikandu"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemu"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanu"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albāņu"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharu"
+ },
+ "en": {
+ "code": "en",
+ "name": "angļu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arābu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armēņu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astūriešu"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ASV angļu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "augšsorbu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Austrālijas angļu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrijas vācu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidžāņu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiju"
+ },
+ "be": {
+ "code": "be",
+ "name": "baltkrievu"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambaru"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basku"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengāļu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmiešu"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniešu"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazīlijas portugāļu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoņu"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgāru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Centrālmarokas tamazīts"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čehu"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čiroku"
+ },
+ "da": {
+ "code": "da",
+ "name": "dāņu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fonjī"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongke"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Eiropas portugāļu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Eiropas spāņu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evu"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fēru"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipīniešu"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flāmu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franču"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friūlu"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulu"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisiešu"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gēlu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandiešu"
+ },
+ "el": {
+ "code": "el",
+ "name": "grieķu"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzīnu"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratu"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandiešu"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvātu"
+ },
+ "et": {
+ "code": "et",
+ "name": "igauņu"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonēziešu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "īru"
+ },
+ "is": {
+ "code": "is",
+ "name": "īslandiešu"
+ },
+ "it": {
+ "code": "it",
+ "name": "itāļu"
+ },
+ "he": {
+ "code": "he",
+ "name": "ivrits"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "janbaņu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japāņu"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "jaunnorvēģu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilu"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kaboverdiešu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžīnu"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanādas angļu"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanādas franču"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiriešu"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalāņu"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazahu"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeru"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgīzu"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kjembu"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koiraboro senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koiračiinī"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejiešu"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "krievu"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Ķelnes vācu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ķīniešu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ķīniešu tradicionālā"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ķīniešu vienkāršotā"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiešu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviešu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lejassorbu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Lielbritānijas angļu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lietuviešu"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lubakatanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhju"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburgiešu"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mačamu"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "maķedoniešu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasu"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiešu"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltiešu"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratu"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaju"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Maurīcijas kreolu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikas spāņu"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldāvu"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoļu"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangu"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "mūsdienu standarta arābu"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepāliešu"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvēģu bukmols"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nueru"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ņankolu"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriju"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiešu"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poļu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugāļu"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštu"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromāņu"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "rietumfrīzu"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruanda"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumāņu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundu"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbu"
+ },
+ "si": {
+ "code": "si",
+ "name": "singāļu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovāku"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovēņu"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogu"
+ },
+ "so": {
+ "code": "so",
+ "name": "somāļu"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "somu"
+ },
+ "es": {
+ "code": "es",
+ "name": "spāņu"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standarta marokāņu berberu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambalu"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "šilhu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Šveices augšvācu"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Šveices franču"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Šveices vācu"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitu"
+ },
+ "th": {
+ "code": "th",
+ "name": "taju"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilu"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavaku"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetiešu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongiešu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turku"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguru"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraiņu"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungāru"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeku"
+ },
+ "de": {
+ "code": "de",
+ "name": "vācu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaju"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Vallisas vācu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velsiešu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vjetnamiešu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vundžo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ziemeļndebelu"
+ },
+ "se": {
+ "code": "se",
+ "name": "ziemeļsāmu"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "zviedru"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mas.json b/library/intl/resources/language/mas.json
new file mode 100644
index 000000000..af04d4ecc
--- /dev/null
+++ b/library/intl/resources/language/mas.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "lnkʉtʉ́k ɔ́ɔ̄ lBengali"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maa"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ faransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ hausa"
+ },
+ "id": {
+ "code": "id",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ Indonesia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ japani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lAkan"
+ },
+ "am": {
+ "code": "am",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lAmhari"
+ },
+ "be": {
+ "code": "be",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lBelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lBulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lBurma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lcheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lchina"
+ },
+ "so": {
+ "code": "so",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lchumari"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lduchi"
+ },
+ "el": {
+ "code": "el",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lgiriki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lhungari"
+ },
+ "de": {
+ "code": "de",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ ljerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lkambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lkorea"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lkrania"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lmarabu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lmoindi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lnepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lpersia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lpoland"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lportuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lpunjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lrusi"
+ },
+ "es": {
+ "code": "es",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lspania"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ ltai"
+ },
+ "it": {
+ "code": "it",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ ltalian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ ltamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lturuki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lvietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ lzulu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ malay"
+ },
+ "en": {
+ "code": "en",
+ "name": "nkʉtʉ́k ɔ́ɔ̄ nkɨ́resa"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mer.json b/library/intl/resources/language/mer.json
new file mode 100644
index 000000000..0898bba6c
--- /dev/null
+++ b/library/intl/resources/language/mer.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kĩakani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kĩamarĩki"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kĩarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kĩbangira"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kĩbelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kĩbulugĩria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kĩburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kĩcheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kĩchina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kĩfuransi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kĩhangarĩ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kĩhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhĩndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kĩholandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kĩindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kĩitalĩ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kĩjapani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kĩkambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kĩkorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kĩmalesia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Kĩmĩrũ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kĩnepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kĩngeretha"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kĩngiriki"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kĩnjamanĩ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kĩpasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kĩpochogo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kĩpolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kĩpunjabu"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kĩrashia"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kĩromania"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kĩsomali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kĩspĩni"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kĩswideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kĩtakĩ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kĩtamilu"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kĩthailandi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kĩukirĩni"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kĩurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kĩvietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kĩyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kĩzulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mfe.json b/library/intl/resources/language/mfe.json
new file mode 100644
index 000000000..511131998
--- /dev/null
+++ b/library/intl/resources/language/mfe.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarik"
+ },
+ "en": {
+ "code": "en",
+ "name": "angle"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloris"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bilgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franse"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrwa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ikrenien"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer, santral"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreen"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "kreol morisien"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "male"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepale"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olande"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polone"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portige"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ris"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumin"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinwa, mandarin"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "swedwa"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchek"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tirk"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zapone"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mg.json b/library/intl/resources/language/mg.json
new file mode 100644
index 000000000..7714fd25a
--- /dev/null
+++ b/library/intl/resources/language/mg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Alemanina"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharika"
+ },
+ "en": {
+ "code": "en",
+ "name": "Anglisy"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabo"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bielorosy"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Biolgara"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmana"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaniola"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frantsay"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grika"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandey"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongroà"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonezianina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italianina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japoney"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepale"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Okrainianina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ordò"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloney"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portiogey"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanianina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rosianina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinoa, Mandarin"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Soisa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalianina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taioaney"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamoila"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tiorka"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tseky"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamianina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yôrobà"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zolò"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mgh.json b/library/intl/resources/language/mgh.json
new file mode 100644
index 000000000..3d1c146b0
--- /dev/null
+++ b/library/intl/resources/language/mgh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Iajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Iarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ibelausi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Iburma"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Icheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Igiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ihispaniola"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Iholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ihungari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ihurdu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ijerimani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ikambodia"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ikan"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Imalesia"
+ },
+ "am": {
+ "code": "am",
+ "name": "Imhari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Inepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingilishi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Ipunjabi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Irisi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Iromania"
+ },
+ "so": {
+ "code": "so",
+ "name": "Isomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Iswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Itailandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Itamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Iukran"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ivyetinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Izulu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makua"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Nreno"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mk.json b/library/intl/resources/language/mk.json
new file mode 100644
index 000000000..9a4dc6f42
--- /dev/null
+++ b/library/intl/resources/language/mk.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агемски"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџански"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акански"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албански"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американски англиски"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарски"
+ },
+ "en": {
+ "code": "en",
+ "name": "англиски"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапски"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астурски"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканс"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскиски"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафија"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруски"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалски"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босански"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонски"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британски англиски"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарски"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурмански"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вај"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "валсер"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "виетнамски"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунџо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галициски"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "de": {
+ "code": "de",
+ "name": "германски"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горнолужички"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузиски"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуси"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "дански"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "долнолужички"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ерменски"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "есперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "естонски"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западнофризиски"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ѕонгка"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезиски"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирски"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландски"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијански"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапонски"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "јенгбен"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "јола-фоњи"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јорупски"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабилски"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиану"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казакстански"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалисут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленџин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонски"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирски"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинески"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиски"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерски"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "којра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "којраборо сени"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "колоњски"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгоански свахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејски"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаошки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвиски"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литвански"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "литературен арапски"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луја"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "луксембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонски"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-мито"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајски"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтешки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масајски"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавски"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголски"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисјен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалски"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки нинорск"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "њанколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "орија"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунски"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенџапски"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "персиски"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "поедноставен кинески"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полски"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалски"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португалски (во Европа)"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "реторомански"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "романски"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руски"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "свахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "северен ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "севернолапонски"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "si": {
+ "code": "si",
+ "name": "синхалски"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словенечки"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомалиски"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "српски"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "стандарден марокански тамазигтски"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тазавак"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландски"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилски"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетски"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонгански"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционален кинески"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турски"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекистански"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурски"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украински"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгарски"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарски"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипински"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фински"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француски"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "француски (во Канада)"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фурлански"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејски"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандски"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватски"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централно марокански тамазитски"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокиски"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швајцарски германски"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведски"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шкотски гелски"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпански"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "шпански (во Европа)"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ml.json b/library/intl/resources/language/ml.json
new file mode 100644
index 000000000..536d628ad
--- /dev/null
+++ b/library/intl/resources/language/ml.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "അകാൻ‌"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "അപ്പർ സോർബിയൻ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "അമേരിക്കൻ ഇംഗ്ലീഷ്"
+ },
+ "am": {
+ "code": "am",
+ "name": "അംഹാരിക്"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "അർമേനിയൻ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "അൽബേനിയൻ"
+ },
+ "az": {
+ "code": "az",
+ "name": "അസർബൈജാനി"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "അറബിക്"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ആഘേം"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്"
+ },
+ "af": {
+ "code": "af",
+ "name": "ആഫ്രിക്കാൻസ്"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ആസു"
+ },
+ "id": {
+ "code": "id",
+ "name": "ഇൻഡോനേഷ്യൻ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ഇംഗ്ലീഷ്"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ഇവ്"
+ },
+ "it": {
+ "code": "it",
+ "name": "ഇറ്റാലിയൻ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ഉക്രേനിയൻ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ഉയ്ഘുർ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ഉസ്‌ബെക്ക്"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ഉറുദു"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "എംബു"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "എവോൻഡോ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "എസ്‌പരാന്റോ"
+ },
+ "et": {
+ "code": "et",
+ "name": "എസ്റ്റോണിയൻ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ഐസ്‌ലാൻഡിക്"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ഐറിഷ്"
+ },
+ "or": {
+ "code": "or",
+ "name": "ഒഡിയ"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ഓസ്‌ട്രിയൻ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ഓസ്‌ട്രിയൻ ജർമൻ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ഓസ്‌ട്രേലിയൻ ഇംഗ്ലീഷ്"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "കനേഡിയൻ ഇംഗ്ലീഷ്"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "കനേഡിയൻ ഫ്രഞ്ച്"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "കന്നഡ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "കബുവെർദിയാനു"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "കബൈൽ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "കംബ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "കലാല്ലിസട്ട്"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "കലെഞ്ഞിൻ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "കസാഖ്"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "കറ്റാലാൻ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "കാശ്‌മീരി"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "കികൂയു"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "കിർഗിസ്"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "കൊയ്റ ചീനി"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "കൊയ്റാബൊറോ സെന്നി"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "കൊളോഞ്ഞിയൻ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "കൊറിയൻ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "കോംഗോ സ്വാഹിലി"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ക്രൊയേഷ്യൻ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ക്വാസിയോ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ഖമെർ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ഗലീഷ്യൻ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ഗാണ്ട"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ഗുജറാത്തി"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ഗുസീ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ഗോമ്പ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ഗ്രീക്ക്"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ചിഗ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ചീനഭാഷ-പരമ്പരാഗതലിപി"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ചീനഭാഷ-ലളിതലിപി"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ചെക്ക്"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ചൈനീസ്"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ജപ്പാനീസ്"
+ },
+ "de": {
+ "code": "de",
+ "name": "ജർമ്മൻ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ജോർജിയൻ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ടർക്കിഷ്"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ടസവാക്ക്"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ടിബറ്റൻ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ടെസോ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ടൈഗ്രിന്യ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ടോംഗൻ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ഡച്ച്"
+ },
+ "da": {
+ "code": "da",
+ "name": "ഡാനിഷ്"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "തമിഴ്"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "താച്ചലിറ്റ്"
+ },
+ "th": {
+ "code": "th",
+ "name": "തായ്"
+ },
+ "te": {
+ "code": "te",
+ "name": "തെലുങ്ക്"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "തൈത"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "നാമ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "നുവേർ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "നേപ്പാളി"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "നോർത്ത് ഡെബിൾ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "നോർവീജിയൻ നൈനോർക്‌സ്"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "നോർവീജിയൻ ബുക്‌മൽ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ന്യാൻകോൾ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "പഞ്ചാബി"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "പശ്ചിമ ഫ്രിഷിയൻ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "പഷ്തു"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "പേർഷ്യൻ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "പോർച്ചുഗീസ്"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "പോളിഷ്"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ഫാറോസ്"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ഫിന്നിഷ്"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ഫിലിപ്പിനോ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ഫുല"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ഫ്രഞ്ച്"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ഫ്രിയുലിയാൻ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ഫ്ലമിഷ്"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ബംഗാളി"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ബംബാറ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ബർമീസ്"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ബസ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ബൾഗേറിയൻ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ബാസ്‌ക്"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ബെനാ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ബെലാറുഷ്യൻ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ബോഡോ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ബോസ്നിയൻ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ബ്രസീലിയൻ പോർച്ചുഗീസ്"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്"
+ },
+ "br": {
+ "code": "br",
+ "name": "ബ്രെട്ടൺ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ഭാഫിയ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "മക്കോണ്ടെ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "മചേം"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "മധ്യ അറ്റ്‌ലസ് ടമാസൈറ്റ്"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "മംഗോളിയൻ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "മലഗാസി"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "മലയാളം"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "മലെയ്"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "മസായ്"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "മറാത്തി"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "മാഖുവാ-മീത്തോ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "മാസിഡോണിയൻ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "മാൾട്ടീസ്"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "മുന്ദാംഗ്"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "മെക്സിക്കൻ സ്പാനിഷ്"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "മേരു"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "മൊറിസിൻ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "മൊറോക്കൻ സാധാരണ താമസൈറ്റ്"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "മോൾഡാവിയൻ"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "യാംഗ്ബെൻ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "യൂറോപ്യൻ പോർച്ചുഗീസ്"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "യൂറോപ്യൻ സ്‌പാനിഷ്"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "യൊറൂബാ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "യോല-ഫോന്യി"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ലക്‌സംബർഗിഷ്"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ലാംഗി"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ലാവോ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ലാറ്റ്വിയൻ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ലിത്വാനിയൻ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ലിംഗാല"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ലുബ-കറ്റംഗ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ലുയിയ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ലുവോ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ലോവർ സോർബിയൻ"
+ },
+ "se": {
+ "code": "se",
+ "name": "വടക്കൻ സമി"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "വാൾസർ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "വിയറ്റ്നാമീസ്"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "വുഞ്ജോ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "വെൽഷ്"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "വൈ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ഷംഭാള"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ഷെരോക്കി"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ഷോണ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "സംഗു"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "സംബുരു"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "സാംഗോ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "സാർമ്മ"
+ },
+ "si": {
+ "code": "si",
+ "name": "സിംഹള"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "സുലു"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "സെർബിയൻ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "സേന"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "സോഗോ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "സോങ്ക"
+ },
+ "so": {
+ "code": "so",
+ "name": "സോമാലി"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "സ്കോട്ടിഷ് ഗൈലിക്"
+ },
+ "es": {
+ "code": "es",
+ "name": "സ്‌പാനിഷ്"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "സ്ലോവാക്"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "സ്ലോവേനിയൻ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "സ്വാഹിലി"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "സ്വിസ് ജർമ്മൻ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "സ്വിസ് ഫ്രഞ്ച്"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "സ്വിസ് ഹൈ ജർമൻ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "സ്വീഡിഷ്"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ഹംഗേറിയൻ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ഹിന്ദി"
+ },
+ "he": {
+ "code": "he",
+ "name": "ഹീബ്രു"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ഹൗസ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "റഷ്യൻ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "റുണ്ടി"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "റുവാ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "റൊമാഞ്ച്"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "റൊമാനിയൻ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "റോംബോ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mn.json b/library/intl/resources/language/mn.json
new file mode 100644
index 000000000..2b2598c00
--- /dev/null
+++ b/library/intl/resources/language/mn.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "австрали англи"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "австри герман"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайжан"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албани"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "америкийн англи"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхар"
+ },
+ "en": {
+ "code": "en",
+ "name": "англи"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "араб"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армен"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африк"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "балба"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "баруун фризын"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баск"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиа"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларусь"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгал"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирм"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгар"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босни"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретон"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британийн англи"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вай"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунжо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнам"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галик"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "de": {
+ "code": "de",
+ "name": "герман"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голланд"
+ },
+ "el": {
+ "code": "el",
+ "name": "грек"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гужарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гузы"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "гүрж"
+ },
+ "da": {
+ "code": "da",
+ "name": "дани"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "дээд сорби"
+ },
+ "he": {
+ "code": "he",
+ "name": "еврей"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "европын испани"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "европын португал"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ёруба"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "жола-фони"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "жонха"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонези"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирланд"
+ },
+ "is": {
+ "code": "is",
+ "name": "исланд"
+ },
+ "es": {
+ "code": "es",
+ "name": "испани"
+ },
+ "it": {
+ "code": "it",
+ "name": "итали"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабүвердиану"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалисут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "km": {
+ "code": "km",
+ "name": "камбож"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канад англи"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канад франц"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталан"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмир"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазио"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "кёраборо сени"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуюү"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиз"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чини"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго свахили"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаос"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латви"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литва"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ловер-сорби"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луяа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембург"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македон"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-мито"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаси"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малай"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайлам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малти"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масай"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачамэ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мексикийн испани"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдав"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгол"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвегийн букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвегийн нинорск"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нянколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "ория"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "орос"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панжаб"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пашто"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перс"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польш"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португал"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "португал (бразил)"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романш"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румын"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбүрү"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангү"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "свахили"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "серб"
+ },
+ "si": {
+ "code": "si",
+ "name": "синхала"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словак"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словен"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "солонгос"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомали"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "стандарт араб"
+ },
+ "th": {
+ "code": "th",
+ "name": "тай"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "тайта"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "тамазит"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамил"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачелхит"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигрина"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "төв атласын тамазайт"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "төвд"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турк"
+ },
+ "te": {
+ "code": "te",
+ "name": "тэлүгү"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тэсо"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбек"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгар"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украйн"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "уламжлалт хятад"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгар"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уэлс"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарер"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппин"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финлянд"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанд"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "франц"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "хасаг"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "хойд ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "хойд сами"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорват"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "хялбаршуулсан хятад"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "хятад"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чех"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чироки"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "швед"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцари герман"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцари дээр герман"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцари франц"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шотланд келт"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "эвэ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "эмбу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "эсперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "эстони"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "япон"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mr.json b/library/intl/resources/language/mr.json
new file mode 100644
index 000000000..aaa3f3189
--- /dev/null
+++ b/library/intl/resources/language/mr.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "अघेम"
+ },
+ "az": {
+ "code": "az",
+ "name": "अझरबैजानी"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "अप्पर सॉर्बियन"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ्रिकान्स"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अमेरिकन इंग्रजी"
+ },
+ "am": {
+ "code": "am",
+ "name": "अम्हारिक"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अल्बानियन"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "असु"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "अस्तुरियन"
+ },
+ "is": {
+ "code": "is",
+ "name": "आईसलँडिक"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधुनिक प्रमाणित अरबी"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आयरिश"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आर्मेनियन"
+ },
+ "en": {
+ "code": "en",
+ "name": "इंग्रजी"
+ },
+ "id": {
+ "code": "id",
+ "name": "इंडोनेशियन"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "इवोन्डो"
+ },
+ "et": {
+ "code": "et",
+ "name": "इस्टोनियन"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइगुर"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उझ्बेक"
+ },
+ "or": {
+ "code": "or",
+ "name": "उडिया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उत्तर देबेली"
+ },
+ "se": {
+ "code": "se",
+ "name": "उत्तरी सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उर्दू"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "एम्बू"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "एवे"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "एस्परान्टो"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ऑस्ट्रियन जर्मन"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ऑस्ट्रेलियन इंग्रजी"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "कझाक"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कन्नड"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "कबाइल"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कलाल्लिसत"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "काँगो स्वाहिली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालान"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबवर्दियानु"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "काम्बा"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेंजीन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काश्मीरी"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकुयू"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "किगा"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरगीझ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "कॅनडियन इंग्रजी"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "कॅनडियन फ्रेंच"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चीनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेन्नी"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियन"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "क्रोएशियन"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "क्वासिओ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ख्मेर"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गसी"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गुजराती"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गॅलिशियन"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोम्बा"
+ },
+ "el": {
+ "code": "el",
+ "name": "ग्रीक"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जपानी"
+ },
+ "de": {
+ "code": "de",
+ "name": "जर्मन"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉर्जियन"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोंयी"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "झार्मा"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "झुलू"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "झेक"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "झोंगखा"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोंगन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डॅनिश"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिळ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "तायता"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ताशेल्हिट"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासाव्हाक"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिग्रिन्या"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबेटी"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तुर्की"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलगू"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "तेसो"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नुएर"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाळी"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉर्वेजियन न्योर्स्क"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नॉर्वेजियन बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "न्यानकोल"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पश्चिमी फ्रिशियन"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पश्तो"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "पारंपारिक चीनी"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोर्तुगीज"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "प्रमाण मोरोक्कन तॅमॅझायट"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फरोइज"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिन्निश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फुलाह"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फ्रियुलियान"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ्रेंच"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ्लेमिश"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "my": {
+ "code": "my",
+ "name": "बर्मी"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बल्गेरियन"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बसा"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बाम्बारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बास्क"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "be": {
+ "code": "be",
+ "name": "बेलारुशियन"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोस्नियन"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ब्राझिलियन पोर्तुगीज"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ब्रिटिश इंग्रजी"
+ },
+ "br": {
+ "code": "br",
+ "name": "ब्रेतॉन"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोलियन"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "मध्य ऍटलास तॅमॅझायट"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलय"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागसी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मल्याळम"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "मशामे"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोन्दे"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखुव्हा-मीट्टो"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "माल्टिज्"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मुंडांग"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मॅसेडोनियन"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "मेक्सिकन स्पॅनिश"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिस्येन"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोल्डाव्हियन"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "युक्रेनियन"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "युरोपियन पोर्तुगीज"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "युरोपियन स्पॅनिश"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरुबा"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रव्हा"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रशियन"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रुन्दी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियन"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमान्श"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोम्बो"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लक्झेंबर्गिश"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लांगी"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लात्व्हियन"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथुआनियन"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "लोअर सोर्बियन"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ल्युइया"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ल्युओ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ल्यूबा-कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "वुंजो"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेल्श"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "व्हिएतनामी"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शांबाला"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलीकृत चीनी"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सर्बियन"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "सांगु"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांगो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सांबुरू"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिंहला"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "स्कॉट्स गेलिक"
+ },
+ "es": {
+ "code": "es",
+ "name": "स्पॅनिश"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "स्लोव्हाक"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "स्लोव्हेनियन"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "स्वाहिली"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "स्विस जर्मन"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "स्विस फ्रेंच"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "स्विस हाय जर्मन"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "स्वीडिश"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगेरियन"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिब्रू"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हौसा"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ms.json b/library/intl/resources/language/ms.json
new file mode 100644
index 000000000..40e671ae1
--- /dev/null
+++ b/library/intl/resources/language/ms.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arab Standard Moden"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Bahasa Melayu"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Belanda"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Benggala"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål Norway"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burma"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalonia"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Cina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Cina Ringkas"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Cina Tradisional"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croat"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Denmark"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finland"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frisian"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgia"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujerat"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungary"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ibrani"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iceland"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inggeris"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Inggeris AS"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Inggeris Australia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Inggeris British"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Inggeris Kanada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jepun"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jerman"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Jerman Austria"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jerman Halus Switzerland"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Jerman Switzerland"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmir"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakhstan"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuya"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirghiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laos"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuania"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourg"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavia"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Utara"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepal"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk Norway"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Parsi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Perancis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Perancis Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Perancis Switzerland"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poland"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portugis Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portugis Eropah"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romania"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusia"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Utara"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scots Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sepanyol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Sepanyol Eropah"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Sepanyol Mexico"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweden"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Atlas Tengah"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Maghribi Standard"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraine"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbekistan"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wales"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mt.json b/library/intl/resources/language/mt.json
new file mode 100644
index 000000000..112c079d0
--- /dev/null
+++ b/library/intl/resources/language/mt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaniż"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amħariku"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenjan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Ażerbajġani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bask"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarussu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmahal Norveġiż"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnijan"
+ },
+ "br": {
+ "code": "br",
+ "name": "Brenton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmiż"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ċek"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Ċerokij"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ċiniż"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ċiniż Simplifikat"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Daniż"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dżongka"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ebrajk"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonjan"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Fawriż"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finlandiż"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franċiż"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Franċiż Kanadiż"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Franċiż Żvizzeru"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Frijuljan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Friżjan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulaħ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ġappuniż"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ġermaniż"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Ġorġjan"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gallegjan"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Galliku Skoċċiż"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieg"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Guġarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Għarbi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Għarbi Standard Modern"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ħawsa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ħindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneżjan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingliż"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingliż Amerikan"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Ingliż Awstraljan"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingliż Brittaniku"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irlandiż"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iżlandiż"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabuljan"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalan"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaxmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Każak"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiż"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korejan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroat"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvjan"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Letżburgiż"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingaljan"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litwanjan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luwa"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Maċedonjan"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagażi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malajan"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malti"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masaj"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavjan"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoljan"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele, ta’ Fuq"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaliż"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Ninorsk Norveġiż"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Olandiż"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paxtun"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persjan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pollakk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiż"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punġabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romanz"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami ta’ Fuq"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinħaliż"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovakk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanjol"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Svediż"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swaħili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tajlandiż"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taljan"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetjan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tork"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukranjan"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungeriż"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Użbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vjetnamiż"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welx"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Wigur"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Xona"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Żulu"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mua.json b/library/intl/resources/language/mua.json
new file mode 100644
index 000000000..ac78db429
--- /dev/null
+++ b/library/intl/resources/language/mua.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akaŋ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiya"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarussiya"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmania"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaria"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaniya"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "germaŋ"
+ },
+ "el": {
+ "code": "el",
+ "name": "grek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungariya"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiya"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiya"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malasiya"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "MUNDAŊ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaliya"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persia"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pǝnjabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloniya"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaniya"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russiya"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaliya"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "syekya"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainia"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamiya"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "en": {
+ "code": "en",
+ "name": "zah Anglofoŋ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "zah sǝr Franssǝ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zah sǝr Japoŋ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "zah sǝr ma kasǝŋ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Zah sǝr Portugal"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "zah Syiŋ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/my.json b/library/intl/resources/language/my.json
new file mode 100644
index 000000000..72622da2b
--- /dev/null
+++ b/library/intl/resources/language/my.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ကနေဒါ ပြင်သစ်"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ကနေဒါ အင်္ဂလိပ်"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ကာတာလန်"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ကိုးရီးယား"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ကက်ရှ်မီရီ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ကန္နာဒါ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ခဘူဗာဒီအာနူ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ခဘိုင်လ်"
+ },
+ "km": {
+ "code": "km",
+ "name": "ခမာ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ခရူဂစ်"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ခရိုအေရှန်"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ခလာအ်လီဆပ်"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ခါဇါခ်"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ခါလိမ်ဂျင်"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ခီခူယူ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ခိုရာ ချီအီနီ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ခိုရာဘိုရို ဆမ်နီ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ခမ်ဘာ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ချာရိုကီ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ချီဂါ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ချက်"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ခွန်ဂို စွာဟီလီ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ဂရိ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ဂါလာစီယံ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ဂူဂျာရသီ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ဂူစီး"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ဂန်ဒီ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ဂျပန်"
+ },
+ "de": {
+ "code": "de",
+ "name": "ဂျာမန်"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ဂျော်ဂျီယန်"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ဂျိုလာ-ဖွန်ရီ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ဂွမ်ဘာ"
+ },
+ "es": {
+ "code": "es",
+ "name": "စပိန်"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "စပိန်(ဥရောပ)"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "စလိုဗေးနီးယမ်း"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "စလိုဗက်"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "စီနာ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ဆားဗီးယန်း"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ဆိုဂါ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ဆိုမာလီ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ဆင်ဟာလ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ဆန်ဂု"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ဆန်ဘူရု"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ဆမ်ဂို"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ဆြာဟီလီ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ဆွီဒင်"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ဆွစ် ဂျာမန်"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ဆွစ် ပြင်သစ်"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ဆွစ် အမြင့် ဂျာမန်"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ဇာမာ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ဇူလူ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "တမီးလ်"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "တရုတ်"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "တာကစ်"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "တာချယ်လ်ဟစ်"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "တာဆာဝါခ်"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "တိဘက်"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "တီဆို"
+ },
+ "te": {
+ "code": "te",
+ "name": "တီလီဂု"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "တီဂ်ရင်ရာ"
+ },
+ "se": {
+ "code": "se",
+ "name": "တောင်ဆာမိ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "တောင်ဒီဘီလီ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "တိုင်တာ"
+ },
+ "to": {
+ "code": "to",
+ "name": "တွန်ဂါ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ထိုင်း"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ဒတ်ချ်"
+ },
+ "da": {
+ "code": "da",
+ "name": "ဒိန်းမတ်"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ဒွန်ကာ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "နာမာ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "နီပါလီ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "နူအာ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "နော်ဝေး နီးနော်စ်ခ်"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ပါရှန်"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ပါရှ်တို"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ပေါ်တူဂီ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ပိုလန်"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ပန်ချာပီ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ပြင်သစ်"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ဖလီမစ်ရှ်"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ဖာရိုအိစ်"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ဖိလစ်ပီနို"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ဖင်နစ်ရှ်"
+ },
+ "my": {
+ "code": "my",
+ "name": "ဗမာ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ဗီယက်နမ်"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ဗိုဒို"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ဗိုင်"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ဗန်ဂျို"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ဗြိတိသျှ အင်္ဂလိပ်"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ဘရာဇီး ပေါ်တူဂီ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ဘရီတွန်"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ဘာဆာ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ဘာဖီအာ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ဘီနာ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ဘီလာရု"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ဘူဂေးရီးယား"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ဘော့စ်နီးယား"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ဘင်္ဂါလီ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ဘစ်က္ကီ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ဘန်ဘာရာ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ဘွတ်မော်လ်"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "မချာမီ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "မလေး"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "မလေးရာလမ်"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "မာခူဝါ-မီအီတို"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "မာခွန်ဒီ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "မာစီဒိုနီယံ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "မာဆိုင်"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "မာရသီ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "မီရု"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "မိုရိုကန် တွမ်မဇိုတ် စံ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "မိုရှီစ်ယန်း"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "မန်ဒန်း"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "မောလ္တီစ်"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "မွန်ဂိုလီးယန်း"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ယူကရိန်း"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ယန်ကိုလီ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ရုရှ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ရောမ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ရိုမေနီယား"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ရိုရုဘာ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ရိုးရှင်းသော တရုတ်"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ရွန်ဒီ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ရွမ်ဘို"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ရှိနာ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ရှေးရိုးစဉ်လာ တရုတ်"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ရှန်ဘာလာ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "လာအို"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "လူဇင်ဘတ်က်"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "လူဘာ-ခါတန်ဂါ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "လူရီအာ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "လူအို"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "လက္ဘီအံ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "လင်ဂါလာ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "လစ္သူအာနီယံ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "လန်ဂီ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ဝါ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ဝါဆီအို"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ဝီ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ဝီဂါ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ဝေလ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ဟာဥစာ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ဟီးဘရူး"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ဟန်ဂေရီ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ဟိန္ဒီ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "အနောက်ပိုင်း ဖရီစီရန်"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "အပေါ်ဆိုဘီအမ်"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "အမေရိကန် အင်္ဂလိပ်"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "အရေဗီ(ပုံမှန်)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "အလယ်အက်တ်လက်စ် တာမာဇိုက်"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "အာကိန်"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "အာစု"
+ },
+ "af": {
+ "code": "af",
+ "name": "အာဖရိကန်းစ်"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "အာမေနီအန်"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "အာရေဗီ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "အာလာဂါစီ"
+ },
+ "it": {
+ "code": "it",
+ "name": "အီတလီ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ဥရောပ ပေါ်တူဂီ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ဦးဇ်ဘက်"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ဩစတြီးယ ဂျာမန်"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ဩစတြေးလျှ အင်္ဂလိပ်"
+ },
+ "az": {
+ "code": "az",
+ "name": "အော်ဇောဘိုင်ဂျောနီ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "အော်ဒူ"
+ },
+ "or": {
+ "code": "or",
+ "name": "အိုရီရာ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "အက္စပရန္တို"
+ },
+ "et": {
+ "code": "et",
+ "name": "အက်စ်တိုးနီးရန်း"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "အောက်ဆိုဘီအမ်"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "အာဂ်ဟိန်း"
+ },
+ "en": {
+ "code": "en",
+ "name": "အင်္ဂလိပ်"
+ },
+ "id": {
+ "code": "id",
+ "name": "အင်ဒိုနီးရှား"
+ },
+ "is": {
+ "code": "is",
+ "name": "အိုင်စ်လန္ဒီ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "အိုင်းရစ်"
+ },
+ "am": {
+ "code": "am",
+ "name": "အန်ဟာရစျချ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "အမ်ဘူ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "အယ်လ်ဘေးနီးယန်း"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/naq.json b/library/intl/resources/language/naq.json
new file mode 100644
index 000000000..32c77cf2e
--- /dev/null
+++ b/library/intl/resources/language/naq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akangowab"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharicgowab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabiǁî gowab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusanǁî gowab"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaliǁî gowab"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgariaǁî gowab"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmesǁî gowab"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chineesǁî gowab, Mandarinni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czechǁî gowab"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausagowab"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindigowab"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollands"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungariaǁî gowab"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesiaǁî gowab"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italians"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanees"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmerǁî gowab, Central"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Khoekhoegowab"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaǁî gowab"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malayǁî gowab"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalǁî gowab"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persiaǁî gowab"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poleǁî gowab"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabigowab"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaniaǁî gowab"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russiaǁî gowab"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaliǁî gowab"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedeǁî gowab"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilǁî gowab"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thaiǁî gowab"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkeǁî gowab"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainiaǁî gowab"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urduǁî gowab"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamǁî gowab"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Xriks"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorubab"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulub"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nb.json b/library/intl/resources/language/nb.json
new file mode 100644
index 000000000..6aae6016a
--- /dev/null
+++ b/library/intl/resources/language/nb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australsk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "canadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "canadisk fransk"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesisk"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenklet kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuliansk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøysk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grønlandsk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "be": {
+ "code": "be",
+ "name": "hviterussisk"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "høysorbisk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylsk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kappverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalansk"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongolesisk swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kølnsk"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotisk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvisk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lavsorbisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgsk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "madagassisk"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayisk"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritisk-kreolsk"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikansk spansk"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderne standard arabisk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovsk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandsk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nord-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norsk bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norsk nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromansk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumensk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "sentralmarokkansk tamazight"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standard marrokansk tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsisk fransk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsisk høytysk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilsk"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradisjonell kinesisk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsjekkisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurisk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisisk"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "østerriksk tysk"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nd.json b/library/intl/resources/language/nd.json
new file mode 100644
index 000000000..47ba48cab
--- /dev/null
+++ b/library/intl/resources/language/nd.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "isi-Akhani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "isi-Alabhu"
+ },
+ "am": {
+ "code": "am",
+ "name": "isi-Amaharikhi"
+ },
+ "be": {
+ "code": "be",
+ "name": "isi-Bhelarashiyani"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "isi-Bhengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "isi-Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "isi-Burma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "isi-China"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "isi-Czech"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "isi-Dutch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "isi-Fulentshi"
+ },
+ "el": {
+ "code": "el",
+ "name": "isi-Giliki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "isi-Hangari"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "isi-Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "isi-Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "isi-Indonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "isi-Italiano"
+ },
+ "de": {
+ "code": "de",
+ "name": "isi-Jalimani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "isi-Japhani"
+ },
+ "km": {
+ "code": "km",
+ "name": "isi-Khambodiya"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "isi-Koriya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "isi-Malayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "isi-Nepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "isi-Ngisi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "isi-Pheshiyani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "isi-Pholoshi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "isi-Phunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "isi-Potukezi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "isi-Rashiya"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "isi-Romani"
+ },
+ "es": {
+ "code": "es",
+ "name": "isi-Sipeyini"
+ },
+ "so": {
+ "code": "so",
+ "name": "isi-Somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isi-Swidishi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "isi-Thamil"
+ },
+ "th": {
+ "code": "th",
+ "name": "isi-Thayi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "isi-Thekishi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "isi-Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "isi-Ukrain"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "isi-Vietnamese"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "isi-Yorubha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "isi-Zulu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "isiNdebele"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ne-IN.json b/library/intl/resources/language/ne-IN.json
new file mode 100644
index 000000000..fec54a95f
--- /dev/null
+++ b/library/intl/resources/language/ne-IN.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंग्रेजी"
+ },
+ "az": {
+ "code": "az",
+ "name": "अजरबैजानी"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "अधुनिक प्रमाणिक अरबी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ्रिकान्स"
+ },
+ "am": {
+ "code": "am",
+ "name": "अम्हारिक"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अल्बेनियन"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "अष्ट्रियन जर्मन"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसल्यान्डिक"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "आकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "आघेम"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आर्मेनियाली"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "आसु"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "id": {
+ "code": "id",
+ "name": "इन्डोनेसियाली"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "इवि"
+ },
+ "et": {
+ "code": "et",
+ "name": "इस्टोनियाली"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइघुर"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज्बेकी"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उत्तर नेडेबेले"
+ },
+ "se": {
+ "code": "se",
+ "name": "उत्तरी सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उर्दु"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "एम्बु"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "एस्पेरान्तो"
+ },
+ "or": {
+ "code": "or",
+ "name": "ओरिया"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कन्नाडा"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "काजाख"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबिल"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबुभेर्डियानु"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "काम्बा"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कालालिसुट"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेन्जिन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काश्मीरी"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकुयु"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किर्गिज"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "केन्द्रीय एट्लास टामाजिघट"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कोङ्गो स्वाहिली"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चिनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेन्नी"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "क्याटालन"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "क्रोएशियाली"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "क्वासियो"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गलिसियाली"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गान्डा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गुजराती"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गुसी"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोम्बा"
+ },
+ "el": {
+ "code": "el",
+ "name": "ग्रीक"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "चिगा"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चिनियाँ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जर्जियाली"
+ },
+ "de": {
+ "code": "de",
+ "name": "जर्मन"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "जर्मा"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "जुलु"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "जोङ्खा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोनिल"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "टर्किश"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "टाचेल्हिट"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोङ्गन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "तल्लो सोर्बियन"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ताइता"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिल"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासावाक"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिग्रीन्या"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिब्बती"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलुगु"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नर्वेली नाइनोर्स्क"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नर्वेली बोकमाल"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नुएर"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "न्यान्कोल"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "परम्परागत चिनियाँ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पाश्तो"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोर्तुगी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "पोर्तुगी (युरोप)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फारोज"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनी"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ्रान्सेली"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "फ्रिजीयन"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ्लेमिश"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बाम्बारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बास्क"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बुल्गेरियाली"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोस्नियाली"
+ },
+ "br": {
+ "code": "br",
+ "name": "ब्रेटन"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "भाइ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "भियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "भुन्जो"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोल"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागासी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाया"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोन्डे"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखुवा-मिट्टो"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "माचामे"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "माथिल्लो सोर्बियन"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरोक्कोन तामाजिघट"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "माल्टिज"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "माल्डाभियन"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मासाल"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मुन्डाङ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिसेन"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "म्याकेडोनियन"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "युक्रेनी"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "युरोपेली स्पेनिस"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रूण्डी"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाली"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानिश"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोम्बो"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "र्‌वा"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लक्जेम्बर्गिस"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लाङ्गी"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लात्भियाली"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथुआनियाली"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लुइया"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लुओ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लुबा-काताङ्गा"
+ },
+ "my": {
+ "code": "my",
+ "name": "वर्मेली"
+ },
+ "be": {
+ "code": "be",
+ "name": "वेलारूसी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेल्श"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शाम्बाला"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलिकृत चिनियाँ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सर्बियाली"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "साङ्गु"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "साङ्गो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "साम्बुरू"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिन्हाला"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "स्कट्स गाएलिक"
+ },
+ "es": {
+ "code": "es",
+ "name": "स्पेनिस"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "स्लोभाकियाली"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "स्लोभेनियाली"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "स्वाहिली"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "स्विडिश"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "स्वीस जर्मन"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "स्वीस हाई जर्मन"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंग्रीयाली"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हाउसा"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिन्दी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिब्रु"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ne.json b/library/intl/resources/language/ne.json
new file mode 100644
index 000000000..41f8c3a62
--- /dev/null
+++ b/library/intl/resources/language/ne.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंग्रेजी"
+ },
+ "az": {
+ "code": "az",
+ "name": "अजरबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ्रिकान्स"
+ },
+ "am": {
+ "code": "am",
+ "name": "अम्हारिक"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अल्बेनियन"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "अष्ट्रियन जर्मन"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसल्यान्डिक"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "आकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "आघेम"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधुनिक मानक अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आर्मेनियाली"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "आसु"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "id": {
+ "code": "id",
+ "name": "इन्डोनेसियाली"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "इवि"
+ },
+ "et": {
+ "code": "et",
+ "name": "इस्टोनियाली"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइघुर"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज्बेकी"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उत्तर नेडेबेले"
+ },
+ "se": {
+ "code": "se",
+ "name": "उत्तरी सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उर्दु"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "एम्बु"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "एस्पेरान्तो"
+ },
+ "or": {
+ "code": "or",
+ "name": "ओरिया"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कन्नाडा"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "काजाख"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबिल"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबुभेर्डियानु"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "काम्बा"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कालालिसुट"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेन्जिन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काश्मीरी"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकुयु"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किर्गिज"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "केन्द्रीय एट्लास टामाजिघट"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कोङ्गो स्वाहिली"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चिनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेन्नी"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "क्याटालन"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "क्रोएशियाली"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "क्वासियो"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गलिसियाली"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गान्डा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गुजराती"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गुसी"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोम्बा"
+ },
+ "el": {
+ "code": "el",
+ "name": "ग्रीक"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "चिगा"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चिनियाँ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जर्जियाली"
+ },
+ "de": {
+ "code": "de",
+ "name": "जर्मन"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "जर्मा"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "जुलु"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "जोङ्खा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोनिल"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "टर्किश"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "टाचेल्हिट"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोङ्गन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "तल्लो सोर्बियन"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ताइता"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिल"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासावाक"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिग्रीन्या"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिब्बती"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलुगु"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नर्वेली नाइनोर्स्क"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नर्वेली बोकमाल"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नुएर"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "न्यान्कोल"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "परम्परागत चिनियाँ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पाश्तो"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोर्तुगी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "पोर्तुगी (युरोप)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फारोज"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनी"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ्रान्सेली"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "फ्रिजीयन"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ्लेमिश"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बाम्बारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बास्क"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बुल्गेरियाली"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोस्नियाली"
+ },
+ "br": {
+ "code": "br",
+ "name": "ब्रेटन"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "भाइ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "भियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "भुन्जो"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोल"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागासी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाया"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोन्डे"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखुवा-मिट्टो"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "माचामे"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "माथिल्लो सोर्बियन"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरोक्कोन तामाजिघट"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "माल्टिज"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "माल्डाभियन"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मासाल"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मुन्डाङ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिसेन"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "म्याकेडोनियन"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "युक्रेनी"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "युरोपेली स्पेनिस"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रूण्डी"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाली"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानिश"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोम्बो"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "र्‌वा"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लक्जेम्बर्गिस"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लाङ्गी"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लात्भियाली"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथुआनियाली"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लुइया"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लुओ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लुबा-काताङ्गा"
+ },
+ "my": {
+ "code": "my",
+ "name": "वर्मेली"
+ },
+ "be": {
+ "code": "be",
+ "name": "वेलारूसी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेल्श"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शाम्बाला"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलिकृत चिनियाँ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सर्बियाली"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "साङ्गु"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "साङ्गो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "साम्बुरू"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिन्हाला"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "स्कट्स गाएलिक"
+ },
+ "es": {
+ "code": "es",
+ "name": "स्पेनिस"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "स्लोभाकियाली"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "स्लोभेनियाली"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "स्वाहिली"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "स्विडिश"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "स्वीस जर्मन"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "स्वीस हाई जर्मन"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंग्रीयाली"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हाउसा"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिन्दी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिब्रु"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nl.json b/library/intl/resources/language/nl.json
new file mode 100644
index 000000000..4edb00b29
--- /dev/null
+++ b/library/intl/resources/language/nl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanees"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikaans Engels"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaars"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeens"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturisch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisch Engels"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidzjaans"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaals"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmaans"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliaans Portugees"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretons"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Brits Engels"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaars"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadees Engels"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadees Frans"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalaans"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinees"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deens"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europees Portugees"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europees Spaans"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faeröers"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipijns"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fins"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Fries"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galicisch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Gikuyu"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieks"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Groenlands"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeuws"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaars"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iers"
+ },
+ "is": {
+ "code": "is",
+ "name": "IJslands"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaans"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japans"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kaapverdisch Creools"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazachs"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaans"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiaans"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lets"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litouws"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Luganda"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maa"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagassisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexicaans Spaans"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standaard Arabisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlands"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nedersorbisch"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Ngumba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noord-Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noors - Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noors - Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Odia"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Oeigoers"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Oostenrijks Duits"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Oppersorbisch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjtoe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perzisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pools"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaans"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeens"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schots-Gaelisch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Servisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalees"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloveens"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalisch"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standaard Marokkaanse Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight (Centraal-Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thais"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetaans"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditioneel Chinees"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "vereenvoudigd Chinees"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wit-Russisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zoeloe"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Zweeds"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Zwitserduits"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Zwitsers Frans"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Zwitsers Hoogduits"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nmg.json b/library/intl/resources/language/nmg.json
new file mode 100644
index 000000000..25d4d1776
--- /dev/null
+++ b/library/intl/resources/language/nmg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fala"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jáman"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiɛl akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiɛl amaria"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiɛl b’árabe"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kiɛl b’indien"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kiɛl b’ɔ́ngrois"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiɛl b’ukrɛ̄nien"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kiɛl belarussie"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kiɛl bengalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiɛl birmania"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kiɛl bó chinois"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kiɛl bó grɛk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kiɛl bó japonɛ̌"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kiɛl bó mɛr"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kiɛl bó pɔ̄rtugɛ̂"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiɛl bó rumɛ̂n"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiɛl bó suedois"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kiɛl bó tchɛk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kiɛl bó turk"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiɛl bóllandais"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kiɛl bulgaria"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiɛl indonesie"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiɛl italia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kiɛl koré"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kiɛl Malɛ̌siā"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kiɛl máwúsá"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kiɛl nepal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kiɛl pɛndjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiɛl pɛrsia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kiɛl pɔlɔŋe"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kiɛl russia"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kiɛl somaliā"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kiɛl tamul"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kiɛl thaï"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiɛl úrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kiɛl viɛtnam"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ngɛ̄lɛ̄n"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "es": {
+ "code": "es",
+ "name": "Paŋá"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorúbâ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nn.json b/library/intl/resources/language/nn.json
new file mode 100644
index 000000000..f4f34a101
--- /dev/null
+++ b/library/intl/resources/language/nn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu (Tanzania)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austerriksk tysk"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "engelsk (amerikansk)"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisisk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenkla kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuliansk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøysk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "høgsorbisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberisk spansk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylsk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut; grønlandsk"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadisk fransk"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalansk"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "be": {
+ "code": "be",
+ "name": "kviterussisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotisk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgsk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbisk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "madagassisk"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayisk"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavisk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandsk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalsk"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nord-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromansk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumensk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk-gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsisk fransk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsisk høgtysk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga (Tonga-øyane)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradisjonell kinesisk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsjekkisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurisk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisisk"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nus.json b/library/intl/resources/language/nus.json
new file mode 100644
index 000000000..00feca205
--- /dev/null
+++ b/library/intl/resources/language/nus.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Thok aka̱ni"
+ },
+ "be": {
+ "code": "be",
+ "name": "Thok bälärutha"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Thok bälga̱a̱riani"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Thok bängali"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Thok betnaamni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Thok bormi̱thni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Thok bunyni"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Thok cayna"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Thok cik"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Thok da̱c"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Thok dhuluni"
+ },
+ "el": {
+ "code": "el",
+ "name": "Thok girikni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Thok ɣändini"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Thok ɣänga̱a̱riɛni"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Thok ɣowthani"
+ },
+ "id": {
+ "code": "id",
+ "name": "Thok indunithiani"
+ },
+ "it": {
+ "code": "it",
+ "name": "Thok i̱taliani"
+ },
+ "es": {
+ "code": "es",
+ "name": "Thok i̱thpaaniani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Thok i̱thwidicni"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Thok Jalabni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Thok japanni"
+ },
+ "de": {
+ "code": "de",
+ "name": "Thok jarmani"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Thok ji̱ röm"
+ },
+ "km": {
+ "code": "km",
+ "name": "Thok kameeri"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Thok kuriani"
+ },
+ "en": {
+ "code": "en",
+ "name": "Thok liŋli̱thni"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Thok mayɛyni"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Thok napalni"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Thok Nath"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Thok perthiani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Thok pölicni"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Thok pɔrɔthani"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Thok puɔnjabani"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Thok puɔtigali"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Thok ra̱ciaani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Thok tamilni"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thok tayni"
+ },
+ "so": {
+ "code": "so",
+ "name": "Thok thomaaliani"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Thok turkicni"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Thok udoni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Thok ukeraanini"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Thok yurubani"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nyn.json b/library/intl/resources/language/nyn.json
new file mode 100644
index 000000000..71c4a66c7
--- /dev/null
+++ b/library/intl/resources/language/nyn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oru-Urudu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Orubengari"
+ },
+ "be": {
+ "code": "be",
+ "name": "Oruberarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Oruburugariya"
+ },
+ "my": {
+ "code": "my",
+ "name": "Oruburuma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oruceeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Oruchaina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Orudaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Orufaransa"
+ },
+ "de": {
+ "code": "de",
+ "name": "Orugirimaani"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oruguriiki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oruhangare"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oruharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oruhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oruhindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oruindonezia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Orujapaani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Orukambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Orukani"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Orukoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Orukuraini"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Orukuruki"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Orumalesiya"
+ },
+ "am": {
+ "code": "am",
+ "name": "Orumariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Orunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Orungyereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Orupaasiya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Orupocugo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Orupoori"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Orupungyabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Oruromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Orurrasha"
+ },
+ "so": {
+ "code": "so",
+ "name": "Orusomaari"
+ },
+ "es": {
+ "code": "es",
+ "name": "Orusupaani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oruswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Orutailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Orutamiri"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oruviyetinaamu"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oruyitare"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oruyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oruzuru"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Runyankore"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/or.json b/library/intl/resources/language/or.json
new file mode 100644
index 000000000..7dbd79499
--- /dev/null
+++ b/library/intl/resources/language/or.json
@@ -0,0 +1,738 @@
+{
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ଅକନ୍"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁରାଜୀ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ଆଇସଲାଣ୍ଡିକ୍"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ଆଘେମ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ଆଜେରବାଇଜାନି"
+ },
+ "af": {
+ "code": "af",
+ "name": "ଆଫ୍ରିକାନସ୍"
+ },
+ "am": {
+ "code": "am",
+ "name": "ଆମହାରକି"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ଆରବିକ୍"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ଆର୍ମେନିଆନ୍"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ଆଲବାନିଆନ୍"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ଆଷ୍ଟୁରିଆନ୍"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ଆସୁ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ଇଂରାଜୀ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ଇଟାଲିଆନ୍"
+ },
+ "id": {
+ "code": "id",
+ "name": "ଇଣ୍ଡୋନେସିଆନ୍"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ଇରିସ୍"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ଇୱେ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ଇୱୋଣ୍ଡୋ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ଉଜବେକ୍"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ଉତ୍ତର ନେଡବେଲେ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ଉତ୍ତର ସାମି"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ଉପର ସର୍ବିଆନ୍"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ଉର୍ଦ୍ଦୁ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ଏସ୍ତୋନିଆନ୍"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ଏସ୍ପାରେଣ୍ଟୋ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ଓଡ଼ିଆ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "କନ୍ନଡ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "କବାଇଲ୍"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "କମ୍ବା"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "କାଜାକ୍"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "କାଟଲାନ୍"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "କାଟାଲାନ୍"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "କାନାଡିଆନ୍ ଇଁରାଜୀ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "କାଶ୍ମିରୀ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "କିରଗିଜ୍"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "କୀକୁୟୁ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "କୋରିଆନ୍"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "କ୍ରୋଆଟିଆନ୍"
+ },
+ "km": {
+ "code": "km",
+ "name": "ଖ୍ମେର୍"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ଗନ୍ଦା"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ଗାଲସିଆନ୍"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ଗୁଜୁରାଟୀ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ଗ୍ରୀକ୍"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ଗ୍ରୀନଲାଣ୍ଡିକ୍"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ଚାଇନୀଜ୍"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ଚେକ୍"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ଚେରୋକୀ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ଜର୍ଜିଆନ୍"
+ },
+ "de": {
+ "code": "de",
+ "name": "ଜର୍ମାନ୍"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ଜାପାନୀଜ୍"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ଜୁଲୁ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ଟୋଙ୍ଗା"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ଟ୍ରିଗିନିଆ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ଡଚ୍"
+ },
+ "da": {
+ "code": "da",
+ "name": "ଡାନ୍ନିସ୍"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ତାମିଲ୍"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ତିବେତାନ୍"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ତୁର୍କିସ୍"
+ },
+ "te": {
+ "code": "te",
+ "name": "ତେଲୁଗୁ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ଥାଇ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ନରୱେଜିଆନ୍ ବୋକମଲ୍"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ନିଚଳା ସର୍ବିଆନ୍"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ନେପାଳୀ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ନ୍ୟାନକୋଲ୍"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ପଞ୍ଜାବୀ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ପର୍ତ୍ତୁଗ୍ରୀଜ୍"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ପର୍ସିଆନ୍"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ପଶ୍ଚିମ ଫ୍ରିସିୟନ୍"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ପାରମ୍ପରିକ ଚାଇନୀଜ୍"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ପାସ୍ତୋ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ପୋଲିଶ୍"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ଫାରୋଏସେ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ଫିନ୍ନିସ୍"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ଫିଲିପିନୋ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ଫୁଲାହ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ଫ୍ରିୟୁଲୀୟାନ୍"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ଫ୍ରେଞ୍ଚ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ଫ୍ଲେମିଶ୍"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ବଙ୍ଗାଳୀ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ବର୍ମୀଜ୍"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ବାମ୍ବାରା"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ବାସା"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ବାସ୍କ୍ୱି"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ବୁଲଗେରିଆନ୍"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ବେନା"
+ },
+ "be": {
+ "code": "be",
+ "name": "ବେଲାରୁଷିଆନ୍"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ବ୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ବ୍ରିଟିଶ୍ ଇଁରାଜୀ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ବ୍ରେଟନ୍"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ଭାଇ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ଭିଏତନାମିଜ୍"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ଭୂଟାନୀ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ମଙ୍ଗୋଲିଆନ୍"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ମରାଠୀ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ମାକଡୋନିଆନ୍"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ମାନକ ଆରବିକ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ମାଲଟୀଜ୍"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ମାଲୟ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ମାଲାଗାସୀ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ମାଲାୟଲମ୍"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ମାସାଇ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ମୋଲଡୋଭିଆନ୍"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ୟୁ.ଏସ୍. ଇଁରାଜୀ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ୟୁକ୍ରାନିଆନ୍"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ୟୁଘୁର୍"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ୟୋରୁବା"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ରଷିଆନ୍"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ରୁଣ୍ଡି"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ରେହେଟୋ-ରୋମାନ୍ସ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ରୋମାନିଆନ୍"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ରୋମ୍ବୋ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ଲକ୍ସେମବର୍ଗିସ୍"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ଲାଓ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ଲାଟଭିଆନ୍"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ଲିଙ୍ଗାଲା"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ଲିଥୁଆନିଆନ୍"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ଲୁଓ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ଲ୍ୟୁବା-କାଟାଙ୍ଗା"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ୱେଲ୍ସ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ଶୋନା"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ସରଳିକରଣ ଚାଇନୀଜ୍"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ସର୍ବିଆନ୍"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ସାଙ୍ଗୋ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ସିଂହଳ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ସୋମାଲିଆ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ସ୍କଟିସ୍ ଗାଏଲିକ୍"
+ },
+ "es": {
+ "code": "es",
+ "name": "ସ୍ପାନିସ୍"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ସ୍ବିସ୍ ଜର୍ମାନ୍"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ସ୍ଲୋଭାକ୍"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ସ୍ଲୋଭେନିଆନ୍"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ସ୍ୱାହିଲ୍"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ସ୍ୱେଡିସ୍"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ହଙ୍ଗେରିଆନ୍"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ହିନ୍ଦୀ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ହେବ୍ର୍ୟୁ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ହୌସା"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pa.json b/library/intl/resources/language/pa.json
new file mode 100644
index 000000000..3ac1234ed
--- /dev/null
+++ b/library/intl/resources/language/pa.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ਉਇਗੁਰ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ਉਜ਼ਬੇਕ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ਉੱਤਰੀ ਸਾਮੀ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ਉੱਤਰੀ ਨਡੇਬੇਲੇ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ਉਰਦੂ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ਉੜੀਆ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ਅਸੂ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ਅਕਾਨ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ਅੰਗਰੇਜ਼ੀ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ਅਗੇਮ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨੀ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ਅੱਪਰ ਸੋਰਬੀਅਨ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ਅਫ਼ਰੀਕੀ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ਅਮਹਾਰਿਕ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ਅਰਬੀ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ਅਰਮੀਨੀਆਈ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ਅਲਬਾਨੀਆਈ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ਆਇਰੀ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ਆਈਸਲੈਂਡਿਕ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ਆਸਟਰੀਆਈ ਜਰਮਨ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ਆਸਟ੍ਰੇਲੀਆਈ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ਇਸਟੋਨੀਆਈ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ਇਸਪੇਰਾਂਟੋ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆਈ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ਇਤਾਲਵੀ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ਇੰਬੂ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ਈਵਈ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ਸਪੇਨੀ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ਸ਼ੰਬਾਲਾ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ਸਮਬੁਰੂ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ਸਰਬੀਆਈ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ਸਰਲ ਚੀਨੀ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ਸਲੋਵਾਕ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ਸਲੋਵੇਨੀਆਈ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ਸਵਾਹਿਲੀ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ਸਵਿਸ ਹਾਈ ਜਰਮਨ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ਸਵਿਸ ਜਰਮਨ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ਸਵਿਸ ਫਰਾਂਸੀਸੀ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ਸਵੀਡਿਸ਼"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ਸਾਂਗੋ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ਸਿੰਹਾਲਾ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ਸੇਂਗੋ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ਸੇਨਾ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ਸੋਗਾ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ਸ਼ੋਨਾ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ਸੋਮਾਲੀ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ਹੰਗਰੀਆਈ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ਹਿੰਦੀ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ਹਿਬਰੂ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ਹੌਸਾ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ਕਸ਼ਮੀਰੀ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ਕਜ਼ਾਖ਼"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ਕੰਨੜ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ਕੰਬਾ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ਕਬਾਇਲ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ਕਲਾਅੱਲੀਸੁਟ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ਕਲੇਜਿਨ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ਕਵਾਸਿਓ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ਕ੍ਰੋਏਸ਼ਿਆਈ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ਕਾਂਗੋ ਸਵਾਹਿਲੀ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ਕਾਬੁਵੇਰਦਿਆਨੂ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ਕਿਕੂਯੂ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ਕਿਰਗੀਜ਼"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ਕੈਟਾਲਾਨ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ਕੈਨੇਡੀਅਨ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ਕੋਯਰਾ ਚੀਨੀ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ਕੋਰੀਆਈ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ਖਮੇਰ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ਗਾਂਡਾ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ਗੁਸੀ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ਗੁਜਰਾਤੀ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ਗੈਲਿਸ਼ਿਅਨ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ਚੀਗਾ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ਚੀਨੀ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ਚੇਰੋਕੀ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ਚੈਕ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ਜਪਾਨੀ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ਜਰਮਨ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ਜਾਰਜੀਆਈ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ਜ਼ਾਰਮਾ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ਜ਼ੁਲੂ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ਜ਼ੋਂਗਖਾ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ਜੋਲਾ-ਫੋਇਨੀ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ਟਚੇਲਹਿਟ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ਟੇਸੋ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ਟੇਟਾ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ਟੌਂਗਨ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ਡੱਚ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ਡੈਨਿਸ਼"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ਤਮਿਲ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ਤਾਸਾਵਿਕ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ਤਿਗ੍ਰੀਨਿਆ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ਤਿੱਬਤੀ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ਤੁਰਕੀ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ਤੇਲਗੂ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ਥਾਈ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ਨਗੋਂਬਾ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ਨਾਮਾ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ਨਿਆਂਕੋਲੇ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ਨੁਏਰ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ਨੇਪਾਲੀ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ਪਸ਼ਤੋ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ਪੰਜਾਬੀ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ਪੁਰਤਗਾਲੀ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ਪੋਲੈਂਡੀ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ਫਰਾਂਸੀਸੀ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ਫਲੈਮਿਸ਼"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ਫ਼ਾਰਸੀ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ਫਿਨਿਸ਼"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ਫਿਲੀਪਿਨੋ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ਫ਼ੇਰੋਸੇ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ਬੰਗਾਲੀ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ਬਫ਼ੀਆ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ਬੰਬਾਰਾ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ਬਰਤਾਨਵੀ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ਬਰਮੀ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ਬਰੇਟਨ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ਬ੍ਰਾਜ਼ੀਲੀਆਈ ਪੁਰਤਗਾਲੀ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ਬਾਸਕ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ਬੁਲਗਾਰੀਆਈ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ਬੇਨਾ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ਬੇਲਾਰੂਸੀ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ਬੋਸਨੀਆਈ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ਬੋਡੋ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ਮਸਾਈ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ਮਕੋਂਡ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ਮਖੋਵਾ-ਮਿੱਟੋ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ਮੰਗੋਲੀਅਨ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ਮਚਾਮੇ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ਮੱਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ਮਰਾਠੀ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ਮਲਯ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ਮਲਿਆਲਮ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ਮਾਲਟੀਜ਼"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ਮੁੰਡੇਂਗ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ਮੇਰੂ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ਮੇਲੇਗਸੀ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ਮੈਕਡੋਨੀਆਈ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ਮੋਰੀਸਿਅਨ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ਮੋਲਡਾਵੀਆਈ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ਯੂਕਰੇਨੀਆਈ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ਯੂਨਾਨੀ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ਯੂਰਪੀ ਸਪੇਨੀ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ਯੂਰਪੀ ਪੁਰਤਗਾਲੀ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ਯੋਰੂਬਾ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ਰਵਾ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ਰਵਾਇਤੀ ਚੀਨੀ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ਰੁੰਡੀ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ਰੂਸੀ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ਰੋਮਬੋ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ਰੋਮਾਂਸ਼"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ਰੋਮਾਨੀਆਈ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ਲਕਜ਼ਮਬਰਗਿਸ਼"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ਲੰਗਾਈ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ਲਾਓ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ਲਾਟਵਿਅਨ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ਲਿੰਗਾਲਾ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ਲਿਥੁਆਨੀਅਨ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ਲੂਓ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ਲੂਈਆ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ਲੂਬਾ-ਕਾਟਾਂਗਾ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ਲੋਅਰ ਸੋਰਬੀਅਨ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ਵਾਈ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ਵੀਅਤਨਾਮੀ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ਵੂੰਜੋ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ਵੈਲਜ਼"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pl.json b/library/intl/resources/language/pl.json
new file mode 100644
index 000000000..c6e69a00f
--- /dev/null
+++ b/library/intl/resources/language/pl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albański"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerykański angielski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "en": {
+ "code": "en",
+ "name": "angielski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturyjski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ateso"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australijski angielski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austriacki niemiecki"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "białoruski"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmański"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bośniacki"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazylijski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoński"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brytyjski angielski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bułgarski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnomarokański tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chiński"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chiński (tradycyjny)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chiński (uproszczony)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwacki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "czeski"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "czirokeski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnołużycki"
+ },
+ "da": {
+ "code": "da",
+ "name": "duński"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "dżerma"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoński"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europejski hiszpański"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europejski portugalski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farerski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fiński"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandzki (Belgia)"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicyjski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "górnołużycki"
+ },
+ "el": {
+ "code": "el",
+ "name": "grecki"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandzki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruziński"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudźaracki"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "gwara kolońska"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrajski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "hiszpański"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezyjski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandzki"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandzki"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoński"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylski"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadyjski angielski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadyjski francuski"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaszmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "kataloński"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachski"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmerski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongijski suahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreański"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "kreolski Mauritiusa"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kreolski Wysp Zielonego Przylądka"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotański"
+ },
+ "se": {
+ "code": "se",
+ "name": "lapoński północny"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litewski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburski"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "łotewski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoński"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaski"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltański"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksykański hiszpański"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "mołdawski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele północny"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombe"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ngumba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "niderlandzki"
+ },
+ "de": {
+ "code": "de",
+ "name": "niemiecki"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norweski (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norweski (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ormiański"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paszto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendżabski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromański"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rosyjski"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumuński"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbski"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowacki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słoweński"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalijski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "si": {
+ "code": "si",
+ "name": "syngaleski"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "szkocki gaelicki"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "szona"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "szwajcarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "szwajcarski niemiecki"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "szwedzki"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turecki"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tybetański"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraiński"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbecki"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "wai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walijski"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "węgierski"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "wietnamski"
+ },
+ "it": {
+ "code": "it",
+ "name": "włoski"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "współczesny arabski"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "wysokoniemiecki (Szwajcaria)"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zachodniofryzyjski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ps.json b/library/intl/resources/language/ps.json
new file mode 100644
index 000000000..1b5b5804d
--- /dev/null
+++ b/library/intl/resources/language/ps.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "az": {
+ "code": "az",
+ "name": "أذربائجاني"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمني"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکي"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "af": {
+ "code": "af",
+ "name": "افريکاني"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الباني"
+ },
+ "de": {
+ "code": "de",
+ "name": "الماني"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهاري"
+ },
+ "id": {
+ "code": "id",
+ "name": "انډونېشيايي"
+ },
+ "en": {
+ "code": "en",
+ "name": "انګلیسي"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوريا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکرانايي"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اويگور"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایټالوي"
+ },
+ "is": {
+ "code": "is",
+ "name": "أيسلېنډي"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ائيرلېنډي"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکي"
+ },
+ "br": {
+ "code": "br",
+ "name": "برېتون"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاري"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنګالي"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسني"
+ },
+ "be": {
+ "code": "be",
+ "name": "بېلاروسي"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتگال (برازيل)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتګالي (پرتګال)"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پښتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابي"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پورتګالي"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولنډي"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامل"
+ },
+ "th": {
+ "code": "th",
+ "name": "تايلېنډي"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکي"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "تګالوګ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تيګريني"
+ },
+ "te": {
+ "code": "te",
+ "name": "تېليګو"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جورجيائي"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چېک"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چیني"
+ },
+ "et": {
+ "code": "et",
+ "name": "حبشي"
+ },
+ "da": {
+ "code": "da",
+ "name": "ډېنش"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسي"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "روماني"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سربيائي"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاټلېنډي ګېلک"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواکي"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلوواني"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواهېلي"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالي"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویډنی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سينهالي"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبري"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربي"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "فارسي"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فاروئې"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فرانسوي"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "فريزي"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فینلنډي"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کټلاني"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرګيز"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروواتي"
+ },
+ "km": {
+ "code": "km",
+ "name": "کمبوډيايې يا د کمبوډيا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کنأډه"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوريائي"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ګجراتي"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ګلېشيايي"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لويتين"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ليتواني"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لېټواني"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالايالم"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالټايي"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراټهي"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغولي"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدوني"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ملایا"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملغاسي"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ناروېئي (نائنورسک)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نېپالي"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هالېنډي"
+ },
+ "es": {
+ "code": "es",
+ "name": "هسپانوي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندي"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "هنګري"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "وېتنامي"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ويلشي"
+ },
+ "el": {
+ "code": "el",
+ "name": "یوناني"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-AO.json b/library/intl/resources/language/pt-AO.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-AO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-CV.json b/library/intl/resources/language/pt-CV.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-CV.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-GW.json b/library/intl/resources/language/pt-GW.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-GW.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-MO.json b/library/intl/resources/language/pt-MO.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-MO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-MZ.json b/library/intl/resources/language/pt-MZ.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-MZ.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-PT.json b/library/intl/resources/language/pt-PT.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-PT.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-ST.json b/library/intl/resources/language/pt-ST.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-ST.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-TL.json b/library/intl/resources/language/pt-TL.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-TL.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt.json b/library/intl/resources/language/pt.json
new file mode 100644
index 000000000..b8bfcaf8f
--- /dev/null
+++ b/library/intl/resources/language/pt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africâner"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armênio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål norueguês"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarês"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol mexicano"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniano"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísio ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauçá"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "híndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadense"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedônio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk norueguês"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonês"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sérvio baixo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorábio superior"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight marroquino padrão"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tcheco"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganês"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rm.json b/library/intl/resources/language/rm.json
new file mode 100644
index 000000000..6053a5abd
--- /dev/null
+++ b/library/intl/resources/language/rm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "am": {
+ "code": "am",
+ "name": "amaric"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armen"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbeidschanic"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "aut sorb"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bass sorb"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengal"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloruss"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniac"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgar"
+ },
+ "km": {
+ "code": "km",
+ "name": "cambodschan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "casac"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinais"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinais simplifitgà"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinais tradiziunal"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "corean"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danais"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraic"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "englais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "englais american"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "englais australian"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "englais britannic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "englais canadais"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferrais"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandais"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flam"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franzos"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franzos canadais"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franzos svizzer"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fris"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelic scot"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "giapunais"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonais"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kimric"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghis"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laot"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituan"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgais"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedon"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaic"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldav"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolic"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele dal nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegais bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegiais nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ollandais"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paschto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polac"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brasilian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais iberian"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rumantsch"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami dal nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalais"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnol iberic"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnol mexican"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedais"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandais"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "talian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tirc"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tschec"
+ },
+ "de": {
+ "code": "de",
+ "name": "tudestg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "tudestg austriac"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "tudestg svizzer"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucranais"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguric"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarais"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbec"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamais"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rn.json b/library/intl/resources/language/rn.json
new file mode 100644
index 000000000..02fde6fc1
--- /dev/null
+++ b/library/intl/resources/language/rn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Icarabu"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "es": {
+ "code": "es",
+ "name": "Icesipanyolo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Icongereza"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Igiceke"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Igifaransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Igihawusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Igihindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Igiholandi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Igikambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Igikani"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Igiperisi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Igiporutugari"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Igipunjabi"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Igishinwa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Igisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Igisuweduwa"
+ },
+ "it": {
+ "code": "it",
+ "name": "Igitaliyani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Igitamili"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Igiturukiya"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ikibelarusiya"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ikibengali"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ikidage"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ikigereki"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ikimuhariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ikinepali"
+ },
+ "my": {
+ "code": "my",
+ "name": "Ikinyabirimaniya"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ikinyabuligariya"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ikinyahongiriya"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ikinyakoreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ikinyamaleziya"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ikinyapolonye"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ikinyarumaniya"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ikinyatayilandi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ikinyaviyetinamu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ikinyayukereni"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ikinyendoziya"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Ikirundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ikirusiya"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ikiyapani"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ikiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Ikizulu"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Inyeyurudu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ro.json b/library/intl/resources/language/ro.json
new file mode 100644
index 000000000..32fde8f18
--- /dev/null
+++ b/library/intl/resources/language/ro.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaneză"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharică"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabă"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabă standard modernă"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeană"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiană"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeră"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "bască"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengaleză"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusă"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmaneză"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniacă"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonă"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgară"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cașmiră"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalană"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cehă"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chineză"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chineză simplificată"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chineză tradițională"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreeană"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croată"
+ },
+ "da": {
+ "code": "da",
+ "name": "daneză"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraică"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleză"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "engleză americană"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "engleză australiană"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "engleză britanică"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "engleză canadiană"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniană"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroeză"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipineză"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandeză"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandă"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franceză"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franceză canadiană"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franceză elvețiană"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulană"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizonă occidentală"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelică scoțiană"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galeză"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciană"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiană"
+ },
+ "de": {
+ "code": "de",
+ "name": "germană"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "germană austriacă"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "germană elvețiană"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "germană standard elvețiană"
+ },
+ "el": {
+ "code": "el",
+ "name": "greacă"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneziană"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandeză"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandeză"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiană"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoneză"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazahă"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kârgâză"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeră"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoțiană"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonă"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaniană"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgheză"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoneană"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maghiară"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaeză"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgașă"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteză"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovenească"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolă"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele de nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaleză"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegiană bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegiană nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandeză"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paștună"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persană"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloneză"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugheză"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugheză braziliană"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugheză europeană"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanșă"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "română"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusă"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami de nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sârbă"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhaleză"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovacă"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenă"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaleză"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorabă de jos"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorabă de sus"
+ },
+ "es": {
+ "code": "es",
+ "name": "spaniolă"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spaniolă europeană"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spaniolă mexicană"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedeză"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight central marocană"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight standard marocană"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilă"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandeză"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetană"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrină"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turcă"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraineană"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigură"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbecă"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnameză"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rof.json b/library/intl/resources/language/rof.json
new file mode 100644
index 000000000..3243b9f57
--- /dev/null
+++ b/library/intl/resources/language/rof.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kihorombo"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ru.json b/library/intl/resources/language/ru.json
new file mode 100644
index 000000000..e13e3a027
--- /dev/null
+++ b/library/intl/resources/language/ru.json
@@ -0,0 +1,738 @@
+{
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "австралийский английский"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "австрийский немецкий"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агхем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанский"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанский"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американский английский"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарский"
+ },
+ "en": {
+ "code": "en",
+ "name": "английский"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабский"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "арабский литературный"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армянский"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аса"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астурийский"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанс"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбарийский"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскский"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафия"
+ },
+ "be": {
+ "code": "be",
+ "name": "белорусский"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальский"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирманский"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарский"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боснийский"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "бразильский португальский"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонский"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британский английский"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "валисский"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлийский"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгерский"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "верхнелужицкий"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнамский"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галисийский"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландский"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "гренландский"
+ },
+ "el": {
+ "code": "el",
+ "name": "греческий"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинский"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гусии"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "гэльский"
+ },
+ "da": {
+ "code": "da",
+ "name": "датский"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-кэ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "дьола-фоньи"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "европейский испанский"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "европейский португальский"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западно-фризский"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезийский"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландский"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландский"
+ },
+ "es": {
+ "code": "es",
+ "name": "испанский"
+ },
+ "it": {
+ "code": "it",
+ "name": "итальянский"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабильский"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердьяну"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахский"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадский английский"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадский французский"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталанский"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмири"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квасио"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "кёльш"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйю"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизский"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайский"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо сенни"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конголезский суахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейский"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерский"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаосский"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышский"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовский"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо (Кения и Танзания)"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухья"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембургский"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "маврикийский креольский"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонский"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа-меетто"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагасийский"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайский"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаялам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтийский"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхи"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масаи"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавский"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгольский"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немецкий"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальский"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "нижнелужицкий"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежский букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежский нюнорск"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуэр"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ньянколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "ория"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджаби"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "персидский"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польский"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португальский"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романшский"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руанда"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынский"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "русский"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "se": {
+ "code": "se",
+ "name": "северносаамский"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "северный ндебели"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "сербский"
+ },
+ "si": {
+ "code": "si",
+ "name": "сингальский"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словацкий"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словенский"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомали"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "среднеатласский тамазигхтский"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахили"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайский"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "тамазигхтский"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамильский"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тахелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетский"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигринья"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонганский"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционный китайский"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турецкий"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекский"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурский"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинский"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "упрощенный китайский"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарерский"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппинский"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финский"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандский"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французский"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриульский"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватский"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешский"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведский"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцарский верхненемецкий"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцарский немецкий"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцарский французский"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "эве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "эвондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "эмбу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "эсперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "эстонский"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "янбан"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "японский"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rwk.json b/library/intl/resources/language/rwk.json
new file mode 100644
index 000000000..446b55ff9
--- /dev/null
+++ b/library/intl/resources/language/rwk.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Kiruwa"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/saq.json b/library/intl/resources/language/saq.json
new file mode 100644
index 000000000..aadbac26d
--- /dev/null
+++ b/library/intl/resources/language/saq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Kisampur"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sbp.json b/library/intl/resources/language/sbp.json
new file mode 100644
index 000000000..2ad554ffd
--- /dev/null
+++ b/library/intl/resources/language/sbp.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ishiajemi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ishibangila"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ishibelalusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ishibulugalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Ishibuluma"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ishifalansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ishigiliki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ishihawusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ishihindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ishihindonesia"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ishihisipaniya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ishihitaliyano"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ishiholansi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ishihungali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ishijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ishijelumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ishikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ishikoleya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Ishileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ishilomaniya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ishilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ishimalesiya"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ishinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ishingelesa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ishipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Ishipunjabi"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ishisangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ishisheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ishishina"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ishisomali"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Ishisulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Ishiswidi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Ishitamili"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ishitayilandi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ishituluki"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ishivietinamu"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ishiwuludi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ishiyakani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Ishiyalabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ishiyamuhali"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ishiyoluba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ishiyukilaniya"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/se-FI.json b/library/intl/resources/language/se-FI.json
new file mode 100644
index 000000000..365f39185
--- /dev/null
+++ b/library/intl/resources/language/se-FI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánsagiella"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánagiella"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "álkes kiinnágiella"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerihkálaš eaŋgalsgiella"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arábagiella"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "árbevirolaš kiinnágiella"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenagiella"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagiella"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "austrálialaš eaŋgalsgiella"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "belgialaš hollánddagiella"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalagiella"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagiella"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasilialaš portugálagiella"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonagiella"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brihttalaš eaŋgalsgiella"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgáriagiella"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagiella"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čeahkagiella"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánskkagiella"
+ },
+ "se": {
+ "code": "se",
+ "name": "davvisámegiella"
+ },
+ "de": {
+ "code": "de",
+ "name": "duiskkagiella"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "durkagiella"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagiella"
+ },
+ "en": {
+ "code": "en",
+ "name": "eaŋgalsgiella"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espánjalaš spánskkagiella"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "esttegiella"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fearagiella"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippiinnagiella"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fránskkagiella"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiagiella"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "girjedárogiella"
+ },
+ "el": {
+ "code": "el",
+ "name": "greikkagiella"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratagiella"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussagiella"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigiella"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollánddagiella"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iirragiella"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagiella"
+ },
+ "is": {
+ "code": "is",
+ "name": "islánddagiella"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliagiella"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japánagiella"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambožagiella"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanádalaš eaŋgalsgiella"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanádalaš fránskkagiella"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánagiella"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhgiella"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiinnágiella"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagiella"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroátiagiella"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymragiella"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogiella"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "látviagiella"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettuvagiella"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburggagiella"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagiella"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagiella"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikolaš spánskkagiella"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávialaš romániagiella"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagiella"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalagiella"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "nuortariikkalaš duiskkagiella"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "oarjifriisagiella"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ođđadárogiella"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabagiella"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijagiella"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskkagiella"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugálagiella"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugálalaš portugálagiella"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romániagiella"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanšgiella"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruoššagiella"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruoŧagiella"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagiella"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovákiagiella"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenagiella"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spánskkagiella"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "standárda arábagiella"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomagiella"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "šveicalaš duiskkagiella"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šveicalaš fránskkagiella"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaigiella"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagiella"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainagiella"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungárgiella"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugiella"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamagiella"
+ },
+ "be": {
+ "code": "be",
+ "name": "vilgesruoššagiella"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/se.json b/library/intl/resources/language/se.json
new file mode 100644
index 000000000..f12ea34fc
--- /dev/null
+++ b/library/intl/resources/language/se.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánsagiella"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánagiella"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "álki kiinágiella"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arábagiella"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "árbevirolaš kiinnágiella"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeenagiella"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagiella"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalgiella"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagiella"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonagiella"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgáriagiella"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagiella"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čeahkagiella"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánskkagiella"
+ },
+ "se": {
+ "code": "se",
+ "name": "davvisámegiella"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "duiskkagiella"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "durkagiella"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagiella"
+ },
+ "en": {
+ "code": "en",
+ "name": "eaŋgalsgiella"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "esttegiella"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fearagiella"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippiinnagiella"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fránskkagiella"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiagiella"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "girjedárogiella"
+ },
+ "el": {
+ "code": "el",
+ "name": "greikkagiella"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratagiella"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussagiella"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigiella"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollánddagiella"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iirragiella"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagiella"
+ },
+ "is": {
+ "code": "is",
+ "name": "islánddagiella"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliagiella"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japánagiella"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodiagiella"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánagiella"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakgiella"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiinnágiella"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagiella"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroátiagiella"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymragiella"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogiella"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "látviagiella"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettuvagiella"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburggagiella"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagiella"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagiella"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagiella"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaligiella"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "oarjifriisagiella"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ođđadárogiella"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabigiella"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijagiella"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskkagiella"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugálagiella"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romániagiella"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanšgiella"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruoššagiella"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruoŧagiella"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagiella"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovákiagiella"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenagiella"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spánskkagiella"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomagiella"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagiella"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "th": {
+ "code": "th",
+ "name": "ŧaigiella"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainagiella"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungárgiella"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugiella"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamgiella"
+ },
+ "be": {
+ "code": "be",
+ "name": "vilges-ruoššagiella"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/seh.json b/library/intl/resources/language/seh.json
new file mode 100644
index 000000000..1f6f598ed
--- /dev/null
+++ b/library/intl/resources/language/seh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielo-russo"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "iorubá"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalês"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonês"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tcheco"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ses.json b/library/intl/resources/language/ses.json
new file mode 100644
index 000000000..ba4758f12
--- /dev/null
+++ b/library/intl/resources/language/ses.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sg.json b/library/intl/resources/language/sg.json
new file mode 100644
index 000000000..03350d6f4
--- /dev/null
+++ b/library/intl/resources/language/sg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akâan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarîki"
+ },
+ "en": {
+ "code": "en",
+ "name": "Anglëe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arâbo"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengäli"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bielörûsi"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulugäri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ênnde"
+ },
+ "id": {
+ "code": "id",
+ "name": "Enndonezïi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espanyöl"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Farânzi"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsî"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gerêki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haüsä"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hîndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandëe"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongruäa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmêre"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreyëen"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malëe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Miamära, Birimäni"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalëe"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Penzäbï"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonëe"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugëe, Pûra"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumëen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rûsi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sängö"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Shinuäa"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalïi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sueduäa"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tämûli"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thâi"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tûrûku"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tyêki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrêni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ûrdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnäm"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "de": {
+ "code": "de",
+ "name": "Zâmani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Zaponëe"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zûlu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/shi-Latn.json b/library/intl/resources/language/shi-Latn.json
new file mode 100644
index 000000000..c2f2295af
--- /dev/null
+++ b/library/intl/resources/language/shi-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "be": {
+ "code": "be",
+ "name": "tabilarust"
+ },
+ "my": {
+ "code": "my",
+ "name": "tabirmanit"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "tablɣarit"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "tabnɣalit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "tabnjabit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "tabṛṭqizt"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "tabulunit"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "tacinwit"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "taɛrabt"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "tafitnamit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "tafransist"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "tafursit"
+ },
+ "el": {
+ "code": "el",
+ "name": "tagrigit"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "tahawsat"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "tahindit"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "tahnɣarit"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "tahulandit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "tajabbunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "takant"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "talimant"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "tamalawit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tamazight"
+ },
+ "am": {
+ "code": "am",
+ "name": "tamharit"
+ },
+ "id": {
+ "code": "id",
+ "name": "tandunisit"
+ },
+ "en": {
+ "code": "en",
+ "name": "tanglizt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "tanibalit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "tarumanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "tasbnyulit"
+ },
+ "so": {
+ "code": "so",
+ "name": "tasumalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "taṭalyant"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tatamilt"
+ },
+ "th": {
+ "code": "th",
+ "name": "tataylandit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tatcikit"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "taturkit"
+ },
+ "km": {
+ "code": "km",
+ "name": "taxmirt"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "tayrubat"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "tazulut"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/shi.json b/library/intl/resources/language/shi.json
new file mode 100644
index 000000000..a20ffce0c
--- /dev/null
+++ b/library/intl/resources/language/shi.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ⵜⴰⴱⵉⵔⵎⴰⵏⵉⵜ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ⵜⴰⴱⵍⵖⴰⵔⵉⵜ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ⵜⴰⴱⵏⵊⴰⴱⵉⵜ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ⵜⴰⴱⵏⵖⴰⵍⵉⵜ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ⵜⴰⴱⵓⵍⵓⵏⵉⵜ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ⵜⴰⴱⵕⵟⵇⵉⵣⵜ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ⵜⴰⴳⵔⵉⴳⵉⵜ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ⵜⴰⴼⵓⵔⵙⵉⵜ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ⵜⴰⴽⴰⵏⵜ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ⵜⴰⴽⵓⵔⵉⵜ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ⵜⴰⵀⴰⵡⵙⴰⵜ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ⵜⴰⵀⵉⵏⴷⵉⵜ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ⵜⴰⵀⵏⵖⴰⵔⵉⵜ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ⵜⴰⵄⵔⴰⴱⵜ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ⵜⴰⵅⵎⵉⵔⵜ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ⵜⴰⵍⵉⵎⴰⵏⵜ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ⵜⴰⵎⴰⵍⴰⵡⵉⵜ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ⵜⴰⵎⴰⵣⵉⵖⵜ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ⵜⴰⵎⵀⴰⵔⵉⵜ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ⵜⴰⵏⴳⵍⵉⵣⵜ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ⵜⴰⵏⴷⵓⵏⵉⵙⵉⵜ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ⵜⴰⵏⵉⴱⴰⵍⵉⵜ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ⵜⴰⵔⵓⵎⴰⵏⵉⵜ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ⵜⴰⵔⵓⵙⵉⵜ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ⵜⴰⵙⵓⵎⴰⵍⵉⵜ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ⵜⴰⵙⵡⵉⴷⵉⵜ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ⵜⴰⵛⵉⵏⵡⵉⵜ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ⵜⴰⵜⴰⵎⵉⵍⵜ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ⵜⴰⵜⵓⵔⴽⵉⵜ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ⵜⴰⵟⴰⵍⵢⴰⵏⵜ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ⵜⴰⵢⵔⵓⴱⴰⵜ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ⵜⴰⵣⵓⵍⵓⵜ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ⵜⵓⴽⵔⴰⵏⵉⵜ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ⵜⵓⵔⴷⵓⵜ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/si.json b/library/intl/resources/language/si.json
new file mode 100644
index 000000000..c0967dadd
--- /dev/null
+++ b/library/intl/resources/language/si.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "අකාන්"
+ },
+ "af": {
+ "code": "af",
+ "name": "අප්‍රිකානු"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "අයර්ලන්ත"
+ },
+ "is": {
+ "code": "is",
+ "name": "අයිස්ලන්ත"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "අරාබි"
+ },
+ "az": {
+ "code": "az",
+ "name": "අසර්බයිජාන්"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "අසු"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ආර්මේනියානු"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ඇගම්"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ඇමෙරිකානු ඉංග්‍රීසි"
+ },
+ "am": {
+ "code": "am",
+ "name": "ඇම්හාරික්"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ඇල්බේනියානු"
+ },
+ "en": {
+ "code": "en",
+ "name": "ඉංග්‍රීසි"
+ },
+ "it": {
+ "code": "it",
+ "name": "ඉතාලි"
+ },
+ "id": {
+ "code": "id",
+ "name": "ඉන්දුනීසියානු"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ඉව්"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ඉහළ සෝබියානු"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "උතුරු එන්ඩිබෙලෙ"
+ },
+ "se": {
+ "code": "se",
+ "name": "උතුරු සාමි"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "උයිගර්"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "උර්දු"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "උස්බෙක්"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "එම්බු"
+ },
+ "et": {
+ "code": "et",
+ "name": "එස්තෝනියානු"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "එස්පැරන්ටෝ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ඔරියා"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ඔස්ට්‍රියානු ජර්මන්"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ඕස්ට්‍රේලියානු ඉංග්‍රීසි"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "කණ්ණඩ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "කබුවෙර්ඩියානෝ"
+ },
+ "km": {
+ "code": "km",
+ "name": "කමර්"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "කලාලිසට්"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "කලෙන්ජන්"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "කසාඛ්"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "කාෂ්මීර්"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "කැටලන්"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "කැනේඩියානු ඉංග්‍රීසි"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "කැනේඩියානු ප්‍රංශ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "කැබලා"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "කැම්බා"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "කිකුයු"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "කිර්ගිස්"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "කුවාසිඔ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "කොන්ගෝ ස්වාහිලි"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "කොයිරා චිනි"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "කොරියානු"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "කෝයිරාබොරො සෙන්නි"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ක්‍රෝයේශියානු"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ගන්ඩා"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ගැලීසියානු"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ගුජරාටි"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ගුසී"
+ },
+ "el": {
+ "code": "el",
+ "name": "ග්‍රීක"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "චිගා"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "චීන"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "චෙත්"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "චෙරොකී"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ජන්ජාබි"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ජපන්"
+ },
+ "de": {
+ "code": "de",
+ "name": "ජර්මන්"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ජොල-ෆෝනියි"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ජෝර්ජියානු"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ටචේල්හිට්"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ටයිටා"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ටසවාක්"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ටිග්‍රින්යා"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ටිබෙට්"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ටෙසෝ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ටොංගා"
+ },
+ "da": {
+ "code": "da",
+ "name": "ඩැනිශ්"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ඩිසොන්කා"
+ },
+ "th": {
+ "code": "th",
+ "name": "තායි"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "තුර්කි"
+ },
+ "te": {
+ "code": "te",
+ "name": "තෙළිඟු"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "දෙමළ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "නයන්කොළේ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "නවීන සම්මත අරාබි"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "නාමා"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "නේපාල"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "නොම්බා"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "නොයර්"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "නොවේර්ජියානු නයිනෝර්ස්ක්"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "නෝවේජියානු බොක්මාල්"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "පර්සියානු"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "පෂ්ටො"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "පහළ සෝබියානු"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "පිලිපීන"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "පෘතුගීසි"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "පෝලන්ත"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ප්‍රංශ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "බටහිර ෆ්‍රිසියානු"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "බම්බරා"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "බල්ගේරියානු"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "බාෆියා"
+ },
+ "my": {
+ "code": "my",
+ "name": "බුරුම"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "බෙංගාලි"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "බෙනා"
+ },
+ "be": {
+ "code": "be",
+ "name": "බෙලරුසියානු"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "බොඩො"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "බොස්කෝ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "බොස්නියානු"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "බ්‍රසීල පෘතුගීසි"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "බ්‍රිතාන්‍ය ඉංග්‍රීසි"
+ },
+ "br": {
+ "code": "br",
+ "name": "බ්‍රේටොන්"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "මඛුවා-මීටෝ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "මධ්‍යම ඇට්ලස් ටමසිට්"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "මරාති"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "මලගාසි"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "මලයාලම්"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "මසායි"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "මැකාමී"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "මැකොන්ඩ්"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "මැලේ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "මැසිඩෝනියානු"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "මුන්ඩන්"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "මෙක්සිකානු ස්පාඤ්ඤ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "මෙරු"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "මොංගෝලියානු"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "මොරිස්යෙම්"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "මොල්ටිස්"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "යුක්රේනියානු"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "යුරෝපීය පෘතුගීසි"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "යුරෝපීය ස්පාඤ්ඤ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "යොරූබා"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "රුන්ඩි"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "රුසියානු"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "රොමෑන්ශ්"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "රොමේනියානු"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "රෝම්බෝ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ර්වා"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ලංගි"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ලක්සැම්බර්ග්"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ලන්දේසි"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ලාඕ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ලැට්වියානු"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ලිතුවේනියානු"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ලින්ගලා"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ලු"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ලුඔ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ලුයියා"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "වයි"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "වියට්නාම්"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "වුන්ජෝ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "වේල්ස්"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ශාම්බලා"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ශෝනා"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "සංගු"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "සන්ග්‍රෝ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "සම්බුරු"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "සම්මත මොරොක්කෝ ටමසිග්ත්"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "සර්බියානු"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "සාම්ප්‍රදායික චීන"
+ },
+ "si": {
+ "code": "si",
+ "name": "සිංහල"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "සුලු"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "සුළුකළ චීන"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "සෙනා"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "සොගා"
+ },
+ "so": {
+ "code": "so",
+ "name": "සෝමාලි"
+ },
+ "es": {
+ "code": "es",
+ "name": "ස්පාඤ්ඤ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ස්ලෝවැක්"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ස්ලෝවේනියානු"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ස්වාහිලි"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ස්විස් උසස් ජර්මන්"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ස්විස් ජර්මනි"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ස්විස් ප්‍රංශ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ස්වීඩන්"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "හන්ගේරියානු"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "හින්දි"
+ },
+ "he": {
+ "code": "he",
+ "name": "හීබෲ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "හෝසා"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ෆර්මා"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ෆාරෝස්"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ෆින්ලන්ත"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ෆ්ලෙමිශ්"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sk.json b/library/intl/resources/language/sk.json
new file mode 100644
index 000000000..a984c3e31
--- /dev/null
+++ b/library/intl/resources/language/sk.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánčina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akančina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánčina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharčina"
+ },
+ "en": {
+ "code": "en",
+ "name": "angličtina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angličtina (americká)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "angličtina (austrálska)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "angličtina (britská)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "angličtina (kanadská)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabčina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabčina (moderná štandardná)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménčina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astúrčina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžančina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarčina"
+ },
+ "my": {
+ "code": "my",
+ "name": "barmčina"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskičtina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengálčina"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloruština"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniačtina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretónčina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulharčina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čerokí"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "čeština"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "čínština"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "čínština (tradičná)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "čínština (zjednodušená)"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánčina"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnolužická srbčina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkä"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónčina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faerčina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipínčina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fínčina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flámčina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francúzština"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francúzština (kanadská)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francúzština (švajčiarska)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulčina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbčina"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galícijčina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandčina"
+ },
+ "el": {
+ "code": "el",
+ "name": "gréčtina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grónčina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzínčina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarátčina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauština"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejčina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindčina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandčina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornolužická srbčina"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorvátčina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonézština"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írčina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandčina"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japončina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubčina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylčina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadčina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdčina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmírčina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánčina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaština"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmérčina"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujčina"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizština"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundčina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolínčina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kórejčina"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoština"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalčina"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovčina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lotyština"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburčina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónčina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maďarčina"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálamčina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajčina"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaština"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltčina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maráthčina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajčina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mašame"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "maurícijská kreolčina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavčina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolčina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ňankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemčina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "nemčina (rakúska)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "nemčina (švajčiarska spisovná)"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "nemčina (švajčiarska)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepálčina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "nórsky bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nórsky nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžábčina"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštčina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzština"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poľština"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalčina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugalčina (brazílska)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalčina (európska)"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rétorománčina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunčina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruština"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severné ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "severné sami"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalčina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovenčina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovinčina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somálčina"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbčina"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilčina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahilčina (konžská)"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škótska gaelčina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šončina"
+ },
+ "es": {
+ "code": "es",
+ "name": "španielčina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "španielčina (európska)"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "španielčina (mexická)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švédčina"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "taliančina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamašek (stredomarocký)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamašek (štandardný marocký)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilčina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugčina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thajčina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetčina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriňa"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongčina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turečtina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurčina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinčina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdčina"
+ },
+ "or": {
+ "code": "or",
+ "name": "uríjčina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbečtina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamčina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "waleština"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walserčina"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "západná frízština"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "západná songhajčina"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluština"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sl.json b/library/intl/resources/language/sl.json
new file mode 100644
index 000000000..b76fd92a0
--- /dev/null
+++ b/library/intl/resources/language/sl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanščina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemščina"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanščina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanščina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharščina"
+ },
+ "en": {
+ "code": "en",
+ "name": "angleščina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "angleščina (VB)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angleščina (ZDA)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabščina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenščina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijščina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asujščina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "avstralska angleščina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "avstrijska nemščina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanščina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarščina"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskovščina"
+ },
+ "be": {
+ "code": "be",
+ "name": "beloruščina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benajščina"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalščina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodojščina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgarščina"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanščina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalščina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonščina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanščina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čerokeščina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "češčina"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "čigajščina"
+ },
+ "da": {
+ "code": "da",
+ "name": "danščina"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnja lužiška srbščina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonka"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embujščina"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonščina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evenščina"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondovščina"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferščina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinščina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finščina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamščina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francoščina"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizijščina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulščina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlanščina"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijščina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornja lužiška srbščina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandščina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grščina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzinščina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratščina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusijščina"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "havščina"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejščina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindujščina"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvaščina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "iberska portugalščina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberska španščina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijščina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irščina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandščina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanščina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonščina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonjiščina"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubščina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilščina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinščina"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambaščina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadska angleščina"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadska francoščina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmirščina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonščina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaščina"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "khoekhoe"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujščina"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiščina"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kitajščina"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerščina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "knjižna norveščina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejščina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langijščina"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoščina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvijščina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovščina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhijščina"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburščina"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mačamejščina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "madžarščina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonščina"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondščina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-meto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagaščina"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalamščina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajščina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteščina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratščina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajščina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavščina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolščina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisjenščina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemščina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "nemščina (Švica)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalščina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemščina"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novonorveščina"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerščina"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijščina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabščina"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunščina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijščina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "poenostavljena kitajščina"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljščina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalščina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanščina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romunščina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundščina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruščina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburščina"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangujščina"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severna ndebelščina"
+ },
+ "se": {
+ "code": "se",
+ "name": "severna samijščina"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalščina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaščina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenščina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "sodobna standardna arabščina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogščina"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalščina"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbščina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni maroški tamazig"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahili (Kongo)"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škotska gelščina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonščina"
+ },
+ "es": {
+ "code": "es",
+ "name": "španščina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedščina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "švicarska francoščina"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tahelitska berberščina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitajščina"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajščina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamašek (srednji atlas)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilščina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugijščina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanščina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrajščina"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongščina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradicionalna kitajščina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turščina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurščina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinščina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdujščina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeščina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vajščina"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valižanščina"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamščina"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "visoka nemščina (Švica)"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmajščina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortskootoška kreolščina"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulujščina"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sn.json b/library/intl/resources/language/sn.json
new file mode 100644
index 000000000..253341e8b
--- /dev/null
+++ b/library/intl/resources/language/sn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "chiAkani"
+ },
+ "am": {
+ "code": "am",
+ "name": "chiAmaric"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "chiArabu"
+ },
+ "be": {
+ "code": "be",
+ "name": "chiBelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "chiBengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "chiBulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "chiBurma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chiChinese"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "chiCzech"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "chiDutch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "chiFurenchi"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "el": {
+ "code": "el",
+ "name": "chiGreek"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "chiHausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "chiHindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "chiHungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "chiIndonesia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "chiJapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "chiJerimani"
+ },
+ "km": {
+ "code": "km",
+ "name": "chiKhema"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "chiKoria"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "chiMalay"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "chiNepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "chiPeshiya"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "chiPolish"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "chiPunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "chiPutukezi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "chiRashiya"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "chiRomanian"
+ },
+ "en": {
+ "code": "en",
+ "name": "Chirungu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "chiShona"
+ },
+ "so": {
+ "code": "so",
+ "name": "chiSomali"
+ },
+ "es": {
+ "code": "es",
+ "name": "chiSpanish"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "chiSwedish"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "chiTamil"
+ },
+ "it": {
+ "code": "it",
+ "name": "chiTariana"
+ },
+ "th": {
+ "code": "th",
+ "name": "chiThai"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "chiTurkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "chiUkrenia"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "chiUrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "chiVietnam"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "chiYoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "chiZulu"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/so.json b/library/intl/resources/language/so.json
new file mode 100644
index 000000000..a62759c15
--- /dev/null
+++ b/library/intl/resources/language/so.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaanays"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaaniyaan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeeniyaan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Axmaari"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ayrish"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ayslandays"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bangaali"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Bashtuu"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basquu"
+ },
+ "be": {
+ "code": "be",
+ "name": "Beleruusiyaan"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bereton"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Boolish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Boortaqiis"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Boortaqiis (Boortuqaal)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Boortaqiiska Baraasiil"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boosniya"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgeeriyaan"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Bunjaabi"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Carabi"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "he": {
+ "code": "he",
+ "name": "Cibri"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmarkays"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Faarisi"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Faransiis"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Faransiis (Iswiiserlaand)"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Farowsi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fiinlaandees"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Fiitnaamays"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Firiisiyan Galbeed"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiisiyaan"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Giriik"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujaraati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hangariyaan"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandays"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indunuusiyaan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingiriisi"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingiriisi (Boqortooyada Midowday)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingiriisi (Maraykan)"
+ },
+ "es": {
+ "code": "es",
+ "name": "Isbaanish"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Isbaanish (Isbayn)"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Isberento"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Iskot Giilik"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Islofeeniyaan"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Isloofaak"
+ },
+ "et": {
+ "code": "et",
+ "name": "Istooniyaan"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jabbaaniis"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jarmal"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jarmal (Iswiiserlaand)"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Jayniis"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Jeeg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Joorijiyaan"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kamboodhian"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannadays"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiis"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Koro’eeshiyaan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kuuriyaan"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laatfiyaan"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laothian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituwaanays"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Maarati"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaay"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltiis"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mangooli"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masadooniyaan"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nebaali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nowrwejiyan (naynoroski)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanka"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruush"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Sawaaxili"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Seerbiyaan"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhaleys"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Soomaali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swiidhis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taaylandays"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Tagalog"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "Talyaani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Teluugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "UIGHUR"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urduu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbakis"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruuba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Yukreeniyaan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zuulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sq.json b/library/intl/resources/language/sq.json
new file mode 100644
index 000000000..802db1180
--- /dev/null
+++ b/library/intl/resources/language/sq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanisht"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agemisht"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanisht"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarike"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglisht"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglishte amerikane"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglishte australiane"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglishte britanike"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglishte kanadeze"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisht"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabishte standarde moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenisht"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asuisht"
+ },
+ "az": {
+ "code": "az",
+ "name": "azere"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafianisht"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisht"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalisht"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanisht"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjellorusisht"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmalishte norvegjeze"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "boshnjakisht"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretone"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bullgarisht"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "çekisht"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "çeroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "çigisht"
+ },
+ "da": {
+ "code": "da",
+ "name": "danisht"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embuisht"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonisht"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroisht"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinase"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandisht"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamande"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "frëngjisht"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "frëngjishte kanadeze"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "frëngjishte zvicerane"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizianisht"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galike"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Galisht"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandisht"
+ },
+ "el": {
+ "code": "el",
+ "name": "greqisht"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusisht"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guxharatisht"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gjeorgjisht"
+ },
+ "de": {
+ "code": "de",
+ "name": "gjermanisht"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "gjermanishte austriake"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "gjermanishte zvicerane"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gjermanishte zvicerane (dialekti i Alpeve)"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausisht"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisht"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandisht"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungarisht"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "indishte"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezisht"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandezçe"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandisht"
+ },
+ "it": {
+ "code": "it",
+ "name": "italisht"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonisht"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubisht"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "juisht"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilisht"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianisht"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisute"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinisht"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambishte"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanade"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmire"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonisht"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakisht"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujuisht"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinezisht"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kinezishte e thjeshtuar"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kinezishte tradicionale"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizisht"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmere"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojraçinisht"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanisht"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisht"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kuasisht"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langisht"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosisht"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonisht"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalisht"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanisht"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Lubakatange"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujaisht"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburgase"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoisht"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maçamisht"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondisht"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuamito"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malageze"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalame"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajisht"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltisht"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "maqedonisht"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratisht"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaisht"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meruisht"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavishte"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolisht"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundagishte"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namaishte"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebelishte veriore"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalisht"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombisht"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "niankolisht"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ninorske norvegjeze"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "norisjene"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerisht"
+ },
+ "or": {
+ "code": "or",
+ "name": "orije"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panxhabe"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisht"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonisht"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalisht"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugalishte braziliane"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalishte evropiane"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "romboishte"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rome"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruaisht"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanisht"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundisht"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusisht"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburisht"
+ },
+ "se": {
+ "code": "se",
+ "name": "samishte veriore"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoisht"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguisht"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senaishte"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "senishte kojrabore"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisht"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhale"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "sllovakisht"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sllovenisht"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogisht"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalisht"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbiane e sipërme"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbishte e poshtme"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanjisht"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spanjishte evropiane"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanjishte meksikane"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahilisht"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahilishte kongoje"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedisht"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalisht"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonisht"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "shqip"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taçelit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitisht"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandisht"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamaziatishte atlase qendrore"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazishte standarde marokene"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamile"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasaukisht"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluge"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tezoisht"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetisht"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinje"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganisht"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turqisht"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uellsisht"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgure"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainisht"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeke"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaisht"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamisht"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjisht"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "xongka"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "xhula-fonji"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmisht"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sr-Latn.json b/library/intl/resources/language/sr-Latn.json
new file mode 100644
index 000000000..6f9dfb15a
--- /dev/null
+++ b/library/intl/resources/language/sr-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbejdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafija"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "be": {
+ "code": "be",
+ "name": "beloruski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnoatlaski tamazigt"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "čeroki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "češki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "čiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "donji lužičkosrpski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "džola fonji"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "džonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Evondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinski"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornji lužičkosrpski"
+ },
+ "el": {
+ "code": "el",
+ "name": "grčki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberijski portugalski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonežanski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "jermenski"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaški"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra čiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongo svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoški"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litvanski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mačame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-meeto"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaški"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderan standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisjen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemački"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norveški bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norveški ninorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "reto-romanski"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severni ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "severni sami"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalski"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovački"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenački"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazigt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Škotski Galski"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šona"
+ },
+ "es": {
+ "code": "es",
+ "name": "španski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Švajcarski nemački"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "švajcarski visoki nemački"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedski"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavak"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbečki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velški"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vundžo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zapadni frizijski"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski kreolski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sr.json b/library/intl/resources/language/sr.json
new file mode 100644
index 000000000..37771d26d
--- /dev/null
+++ b/library/intl/resources/language/sr.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџански"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албански"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарски"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапски"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Астуријски"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканс"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскијски"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафија"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруски"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалски"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "босански"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Бразилски португалски"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонски"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарски"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурмански"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вијетнамски"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунџо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галицијски"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горњи лужичкосрпски"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузијски"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуси"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "дански"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "доњи лужичкосрпски"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "en": {
+ "code": "en",
+ "name": "енглески"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "есперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "естонски"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западни фризијски"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "зеленортски креолски"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Иберијски португалски"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонежански"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирски"
+ },
+ "is": {
+ "code": "is",
+ "name": "исландски"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијански"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапански"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "јерменски"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казашки"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалисут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленџин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "канада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонски"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирски"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квасио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинески"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиски"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерски"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "којра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "којраборо сени"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго свахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејски"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаошки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "летонски"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литвански"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лујиа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "луксембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мађарски"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонски"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-меето"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајски"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтешки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масаи"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "модеран стандардни арапски"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавски"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголски"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "морисјен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немачки"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалски"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нјанколе"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки нинорск"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "or": {
+ "code": "or",
+ "name": "орија"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панџаби"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунски"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "персијски"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "пољски"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалски"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "рето-романски"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунски"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руски"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "свахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "северни ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "северни сами"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "si": {
+ "code": "si",
+ "name": "синхалски"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словеначки"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомалски"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "српски"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "стандардни марокански тамазигт"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландски"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилски"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетански"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турски"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбечки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурски"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украјински"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарски"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипински"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фински"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламански"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француски"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Фриулијски"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејски"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандски"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватски"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централноатласки тамазигт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "џола фоњи"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "џонга"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швајцарски високи немачки"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Швајцарски немачки"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведски"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Шкотски Галски"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпански"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sv-FI.json b/library/intl/resources/language/sv-FI.json
new file mode 100644
index 000000000..c5f4fe34f
--- /dev/null
+++ b/library/intl/resources/language/sv-FI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelska"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzjanska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "bhutanesiska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniska"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisiska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brittisk engelska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiska"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarockansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estniska"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisiska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spanska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamländska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöiska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "förenklad kinesiska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciska"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Gao-songhay"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiska"
+ },
+ "el": {
+ "code": "el",
+ "name": "grekiska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönländska"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreiska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "höglandsskotska"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "högsorbiska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iriska"
+ },
+ "is": {
+ "code": "is",
+ "name": "isländska"
+ },
+ "it": {
+ "code": "it",
+ "name": "italienska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyliska"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadensisk engelska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadensisk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanska"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiska"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "kimashami"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiziska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "kisambaa"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölniska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettiska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauiska"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiska"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbiska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marockansk standard-tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massajiska"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritansk kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikansk spanska"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standardarabiska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldaviska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederländska"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesiska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamiska"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiska"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumänska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ryska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rätoromanska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertyska"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizisk högtyska"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesiska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenska"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenska"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinska"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Timbuktu-songhoy"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjeckiska"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganska"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionell kinesiska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiska"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguriska"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungerska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaj"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiska"
+ },
+ "be": {
+ "code": "be",
+ "name": "vitryska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "västfrisiska"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesiska"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertyska"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "österrikisk tyska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sv.json b/library/intl/resources/language/sv.json
new file mode 100644
index 000000000..8935f966b
--- /dev/null
+++ b/library/intl/resources/language/sv.json
@@ -0,0 +1,738 @@
+{
+ "ps": {
+ "code": "ps",
+ "name": "afghanska"
+ },
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelska"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzjanska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "bhutanesiska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniska"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisiska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brittisk engelska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiska"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarockansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estniska"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisiska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spanska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamländska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöiska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "förenklad kinesiska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciska"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Gao-songhay"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiska"
+ },
+ "el": {
+ "code": "el",
+ "name": "grekiska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönländska"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreiska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "höglandsskotska"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "högsorbiska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iriska"
+ },
+ "is": {
+ "code": "is",
+ "name": "isländska"
+ },
+ "it": {
+ "code": "it",
+ "name": "italienska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyliska"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodjanska"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadensisk engelska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadensisk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiriska"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanska"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiska"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "kimashami"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisiska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "kisambaa"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölniska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiska"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettiska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauiska"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiska"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbiska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marockansk standard-tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massajiska"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritansk kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikansk spanska"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standardarabiska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldaviska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederländska"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesiska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamiska"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiska"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumänska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ryska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rätoromanska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertyska"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizisk högtyska"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesiska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenska"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenska"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugiska"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailändska"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Timbuktu-songhoy"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjeckiska"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganska"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionell kinesiska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiska"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguriska"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungerska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaj"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiska"
+ },
+ "be": {
+ "code": "be",
+ "name": "vitryska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "västfrisiska"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesiska"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertyska"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "österrikisk tyska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sw.json b/library/intl/resources/language/sw.json
new file mode 100644
index 000000000..db42e1e9e
--- /dev/null
+++ b/library/intl/resources/language/sw.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "af": {
+ "code": "af",
+ "name": "Kiafrikana"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Kiaghem"
+ },
+ "is": {
+ "code": "is",
+ "name": "Kiaisilandi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Kialbania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Kiarabu Sanifu cha Kisasa"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Kiarmenia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Kiasu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Kiayalandi"
+ },
+ "az": {
+ "code": "az",
+ "name": "Kiazabajani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Kibafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Kibambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Kibasaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Kibasque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Kibena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibengali"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Kibokmal cha Norwe"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Kibosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Kibretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kicheki"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Kicherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kichiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Kichina cha Jadi"
+ },
+ "da": {
+ "code": "da",
+ "name": "Kidenmaki"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Kidolnoserbski"
+ },
+ "he": {
+ "code": "he",
+ "name": "Kiebrania"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Kiembu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Kiesperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Kiestonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Kiewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Kiewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Kifaroe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Kifilipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Kifinlandi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Kifrisia cha Magharibi"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Kifulfulde"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Kigaeli cha Uskoti"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Kigalisi"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Kiganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Kigujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Kihispania cha Ulaya"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Kijaluo"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Kijerumani cha Uswisi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Kijojia"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Kijola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kikabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kikabylia"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kikalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kikalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kikamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kikannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kikashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kikatalani"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kikazaki"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kikirigizi"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Kikisii"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Kikoyra Chiini"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kikwasio"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Kilaosi"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Kilasembagi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Kilatvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Kilingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Kilithuania"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Kiluba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Kiluhya"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Kimaasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Kimachame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Kimakhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Kimakonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Kimalayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Kimalta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Kimarathi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Kimasedonia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Kimeru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Kimongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Kimoriseni"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Kimundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Kinama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Kindebele cha Kaskazini"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Kingomba"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kingwana"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Kinorwe Kipya"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Kinuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Kinyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Kioriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Kipashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Kirangi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Kiromanshi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kirombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Kirwo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Kisambaa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Kisamburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Kisami cha Kaskazini"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Kisango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Kisangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Kisena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Kiserbia"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Kishona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Kisinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Kislovakia"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Kislovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Kisoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Kitaita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Kitasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Kitelugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Kiteso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Kitibeti"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Kitigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Kitonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Kiuiguri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Kiuzbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Kivai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Kivunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Kiwelisi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Kizarma"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Kizongkha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroeshia"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasi"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamaziti Msingi ya Kimoroko"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/swc.json b/library/intl/resources/language/swc.json
new file mode 100644
index 000000000..f10d6289b
--- /dev/null
+++ b/library/intl/resources/language/swc.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kiswahili ya Kongo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ta.json b/library/intl/resources/language/ta.json
new file mode 100644
index 000000000..b0c0f8ef9
--- /dev/null
+++ b/library/intl/resources/language/ta.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "அகான்"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "அகெம்"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "அசு"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "அப்பர் சோர்பியான்"
+ },
+ "am": {
+ "code": "am",
+ "name": "அம்ஹாரிக்"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "அமெரிக்க ஆங்கிலம்"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "அரபிக்"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "அல்பேனியன்"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "அஸ்துரியன்"
+ },
+ "az": {
+ "code": "az",
+ "name": "அஸர்பைஜானி"
+ },
+ "af": {
+ "code": "af",
+ "name": "ஆஃப்ரிகான்ஸ்"
+ },
+ "en": {
+ "code": "en",
+ "name": "ஆங்கிலம்"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ஆர்மேனியன்"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ஆஸ்திரிய ஜெர்மன்"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ஆஸ்திரேலியன் ஆங்கிலம்"
+ },
+ "it": {
+ "code": "it",
+ "name": "இத்தாலியன்"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "இந்தி"
+ },
+ "id": {
+ "code": "id",
+ "name": "இந்தோனேஷியன்"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ஈவ்"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "உக்ரைனியன்"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "உய்குர்"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "உருது"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "உஸ்பெக்"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "எம்பு"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "எவோன்டோ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "எளிதாக்கப்பட்ட சீனம்"
+ },
+ "et": {
+ "code": "et",
+ "name": "எஸ்டோனியன்"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "எஸ்பரேன்டோ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ஐரிஷ்"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ஐரோப்பிய போர்ச்சுகீஸ்"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ஐரோப்பிய ஸ்பானிஷ்"
+ },
+ "is": {
+ "code": "is",
+ "name": "ஐஸ்லென்டிக்"
+ },
+ "or": {
+ "code": "or",
+ "name": "ஒரியா"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ஃப்ரியூலியன்"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ஃபரோயிஸ்"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ஃபிலிபினோ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ஃபின்னிஷ்"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ஃபுலா"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "க்வாசியோ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "கசாக்"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "கபாய்ல்"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "கபுவெர்தியானு"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "கம்பா"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "கலாலிசூட்"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "கலின்ஜின்"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "கன்னடம்"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "கனடிய பிரெஞ்சு"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "கனடியன் ஆங்கிலம்"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "காங்கோ சுவாஹிலி"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "காலிஸியன்"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "கான்டா"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "காஷ்மிரி"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "கிகுயூ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "கிர்கிஸ்"
+ },
+ "el": {
+ "code": "el",
+ "name": "கிரேக்கம்"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "குரோஷியன்"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "குஜராத்தி"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "குஸி"
+ },
+ "km": {
+ "code": "km",
+ "name": "கெமெர்"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "கேட்டலான்"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "கொய்ரா சீனீ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "கொய்ராபோரோ சென்னி"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "கொரியன்"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "சங்கு"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "சம்புரு"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "சாங்கோ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "சார்மா"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "சிகா"
+ },
+ "si": {
+ "code": "si",
+ "name": "சிங்களம்"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "சீனம்"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "சுவாஹிலி"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "செக்"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "செர்பியன்"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "செரொகி"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "செனா"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "சோகா"
+ },
+ "so": {
+ "code": "so",
+ "name": "சோமாலி"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "டச்சு"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "டசவாக்"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "டர்கிஷ்"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "டிக்ரின்யா"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "டெசோ"
+ },
+ "da": {
+ "code": "da",
+ "name": "டேனிஷ்"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "டைடா"
+ },
+ "to": {
+ "code": "to",
+ "name": "டோங்கான்"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "தசேஹித்"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "தமிழ்"
+ },
+ "th": {
+ "code": "th",
+ "name": "தாய்"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "திபெத்தியன்"
+ },
+ "te": {
+ "code": "te",
+ "name": "தெலுங்கு"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "நகொம்பா"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "நாமா"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "நார்வேஜியன் நியூநார்ஸ்க்"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "நார்வேஜியன் பொக்மால்"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "நியான்கோலே"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "நியூர்"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "நேபாளி"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "பஞ்சாபி"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "பம்பாரா"
+ },
+ "my": {
+ "code": "my",
+ "name": "பர்மிஸ்"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "பல்கேரியன்"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "பஷ்தோ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "பஸ்க்"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "பாஃபியா"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "பாரம்பரிய சீனம்"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "பாஸா"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "பிரிட்டிஷ் ஆங்கிலம்"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "பிரெஞ்சு"
+ },
+ "br": {
+ "code": "br",
+ "name": "பிரெட்டன்"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "பிலெமிஷ்"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "பூடானி"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "பெர்ஷியன்"
+ },
+ "be": {
+ "code": "be",
+ "name": "பெலாருஷியன்"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "பெனா"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "போடோ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "போர்ச்சுக்கீஸ்"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "போர்ச்சுகீஸ் (பிரேசில்)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "போலிஷ்"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "போஸ்னியன்"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "மகுவா-மீட்டோ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "மகொண்டே"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "மங்கோலியன்"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "மத்திய அட்லஸ் தமசைட்"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "மராத்தி"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "மலகாஸி"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "மலாய்"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "மலையாளம்"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "மாசாய்"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "மாசெம்"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "மாடர்ன் ஸ்டாண்டர்ட் அரபிக்"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "மால்டிஸ்"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "மாஸிடோனியன்"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "முன்டாங்"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "மெக்சிகன் ஸ்பானிஷ்"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "மெரு"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "மேற்கத்திய ஃப்ரிஷியன்"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "மொரிசியன்"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "மோல்டாவியன்"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "யோருபா"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ரஷியன்"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ருண்டி"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ருவா"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ரோம்போ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ரோமான்ஷ்"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ரோமேனியன்"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "லக்ஸம்போர்கிஷ்"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "லங்கி"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "லாட்வியன்"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "லாவோ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "லிங்காலா"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "லிதுவேனியன்"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "லுபா-கடாங்கா"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "லுயியா"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "லுயோ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "லோயர் சோர்பியன்"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "வங்காளம்"
+ },
+ "se": {
+ "code": "se",
+ "name": "வடக்கு சமி"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "வடக்கு தெபெலே"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "வியட்நாமிஸ்"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "வுன்ஜோ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "வெல்ஷ்"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "வை"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ஜப்பானியம்"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ஜார்ஜியன்"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ஜுலு"
+ },
+ "de": {
+ "code": "de",
+ "name": "ஜெர்மன்"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ஜோலா-ஃபோன்யி"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ஷம்பாலா"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ஷோனா"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ஸ்காட்ஸ் கேலிக்"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ஸ்டாண்டர்ட் மொராக்கன் தமாசைட்"
+ },
+ "es": {
+ "code": "es",
+ "name": "ஸ்பானிஷ்"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ஸ்லோவாக்"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ஸ்லோவேனியன்"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ஸ்விஸ் பிரஞ்சு"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ஸ்விஸ் ஜெர்மன்"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ஸ்விஸ் ஹை ஜெர்மன்"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ஸ்வீடிஷ்"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ஹங்கேரியன்"
+ },
+ "he": {
+ "code": "he",
+ "name": "ஹீப்ரூ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ஹௌஸா"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/te.json b/library/intl/resources/language/te.json
new file mode 100644
index 000000000..9a00f8ae9
--- /dev/null
+++ b/library/intl/resources/language/te.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "అకాన్"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "అగేమ్"
+ },
+ "az": {
+ "code": "az",
+ "name": "అజర్బైజాని"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "అప్పర్ సోర్బియన్"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "అమెరికన్ ఇంగ్లీష్"
+ },
+ "am": {
+ "code": "am",
+ "name": "అమ్హారిక్"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "అరబిక్"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "అల్బేనియన్"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "అసు"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "అస్టురియాన్"
+ },
+ "en": {
+ "code": "en",
+ "name": "ఆంగ్లం"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ఆధునిక ప్రామాణిక అరబిక్"
+ },
+ "af": {
+ "code": "af",
+ "name": "ఆఫ్రికాన్స్"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ఆర్మేనియన్"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ఆస్ట్రేలియన్ ఇంగ్లీష్"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ఆస్ట్రేలియన్ జర్మన్"
+ },
+ "id": {
+ "code": "id",
+ "name": "ఇండోనేషియన్"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ఇంబు"
+ },
+ "it": {
+ "code": "it",
+ "name": "ఇటాలియన్"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ఈవీ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ఈస్టొనియన్"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ఉక్రేనియన్"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ఉజ్బెక్"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ఉత్తర దెబెలె"
+ },
+ "se": {
+ "code": "se",
+ "name": "ఉత్తర సామి"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ఉయ్‌ఘర్"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ఉర్దూ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ఎవోండొ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ఎస్పరెన్టొ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ఐరిష్"
+ },
+ "is": {
+ "code": "is",
+ "name": "ఐస్లాండిక్"
+ },
+ "or": {
+ "code": "or",
+ "name": "ఒరియా"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "కంబా"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "కజఖ్"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "కన్నడ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "కలాల్లిసూట్"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "కలెంజిన్"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "కాంగో స్వాహిలి"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "కాబిల్"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "కాబువేర్దియను"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "కాశ్మీరి"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "కికుయు"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "కిర్గిజ్"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "కెటలాన్"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "కెనడియన్ ఇంగ్లీష్"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "కెనడియెన్ ఫ్రెంచ్"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "కొయరా చీన్నీ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "కొరియన్"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "కోయోరాబోరో సెన్నీ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "క్రొయెషియన్"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "క్వాసియె"
+ },
+ "km": {
+ "code": "km",
+ "name": "ఖ్మేర్"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "గాండా"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "గుజరాతి"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "గుస్సీ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "గెలిషియన్"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "గోంబా"
+ },
+ "el": {
+ "code": "el",
+ "name": "గ్రీక్"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "చెక్"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "చెరోకీ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "చైనీస్"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ఛిగా"
+ },
+ "de": {
+ "code": "de",
+ "name": "జర్మన్"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "జాపనీస్"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "జార్జియన్"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "జార్మా"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "జూలూ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "జొన్ఖా"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "జోలా-ఫోనయి"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "టర్కిష్"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "టసావాఖ్"
+ },
+ "to": {
+ "code": "to",
+ "name": "టాంగాన్"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "టాచెల్‌హిట్"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "టిబెటన్"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "టెసో"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "టైటా"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "డచ్"
+ },
+ "da": {
+ "code": "da",
+ "name": "డేనిష్"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "తమిళము"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "తిగ్రిన్యా"
+ },
+ "te": {
+ "code": "te",
+ "name": "తెలుగు"
+ },
+ "th": {
+ "code": "th",
+ "name": "థాయ్"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "నమ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "నార్విజియాన్ న్యోర్స్క్"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "నార్వీజియన్ బొక్మాల్"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "నేపాలి"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "న్యాన్కోలె"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "న్యుర్"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "పంజాబీ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "పర్షియన్"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "పశ్చిమ ఫ్రిసియన్"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "పాష్టో"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "పోర్చుగీస్"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "పోలిష్"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ప్రామాణిక మొరొకన్ తమజియట్"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ఫారోయీజ్"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ఫిన్నిష్"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ఫిలిపినో"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ఫ్యుల"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ఫ్రియులియన్"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ఫ్రెంచ్"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ఫ్లెమిష్"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "బంబారా"
+ },
+ "my": {
+ "code": "my",
+ "name": "బర్మీస్"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "బల్గేరియన్"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "బసా"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "బాఫియ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "బాస్క్"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "బీనా"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "బెంగాలీ"
+ },
+ "be": {
+ "code": "be",
+ "name": "బెలరుశియన్"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "బోడో"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "బోస్నియన్"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "బ్రిటిష్ ఇంగ్లీష్"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "బ్రెజీలియన్ పోర్చుగీస్"
+ },
+ "br": {
+ "code": "br",
+ "name": "బ్రెటన్"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "మంగోలియన్"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "మకొండే"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "మకొమ్"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "మక్వా-మిట్టో"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "మరాఠీ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "మలయాళం"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "మలేయ్"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "మసడోనియన్"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "మాలాగసి"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "మాల్టీస్"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "మాసాయి"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ముదాంగ్"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "మెక్సికన్ స్పానిష్"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "మెరు"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "మొరిస్యేన్"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "మొల్డావియన్"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "యూరోపియన్ పోర్చుగీస్"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "యూరోపియన్ స్పానిష్"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "యోరుబా"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "రండి"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "రష్యన్"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "రోంబో"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "రోమన్ష్"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "రోమానియన్"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ర్వా"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "లాంగీ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "లాట్వియన్"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "లావో"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "లింగాల"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "లిథుయేనియన్"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "లుక్సంబర్గిష్"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "లుయియ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "లువో"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "లూబ-కటాంగ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "లోవర్ సోర్బియన్"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "వాయి"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "వియత్నామీస్"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "వుంజొ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "వెల్ష్"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "శంబాలా"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "షోన"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "సంబురు"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "సరళీకృత చైనీస్"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "సాంగు"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "సాంగో"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "సాంప్రదాయక చైనీస్"
+ },
+ "si": {
+ "code": "si",
+ "name": "సింహళం"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "సెంట్రల్ అట్లాస్ టామాజైట్"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "సెనా"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "సెర్బియన్"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "సొగా"
+ },
+ "so": {
+ "code": "so",
+ "name": "సోమాలి"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "స్కాటిష్ గేలిక్"
+ },
+ "es": {
+ "code": "es",
+ "name": "స్పానిష్"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "స్లోవాక్"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "స్లోవేనియాన్"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "స్వాహిలి"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "స్విస్ జర్మన్"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "స్విస్ ఫ్రెంచ్"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "స్విస్ హై జర్మన్"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "స్వీడిష్"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "హన్గేరియన్"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "హిందీ"
+ },
+ "he": {
+ "code": "he",
+ "name": "హీబ్రు"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "హౌసా"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/teo.json b/library/intl/resources/language/teo.json
new file mode 100644
index 000000000..59f0372dc
--- /dev/null
+++ b/library/intl/resources/language/teo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Kiteso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/th.json b/library/intl/resources/language/th.json
new file mode 100644
index 000000000..f747a2392
--- /dev/null
+++ b/library/intl/resources/language/th.json
@@ -0,0 +1,738 @@
+{
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "el": {
+ "code": "el",
+ "name": "กรีก"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "กรีนแลนด์"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "กวาซิโอ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "กันนาดา"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "กัศมีร์"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "กาตาลัง"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "กาไบล"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "กาลิเซีย"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "กีกูยู"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "กุซซี"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "เกาหลี"
+ },
+ "km": {
+ "code": "km",
+ "name": "เขมร"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "คัมบา"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "คาซัค"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "คาบูเวอร์เดียนู"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "คาเลนจิน"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "คีกา"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "คีร์กีซ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "คุชราต"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "โคย์ราชีนี"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "โคย์ราโบโรเซนนี"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "โครเอเชีย"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "โคโลญ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "จอร์เจีย"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "จีน"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "จีนตัวเต็ม"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "จีนตัวย่อ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "โจลา-ฟอนยี"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ชัมบาลา"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "เช็ก"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "เชอโรกี"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "โชนา"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ซองคา"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ซอร์บส์ตอนบน"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ซอร์บส์ตอนล่าง"
+ },
+ "se": {
+ "code": "se",
+ "name": "ซามิเหนือ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ซาร์มา"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ซูลู"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "เซนา"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "เซอร์เบีย"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "แซงกู"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "แซงโก"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "แซมบูรู"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "โซกา"
+ },
+ "so": {
+ "code": "so",
+ "name": "โซมาลี"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ญี่ปุ่น"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ดัตช์"
+ },
+ "da": {
+ "code": "da",
+ "name": "เดนมาร์ก"
+ },
+ "to": {
+ "code": "to",
+ "name": "ตองกา"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ตัสซาวัค"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ติกริญญา"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ตุรกี"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "เตโซ"
+ },
+ "te": {
+ "code": "te",
+ "name": "เตลูกู"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ทมิฬ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ทาเชลีห์ท"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ทามาไซต์โมร็อกโกมาตรฐาน"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ทามาไซต์แอตลาสกลาง"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ทิเบต"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ไททา"
+ },
+ "th": {
+ "code": "th",
+ "name": "ไทย"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "นอร์เวย์นีนอสก์"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "นอร์เวย์บุคมอล"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "นามา"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "เนปาล"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "เนียนโกเล"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "เนือร์"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "บอสเนีย"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "บัมบารา"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "บัลแกเรีย"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "บัสเก"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "บาเฟีย"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "บาสา"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "บุรุนดี"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "เบงกาลี"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "เบนา"
+ },
+ "br": {
+ "code": "br",
+ "name": "เบรตัน"
+ },
+ "be": {
+ "code": "be",
+ "name": "เบลารุส"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ปัญจาบ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "เปอร์เซีย"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "โปรตุเกส"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "โปรตุเกส - บราซิล"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "โปรตุเกส - ยุโรป"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "โปแลนด์"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ฝรั่งเศส"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ฝรั่งเศส (สวิส)"
+ },
+ "my": {
+ "code": "my",
+ "name": "พม่า"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "พาชตู"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "โพโฑ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ฟริเซียนตะวันตก"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ฟรูลี"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ฟินแลนด์"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ฟิลิปปินส์"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ฟูลาฮ์"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "เฟลมิช"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "แฟโร"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "มราฐี"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "มองโกเลีย"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "มอริสเยน"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "มอลโดวา"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "มอลตา"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "มันดัง"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "มากัววา-มีทโท"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "มาคอนเด"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "มาชาเม"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "มาซิโดเนีย"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "มาไซ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "มาลากาซี"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "มาลายาลัม"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "มาเลย์"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "เมรู"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ยูกันดา"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ยูเครน"
+ },
+ "de": {
+ "code": "de",
+ "name": "เยอรมัน"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "เยอรมัน - ออสเตรีย"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "เยอรมันสวิส"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "เยอรมันสูง (สวิส)"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "แยงเบน"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "โยรูบา"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "รวา"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "รอมโบ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "รัสเซีย"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "โรมาเนีย"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "โรแมนซ์"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ลักเซมเบิร์ก"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ลัตเวีย"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ลัว"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ลาว"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ลิงกาลา"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ลิทัวเนีย"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ลูบา-กาตองกา"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ลูเยีย"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "แลนจี"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "วัลเซอร์"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "วุนจู"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "เวลส์"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "เวียดนาม"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ไว"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "สกอตส์กาลิก"
+ },
+ "es": {
+ "code": "es",
+ "name": "สเปน"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "สเปน (ยุโรป)"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "สโลวัก"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "สโลวีเนีย"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "สวาฮีลี"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "สวาฮีลี-คองโก"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "สวีเดน"
+ },
+ "si": {
+ "code": "si",
+ "name": "สิงหล"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "อักเฮม"
+ },
+ "en": {
+ "code": "en",
+ "name": "อังกฤษ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "อังกฤษ - แคนาดา"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "อังกฤษ - สหราชอาณาจักร"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "อังกฤษ - อเมริกัน"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "อังกฤษ - ออสเตรเลีย"
+ },
+ "am": {
+ "code": "am",
+ "name": "อัมฮารา"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "อัสตูเรียส"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "อาคัน"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "อาซู"
+ },
+ "az": {
+ "code": "az",
+ "name": "อาเซอร์ไบจาน"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "อาร์เมเนีย"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "อาหรับ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "อาหรับมาตรฐานสมัยใหม่"
+ },
+ "it": {
+ "code": "it",
+ "name": "อิตาลี"
+ },
+ "id": {
+ "code": "id",
+ "name": "อินโดนีเชีย"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "อีวันโด"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "อึนกอมบา"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "อุซเบก"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "อุยกัว"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "อูรดู"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "เอ็นเดเบเลเหนือ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "เอ็มบู"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "เอเว"
+ },
+ "et": {
+ "code": "et",
+ "name": "เอสโตเนีย"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "เอสเปอรันโต"
+ },
+ "af": {
+ "code": "af",
+ "name": "แอฟริกานส์"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "แอลเบเนีย"
+ },
+ "or": {
+ "code": "or",
+ "name": "โอริยา"
+ },
+ "is": {
+ "code": "is",
+ "name": "ไอซ์แลนด์"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ไอริช"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ฮังการี"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ฮินดี"
+ },
+ "he": {
+ "code": "he",
+ "name": "ฮิบรู"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "เฮาชา"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ti.json b/library/intl/resources/language/ti.json
new file mode 100644
index 000000000..70af1ec92
--- /dev/null
+++ b/library/intl/resources/language/ti.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ሀንጋሪኛ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ሊቱአኒየን"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ላቲቪያን"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ሕንደኛ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ማላያላምኛ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ማላይኛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ማልቲስኛ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ማራቲኛ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ማክዶኒኛ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ራሽኛ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ሮማኒያን"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ሰርቢኛ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ሰዋሂሊኛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ስሎቨክኛ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ስቁቪኛ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ስንሃልኛ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ስዊድንኛ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ስፓኒሽ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "በንጋሊኛ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ቡልጋሪኛ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ባስክኛ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ቤላራሻኛ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ብሬቶን"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ቦስኒያን"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ቪትናምኛ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ተሉጉኛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ቱርከኛ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ታሚልኛ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ታይኛ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ታጋሎገኛ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ትግርኛ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ቼክኛ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ኔፖሊኛ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ኖርዌይኛ (ናይ ኝኖርስክ)"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "አልቤኒኛ"
+ },
+ "am": {
+ "code": "am",
+ "name": "አምሐረኛ"
+ },
+ "az": {
+ "code": "az",
+ "name": "አዜርባይጃንኛ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "አይሪሽ"
+ },
+ "is": {
+ "code": "is",
+ "name": "አይስላንደኛ"
+ },
+ "af": {
+ "code": "af",
+ "name": "አፍሪቃንሰኛ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ኡርዱኛ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ኡዝበክኛ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ኤስቶኒአን"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ኤስፐራንቶ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "እስኮትስ ጌልክኛ"
+ },
+ "id": {
+ "code": "id",
+ "name": "እንዶኑሲኛ"
+ },
+ "en": {
+ "code": "en",
+ "name": "እንግሊዝኛ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ኦሪያ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ኪሩጋዚ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ካማደኛ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ካታላን"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ክሮሽያንኛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ኮሪያኛ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ወልሽ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ዓረበኛ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ዕብራስጥ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ዙሉኛ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ዩክረኒኛ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ደች"
+ },
+ "da": {
+ "code": "da",
+ "name": "ዴኒሽ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ጀርመን"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ጃፓንኛ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ጉጃራቲኛ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ጊዮርጊያኛ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ጋለቪኛ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ግሪከኛ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ጣሊያንኛ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ፈረንሳይኛ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ፊኒሽ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ፋሮኛ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ፍሪሰኛ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ፐርሲያኛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ፑንጃቢኛ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ፓሽቶ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ፖሊሽ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ፖርቱጋሊኛ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ፖርቱጋልኛ (ናይ ብራዚል)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ፖርቱጋልኛ (ናይ ፖርቱጋል)"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/to.json b/library/intl/resources/language/to.json
new file mode 100644
index 000000000..d7a685c78
--- /dev/null
+++ b/library/intl/resources/language/to.json
@@ -0,0 +1,738 @@
+{
+ "fr": {
+ "code": "fr",
+ "name": "lea fakafalanisē"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "lea fakafalanisē-kānata"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "lea fakafalanisē-suisilani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "lea fakafaloe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "lea fakafilipaini"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "lea fakafilisia-hihifo"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "lea fakafinilani"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "lea fakafulā"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "lea fakafulilāni"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "lea fakahausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "lea fakahepelū"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "lea fakahinitī"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "lea fakahōlani"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "lea fakahōlani-pelesiume"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "lea fakahungakalia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "lea fakaʻaelani"
+ },
+ "af": {
+ "code": "af",
+ "name": "lea fakaʻafilikana"
+ },
+ "is": {
+ "code": "is",
+ "name": "lea fakaʻaisilani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "lea fakaʻakani"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "lea fakaʻakihemi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "lea fakaʻalapēnia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "lea fakaʻalepea"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "lea fakaʻalepea (māmani)"
+ },
+ "am": {
+ "code": "am",
+ "name": "lea fakaʻameliki"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "lea fakaʻāmenia"
+ },
+ "az": {
+ "code": "az",
+ "name": "lea fakaʻasapaisani"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "lea fakaʻasitūlia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "lea fakaʻasu"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "lea fakaʻemipū"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "lea fakaʻesipulanito"
+ },
+ "et": {
+ "code": "et",
+ "name": "lea fakaʻesitōnia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "lea fakaʻeue"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "lea fakaʻeuōnito"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "lea fakaʻiangipeni"
+ },
+ "or": {
+ "code": "or",
+ "name": "lea fakaʻinitia-ʻolāea"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "lea fakaʻinitia-malāialami"
+ },
+ "te": {
+ "code": "te",
+ "name": "lea fakaʻinitia-teluku"
+ },
+ "id": {
+ "code": "id",
+ "name": "lea fakaʻinitōnesia"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "lea fakaʻiōlupa"
+ },
+ "it": {
+ "code": "it",
+ "name": "lea fakaʻītali"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "lea fakaʻualiseli"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "lea fakaʻuikūli"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "lea fakaʻūkalaʻine"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "lea fakaʻusipeki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "lea fakaʻūtū"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "lea fakaiola-fonī"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "lea fakakaeliki"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "lea fakakalaʻalisuti"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "lea fakakalenisini"
+ },
+ "el": {
+ "code": "el",
+ "name": "lea fakakalisi"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "lea fakakalisia"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "lea fakakamipa"
+ },
+ "km": {
+ "code": "km",
+ "name": "lea fakakamipōtia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "lea fakakanata"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "lea fakakanita"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "lea fakakapile"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "lea fakakapuvelitianu"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "lea fakakasaki"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "lea fakakāsimila"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "lea fakakatalani"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "lea fakakika"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "lea fakakikuiu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "lea fakakīsisi"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "lea fakakoila-sīni"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "lea fakakoilapolo-seni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "lea fakakōlea"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "lea fakakolongia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "lea fakakuasio"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "lea fakakuloisia"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "lea fakakusī"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "lea fakakutalati"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "lea fakalaito-lomēnia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lea fakalakisimipeki"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "lea fakalangi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lea fakalativia"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lea fakalau"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lea fakalituania"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "lea fakalōmenia"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "lea fakalomipō"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "lea fakaluā"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "lea fakaluaniti"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lea fakaluīa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "lea fakaluo"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lea fakalupa-katanga"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "lea fakalūsia"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "lea fakamakōnite"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "lea fakamakūa-meʻeto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "lea fakamalakasi"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "lea fakamalati"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "lea fakamalei"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "lea fakamasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "lea fakamasame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "lea fakamasitōnia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "lea fakamelu"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "lea fakamolisieni"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "lea fakamolitāvia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "lea fakamolota"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "lea fakamongokōlia"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "lea fakamunitangi"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "lea fakanama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "lea fakanepali"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "lea fakanetepele-tokelau"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "lea fakanianikole"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "lea fakanikōmipa"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "lea fakanoauē-ninosiki"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "lea fakanouaē-pokimali"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "lea fakanueli"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "lea fakapafia"
+ },
+ "en": {
+ "code": "en",
+ "name": "lea fakapālangi"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "lea fakapālangi-ʻamelika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "lea fakapālangi-ʻaositelēlia"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "lea fakapālangi-kānata"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "lea fakapamipala"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "lea fakapasaʻa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "lea fakapāsiki"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "lea fakapasitō"
+ },
+ "be": {
+ "code": "be",
+ "name": "lea fakapelalusi"
+ },
+ "br": {
+ "code": "br",
+ "name": "lea fakapeletoni"
+ },
+ "my": {
+ "code": "my",
+ "name": "lea fakapema"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "lea fakapena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "lea fakapengikali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "lea fakapēsia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "lea fakapilitānia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lea fakapōlani"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "lea fakaposinia"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "lea fakapōto"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "lea fakapotukali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "lea fakapotukali-ʻiulope"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "lea fakapotukali-palāsili"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "lea fakapulukalia"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "lea fakapūnusapi"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "lea fakaputeni"
+ },
+ "se": {
+ "code": "se",
+ "name": "lea fakasami-tokelau"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "lea fakasamipulu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "lea fakasangikō"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "lea fakasangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "lea fakaseki"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "lea fakaselokī"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "lea fakasena"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "lea fakaseōsia"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "lea fakasēpia"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "lea fakasiaina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "lea fakasiaina-fakafaingofua"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "lea fakasiaina-tukufakaholo"
+ },
+ "de": {
+ "code": "de",
+ "name": "lea fakasiamane"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "lea fakasiamane-hake-suisilani"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "lea fakasiamane-ʻaositulia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "lea fakasiamane-suisilani"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "lea fakasiamipala"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "lea fakasiapani"
+ },
+ "si": {
+ "code": "si",
+ "name": "lea fakasingihala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "lea fakasiona"
+ },
+ "es": {
+ "code": "es",
+ "name": "lea fakasipēnisi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "lea fakasipēnisi-‘iulope"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "lea fakasipēnisi-mekisikou"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lea fakasoka"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "lea fakasolāvaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "lea fakasolovenia"
+ },
+ "so": {
+ "code": "so",
+ "name": "lea fakasomali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "lea fakasōpia-hake"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lea fakasōpia-hifo"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "lea fakasuahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "lea fakasuahili-kongikō"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "lea fakasuēteni"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "lea fakasulu"
+ },
+ "th": {
+ "code": "th",
+ "name": "lea fakatailani"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "lea fakataita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "lea fakatamasaiti-ʻatilasi-loloto"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "lea fakatamasaiti-moloko"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "lea fakatamili"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "lea fakatasauaki"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "lea fakataselihiti"
+ },
+ "da": {
+ "code": "da",
+ "name": "lea fakatenimaʻake"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "lea fakateso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "lea fakatikilinia"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "lea fakatipeti"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "lea fakatisāma"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "lea fakatoake"
+ },
+ "to": {
+ "code": "to",
+ "name": "lea fakatonga"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "lea fakauēlesi"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "lea fakavai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "lea fakavietinami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "lea fakavūniso"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lea lingikala"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/tr.json b/library/intl/resources/language/tr.json
new file mode 100644
index 000000000..525091b88
--- /dev/null
+++ b/library/intl/resources/language/tr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaanca"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almanca"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikan İngilizcesi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharca"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arapça"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Arnavutça"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturyasca"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Aşağı Sorbça"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Avrupa İspanyolcası"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Avrupa Portekizcesi"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avustralya İngilizcesi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avusturya Almancası"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerice"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa Dili"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Basitleştirilmiş Çince"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskça"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Batı Frizcesi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalce"
+ },
+ "be": {
+ "code": "be",
+ "name": "Beyaz Rusça"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boşnakça"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonca"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brezilya Portekizcesi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarca"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmaca"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butan Dili"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Çekçe"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Çerokice"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Çince"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danca"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "id": {
+ "code": "id",
+ "name": "Endonezce"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Ermenice"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonca"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroe Dili"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsça"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipince"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fince"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flamanca"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransızca"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Galce"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiçyaca"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Geleneksel Çince"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönland Dili"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Güceratça"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Gürcüce"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Hırvatça"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hintçe"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollandaca"
+ },
+ "he": {
+ "code": "he",
+ "name": "İbranice"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "İngiliz İngilizcesi"
+ },
+ "en": {
+ "code": "en",
+ "name": "İngilizce"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "İrlandaca"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "İskoç Gal Dili"
+ },
+ "es": {
+ "code": "es",
+ "name": "İspanyolca"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "İsveççe"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "İsviçre Almancası"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "İsviçre Fransızcası"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "İsviçre Yüksek Almancası"
+ },
+ "it": {
+ "code": "it",
+ "name": "İtalyanca"
+ },
+ "is": {
+ "code": "is",
+ "name": "İzlandaca"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonca"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabiliyece"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada Fransızcası"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada İngilizcesi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanca"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakça"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Keşmirce"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kırgızca"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kigaca"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmerce"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo Svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korece"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Köln Diyalekti"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Kuzey Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Kuzey Sami"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoca"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Lehçe"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letonca"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litvanyaca"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lüksemburgca"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Macarca"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Makedonca"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malayca"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malgaşça"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltaca"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika İspanyolcası"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standart Arapça"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Moğolca"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldovaca"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalce"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norveççe Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norveççe Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya Dili"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Orta Fas Tamazigti"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Özbekçe"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pencapça"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Peştuca"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portekizce"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romanşça"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romence"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusça"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "Seylanca"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sırpça"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovakça"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovence"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalice"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standart Berberi Dili Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Svahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilce"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taşelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tayca"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu Dili"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetçe"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaca"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkçe"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraynaca"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urduca"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uygurca"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamca"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorubaca"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Yukarı Sorbça"
+ },
+ "el": {
+ "code": "el",
+ "name": "Yunanca"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zuluca"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/twq.json b/library/intl/resources/language/twq.json
new file mode 100644
index 000000000..ce102f744
--- /dev/null
+++ b/library/intl/resources/language/twq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni, Game here"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq senni"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/tzm.json b/library/intl/resources/language/tzm.json
new file mode 100644
index 000000000..edb862bb6
--- /dev/null
+++ b/library/intl/resources/language/tzm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tabelɣarit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tabenjabit"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tabilarusit"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tabinɣalit"
+ },
+ "my": {
+ "code": "my",
+ "name": "Taburmanit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Taburtuɣalit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tačikt"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tacinwit,Mandarin"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tafarisit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tafṛansist"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tahawsat"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tahenɣarit"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tahindit"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Tahulanḍit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tajappunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Takanit"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "Talmanit"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tamalizit"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamaziɣt"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tamharit"
+ },
+ "en": {
+ "code": "en",
+ "name": "Tanglizt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tanippalit"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tappulunit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Taṛumanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "tasbelyunit"
+ },
+ "so": {
+ "code": "so",
+ "name": "Taṣumalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taṭalyant"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tatamilt"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taṭayt"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Taturkit"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Taviṭnamit"
+ },
+ "km": {
+ "code": "km",
+ "name": "Taxmert ,Talammast"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tayunanit"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tayurubat"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "tazulut"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Taεrabt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tindunisit"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ug.json b/library/intl/resources/language/ug.json
new file mode 100644
index 000000000..e6b20c302
--- /dev/null
+++ b/library/intl/resources/language/ug.json
@@ -0,0 +1,738 @@
+{
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ئاددىي خەنچە"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ئاستۇرىيەچە"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ئاسۇچە"
+ },
+ "af": {
+ "code": "af",
+ "name": "ئافرىكانچە"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ئاكانچە"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ئاگەمچە"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ئالبانچە"
+ },
+ "am": {
+ "code": "am",
+ "name": "ئامخاراچە"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ئامېرىكا ئىنگلىزچە"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ئاۋسترالىيە ئىنگلىزچە"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ئاۋستىرىيە گېرمانچە"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ئەرمەنچە"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ئەرەبچە"
+ },
+ "az": {
+ "code": "az",
+ "name": "ئەزەرىچە"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ئەنگلىيە ئىنگلىزچە"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ئوردوچە"
+ },
+ "or": {
+ "code": "or",
+ "name": "ئورىياچە"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ئۆزبېكچە"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ئۆلچەملىك ماراكەش تامازىتچە"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ئۇكرائىنچە"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ئۇيغۇرچە"
+ },
+ "he": {
+ "code": "he",
+ "name": "ئىبرانىچە"
+ },
+ "it": {
+ "code": "it",
+ "name": "ئىتاليانچە"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ئىرېلاندچە"
+ },
+ "es": {
+ "code": "es",
+ "name": "ئىسپانچە"
+ },
+ "is": {
+ "code": "is",
+ "name": "ئىسلاندچە"
+ },
+ "en": {
+ "code": "en",
+ "name": "ئىنگلىزچە"
+ },
+ "et": {
+ "code": "et",
+ "name": "ئېستونچە"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ئېمبۇچە"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ئېۋوندوچە"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ئېۋېچە"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باساچە"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسكىچە"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافىياچە"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامباراچە"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودوچە"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنىيەچە"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "بۇتانچە"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بۇلغارچە"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "بىرازىلىيە پورتۇگالچە"
+ },
+ "my": {
+ "code": "my",
+ "name": "بىرماچە"
+ },
+ "br": {
+ "code": "br",
+ "name": "بىرېتونچە"
+ },
+ "be": {
+ "code": "be",
+ "name": "بېلارۇسچە"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بېناچە"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بېنگالچە"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "پارسچە"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پەنجابچە"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پورتۇگالچە"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولەكچە"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پۇشتۇچە"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامىلچە"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تايتاچە"
+ },
+ "th": {
+ "code": "th",
+ "name": "تايلاندچە"
+ },
+ "to": {
+ "code": "to",
+ "name": "توڭانچە"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "توۋەن سېربچە"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "تۈركچە"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تىبەتچە"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تىگرىنياچە"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تېسوچە"
+ },
+ "te": {
+ "code": "te",
+ "name": "تېلۇگۇچە"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولاچە"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چىگاچە"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چېخچە"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چېروكىچە"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "خائۇساچە"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "خەنچە"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "خورۋاتچە"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانىشچە"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "دۇنيا تىلى"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانىشچە"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبوچە"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "رۇسچە"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رۇمىنىيەچە"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رۇندىچە"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "رىۋاچە"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زارماچە"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زۇلۇچە"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبۇرۇچە"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگوچە"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگۇچە"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سكوتچە"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگاچە"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالىچە"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سىلوۋاكچە"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سىلوۋېنىيەچە"
+ },
+ "si": {
+ "code": "si",
+ "name": "سىنگالچە"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سىۋالىچە"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سېربچە"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سېناچە"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالاچە"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "شەرقىي سوڭخايچە"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شوناچە"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "شۋېدچە"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "شىلخاچە"
+ },
+ "se": {
+ "code": "se",
+ "name": "شىمالى سامىچە"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شىمالى ندەبەلەچە"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "شىمالىي سوڭخايچە"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "شىۋىتسارىيە ئېگىزلىك گېرمانچە"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "شىۋىتسارىيە فىرانسۇزچە"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "غەربى فىرىزيەچە"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فائېروچە"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "فۇلاچە"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فىرانسۇزچە"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "فىرىئۇلىچە"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فىلىپپىنچە"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فىنچە"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قازاقچە"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قىرغىزچە"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابۇۋېردىيانچە"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "كابىلېچە"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "كاتالانچە"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالېنجىنچە"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "كامباچە"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "كانادا ئىنگلىزچە"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "كانادا فىرانسۇزچە"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "كانناداچە"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "كەشمىرچە"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "كورېيەچە"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "كولىشچە"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "كونگو سىۋالىچە"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا چىنىچە"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كۋاسىيوچە"
+ },
+ "km": {
+ "code": "km",
+ "name": "كىخمېرچە"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "كىكۇيۇچە"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالىتسىيانچە"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گانداچە"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "گوللاندىيەچە"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گۇجاراتچە"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گۇسىچە"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گىرۇزىنچە"
+ },
+ "el": {
+ "code": "el",
+ "name": "گىرېكچە"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گىرېنلاندچە"
+ },
+ "de": {
+ "code": "de",
+ "name": "گېرمانچە"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "گېرمانچە شىۋىتسارىيە"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسچە"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لاتۋىيەچە"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگىچە"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لۇئوچە"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لۇبا-كاتانگاچە"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لۇياچە"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لىتۋاچە"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لىنگالاچە"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لىيۇكسېمبۇرگچە"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ماجارچە"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامچە"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ماداغاسقارچە"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ماراتچە"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسايچە"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكوندېچە"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماكۇۋاچە"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ماكېدونچە"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالايامچە"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالايچە"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتاچە"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "مەركىزى ئاتلاس تاماچاگىت"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "مورىسيېنچە"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "موڭغۇلچە"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "مۇئېرچە"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "مۇرەككەپ خەنچە"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مۇنداڭچە"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "مېرۇچە"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "مېكسىكا ئىسپانچە"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناماچە"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومباچە"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نورۋىگىيە بوكمالچە"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نىيانكولېچە"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نېپالچە"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ھازىرقى زامان ئۆلچەملىك ئەرەبچە"
+ },
+ "id": {
+ "code": "id",
+ "name": "ھىندونېزىيەچە"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ھىندىچە"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ۋالسېرچە"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ۋايچە"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ۋۇنجوچە"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ۋىيېتنامچە"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ۋېلشچە"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ياپونچە"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "ياڭبەنچە"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ياۋروپا ئىسپانچە"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ياۋروپا پورتۇگالچە"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "يورۇباچە"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "يۇقىرىقى سېربچە"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "يېڭى نورۋېگچە"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uk.json b/library/intl/resources/language/uk.json
new file mode 100644
index 000000000..50d152d7e
--- /dev/null
+++ b/library/intl/resources/language/uk.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанська"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанська"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарська"
+ },
+ "en": {
+ "code": "en",
+ "name": "англійська"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "англійська британська"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабська"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "астурська"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "асу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанс"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баса"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баскська"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафіа"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальська"
+ },
+ "be": {
+ "code": "be",
+ "name": "білоруська"
+ },
+ "my": {
+ "code": "my",
+ "name": "бірманська"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарська"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боснійська"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонська"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "букмол (Норвегія)"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вʼєтнамська"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваї"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Валзерська"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлійська"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "верхньолужицька"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "верхньонімецька (Швейцарія)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "вірменська"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вуньо"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "гаельська"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галісійська"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "гінді"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландська"
+ },
+ "el": {
+ "code": "el",
+ "name": "грецька"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинська"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджараті"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гусії"
+ },
+ "da": {
+ "code": "da",
+ "name": "данська"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "джерма"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-ке"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "дьола-фоні"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "есперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "естонська"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "західно-фризька"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуська"
+ },
+ "he": {
+ "code": "he",
+ "name": "іврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "індонезійська"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ірландська"
+ },
+ "is": {
+ "code": "is",
+ "name": "ісландська"
+ },
+ "es": {
+ "code": "es",
+ "name": "іспанська"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "іспанська (Європа)"
+ },
+ "it": {
+ "code": "it",
+ "name": "італійська"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабільська"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердіану"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахська"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калааллісут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонська"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмірська"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазіо"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизька"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайська"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "кіга"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кікуйю"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чіїні"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо сені"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "колоніан"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгійське суахілі"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейська"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерська"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "лангі"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоська"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвійська"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовська"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лінгала"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луйя"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люксембурзька"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "маврикійська креольська"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонська"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-меето"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагасійська"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайська"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаялам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтійська"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхі"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "масаї"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавська"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгольська"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ндебелє північна"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальська"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "нижньолужицька"
+ },
+ "de": {
+ "code": "de",
+ "name": "німецька"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "німецька швейцарська"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "нюношк (Норвегія)"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ньянколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "орія"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджабі"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перська"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польська"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португальська"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португальська (Європа)"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ретороманська"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "російська"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунська"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунді"
+ },
+ "se": {
+ "code": "se",
+ "name": "саамська північна"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "самбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "санго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "сангу"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "сена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "сербська"
+ },
+ "si": {
+ "code": "si",
+ "name": "сингальська"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "словацька"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "словенська"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "сога"
+ },
+ "so": {
+ "code": "so",
+ "name": "сомалі"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "стандартна марокканська берберська"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "суахілі"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "сучасна стандартна арабська"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таіта"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайська"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамільська"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тасавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачеліт"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "тесо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетська"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигринья"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонганська"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турецька"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "угорська"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбецька"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурська"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "українська"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарерська"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "філіппінська"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фінська"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандська"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французька"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фріульська"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауса"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватська"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "центральномароканська тамазіт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чеська"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведська"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "янгбен"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "японська"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ur-IN.json b/library/intl/resources/language/ur-IN.json
new file mode 100644
index 000000000..e544eb36e
--- /dev/null
+++ b/library/intl/resources/language/ur-IN.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمینی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبیک"
+ },
+ "et": {
+ "code": "et",
+ "name": "اسٹونی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "اسٹینڈرڈ مراقشی تمازیقی"
+ },
+ "it": {
+ "code": "it",
+ "name": "اطالوی"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "اغم"
+ },
+ "af": {
+ "code": "af",
+ "name": "افریقی"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "امریکی انگریزی"
+ },
+ "am": {
+ "code": "am",
+ "name": "امہاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "انڈونیثیائی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگریزی"
+ },
+ "or": {
+ "code": "or",
+ "name": "اورِیا"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایسپرانٹو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایو"
+ },
+ "az": {
+ "code": "az",
+ "name": "آزربائیجانی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "آسان چینی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹریائی جرمن"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیائی انگریزی"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "is": {
+ "code": "is",
+ "name": "آئس لینڈک"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "آئغور"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آئیرِش"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافيا"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "بالائی صوربی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبرا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیلی پرتگالی"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "برطانوی انگریزی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمی"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بوڈو"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنی"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلاروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بینا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پُرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولستانی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تمل"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تیتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تیسو"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگو"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھائی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ٹگرینیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونگن"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "جدید معیاری عربی"
+ },
+ "de": {
+ "code": "de",
+ "name": "جرمن"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا فونيا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیک"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ڈچ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینش"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "روایتی چینی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانوی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رونڈی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرمہ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ژونگکھا"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانجو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاٹ گیلِک"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیائی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سنہالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویڈش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سوئس جرمن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سوئس فرینچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سوئس ہائی جرمن"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سینا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شمالی دبیل"
+ },
+ "se": {
+ "code": "se",
+ "name": "شمالی سامی"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "شیغا"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "so": {
+ "code": "so",
+ "name": "صومالی"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرانی"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "فارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فارويز"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فرانسیسی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فلیپینو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "فیلنڈری"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فینیش"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبائلی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاخ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "کانگو سواحلی"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کتالان"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کراتی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرغیزی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کنڑ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریائی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویو"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینیڈین انگریزی"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کینیڈین فرانسیسی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیشیائی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گسی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گینڈا"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاؤ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لتھُواینین"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لٹويای"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لکسمبرگی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لِنگَلا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "لوئر صوربی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسای"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماشیم"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالائی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالٹی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مالدووا"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مڈدانگ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراٹهی"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی فریسیائی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونیائی"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملاگاسی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "منگؤلی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسیین"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "میرو"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "میکسیکن ہسپانوی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نارویجین بوکمل"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نورویجینی نینورسک"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نینکول"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "وائی"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "وسطی اٹلس تمازغت"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلش"
+ },
+ "es": {
+ "code": "es",
+ "name": "ہسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ہندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ہنگیرین"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ہؤسا"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "یورپی پرتگالی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "یورپی ہسپانوی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوکرینیائی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابويرديانو"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "كالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كوايسو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا شيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سينی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ur.json b/library/intl/resources/language/ur.json
new file mode 100644
index 000000000..4011f8c57
--- /dev/null
+++ b/library/intl/resources/language/ur.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "اپر سربیائی"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمینی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبیک"
+ },
+ "et": {
+ "code": "et",
+ "name": "اسٹونین"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "اسٹینڈرڈ مغربی امازیقی"
+ },
+ "it": {
+ "code": "it",
+ "name": "اطالوی"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "اغم"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "امریکی انگریزی"
+ },
+ "am": {
+ "code": "am",
+ "name": "امہاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "انڈونیثیائی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگریزی"
+ },
+ "or": {
+ "code": "or",
+ "name": "اورِیا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "اونجو"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایسپرانٹو"
+ },
+ "af": {
+ "code": "af",
+ "name": "ایفریکانز"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایو"
+ },
+ "az": {
+ "code": "az",
+ "name": "آزربائیجانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹریائی جرمن"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیائی انگریزی"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "is": {
+ "code": "is",
+ "name": "آئس لینڈک"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آئیرِش"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "بافيا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیلی پرتگالی"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "برطانوی انگریزی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمی"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بمبارا"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بوڈو"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنی"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلاروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بینا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پُرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولستانی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تائتا"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تمل"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تیسو"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگو"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھائی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ٹگرینیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونگن"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجی"
+ },
+ "de": {
+ "code": "de",
+ "name": "جرمن"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا فونيا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیک"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی (آسان کردہ)"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ڈچ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینش"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ذیلی سربیائی"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "روایتی چینی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومنی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رونڈی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ژونگکھا"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانغو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاٹ گیلِک"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیائی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سنہالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویڈش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سوئس جرمن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سوئس فرینچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سوئس ہائی جرمن"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سینا"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "سینٹرل ایٹلس ٹمازائٹ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شمالی دبیل"
+ },
+ "se": {
+ "code": "se",
+ "name": "شمالی سامی"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "so": {
+ "code": "so",
+ "name": "صومالی"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرانی"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "فارسی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "فرانسیسی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "فلیپینو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "فلیمِش"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "فیروئیز"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "فینیش"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبائلی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاخ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاٹالانین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "کانگو سواحلی"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کراتی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرغیزی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کنّاڈا"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریائی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکو"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینیڈین انگریزی"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کینیڈین فرانسیسی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیشیائی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گسی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "گومبا"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گینڈا"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاؤ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لتھُواینین"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لگژمبرگ کا باشندہ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لِنگَلا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لیٹوین"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ماڈرن اسٹینڈرڈ عربی"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسای"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماشیم"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالائی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالٹی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مالدووا"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراٹهی"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی فریسیئن"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونیائی"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملاگاسی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "منڈانگ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "منگؤلی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسیین"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "میرو"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "میکسیکن ہسپانوی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نارویجین بوکمل"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نورویجینی نینورسک"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نینکول"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "وائی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلش"
+ },
+ "es": {
+ "code": "es",
+ "name": "ہسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ہندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ہنگیرین"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ہؤسا"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "یورپی پرتگالی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "یورپی ہسپانوی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوکرینیائی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "یوئگہر"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابويرديانو"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "كالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كوايسو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا شيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سينی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uz-Cyrl.json b/library/intl/resources/language/uz-Cyrl.json
new file mode 100644
index 000000000..28f35748d
--- /dev/null
+++ b/library/intl/resources/language/uz-Cyrl.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Албанча"
+ },
+ "am": {
+ "code": "am",
+ "name": "Амхарча"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Арабча"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Арманча"
+ },
+ "af": {
+ "code": "af",
+ "name": "Африканча"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Баскча"
+ },
+ "be": {
+ "code": "be",
+ "name": "Беларусча"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Бенгалча"
+ },
+ "my": {
+ "code": "my",
+ "name": "Бирманча"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Болгарча"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Боснияча"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Венгрча"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Вьетнамча"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Галицийча"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Голландча"
+ },
+ "el": {
+ "code": "el",
+ "name": "Грекча"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Грузинча"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Гужарати"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ғарбий фризианча"
+ },
+ "da": {
+ "code": "da",
+ "name": "Данияча"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Зулу"
+ },
+ "he": {
+ "code": "he",
+ "name": "Иброний"
+ },
+ "en": {
+ "code": "en",
+ "name": "Инглизча"
+ },
+ "id": {
+ "code": "id",
+ "name": "Индонезияча"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ирландча"
+ },
+ "is": {
+ "code": "is",
+ "name": "Исландча"
+ },
+ "es": {
+ "code": "es",
+ "name": "Испанча"
+ },
+ "it": {
+ "code": "it",
+ "name": "Италянча"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Йоруба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Каталанча"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Кашмирча"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Корейсча"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Қирғизча"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Қозоқча"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Лао"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Латишча"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Литвача"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Люксембургча"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Македонча"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Малагаси"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Малайалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Малайча"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Мальтача"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Марати"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Непалча"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Норвегча Бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Норвегча Нинорск"
+ },
+ "az": {
+ "code": "az",
+ "name": "Озарбайжонча"
+ },
+ "de": {
+ "code": "de",
+ "name": "Олмонча"
+ },
+ "or": {
+ "code": "or",
+ "name": "Ория"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Панжобча"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Полякча"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Португалча"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Романча"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Руминча"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Русча"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Сербча"
+ },
+ "si": {
+ "code": "si",
+ "name": "Синхала"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Словакча"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Словенча"
+ },
+ "so": {
+ "code": "so",
+ "name": "Сомалича"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Стандарт Марокаш Тамазит"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Суахили"
+ },
+ "th": {
+ "code": "th",
+ "name": "Тайча"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Тамилча"
+ },
+ "te": {
+ "code": "te",
+ "name": "Телугу"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Тибетча"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Тигринья"
+ },
+ "to": {
+ "code": "to",
+ "name": "Тонгоча"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Туркча"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Уйғурча"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Украинча"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Урду"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Уэлсча"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ўзбек"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Фарэрча"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Филипино"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Финча"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Фламандча"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Форсча"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Французча"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Хауса"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Хитойча"
+ },
+ "km": {
+ "code": "km",
+ "name": "Хмерча"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Хорватча"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ҳиндча"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Чехча"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Шведча"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Швейцария немисчаси"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Эсперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "Эстонча"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Японча"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uz.json b/library/intl/resources/language/uz.json
new file mode 100644
index 000000000..12114dc68
--- /dev/null
+++ b/library/intl/resources/language/uz.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikancha"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ag‘emcha"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akancha"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albancha"
+ },
+ "am": {
+ "code": "am",
+ "name": "amxarcha"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "anʼanaviy xitoycha"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabcha"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armancha"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asucha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avstraliya inglizchasi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avstriya olmonchasi"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiycha"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarcha"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskcha"
+ },
+ "be": {
+ "code": "be",
+ "name": "belaruscha"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benacha"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalcha"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmancha"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodocha"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgarcha"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniycha"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliya portugalchasi"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoncha"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britaniya inglizchasi"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokcha"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "chexcha"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chigcha"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "datcha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embucha"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantocha"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoncha"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farercha"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipincha"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fincha"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandcha"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "forscha"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransuzcha"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galitsiycha"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandcha"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "gʻarbiy friziancha"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "gollandcha"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzincha"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujoratcha"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "guzcha"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindcha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ibroniy"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneyzcha"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglizcha"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandcha"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandcha"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispancha"
+ },
+ "it": {
+ "code": "it",
+ "name": "italyancha"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ivicha"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdiancha"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalallisutcha"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjincha"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambcha"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada fransuzchasi"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada inglizchasi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadcha"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmircha"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalancha"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuycha"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongo svahiliycha"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreyscha"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koryaboro senniycha"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvaziycha"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langcha"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoscha"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latishcha"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalcha"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovcha"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangcha"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luocha"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luycha"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lyuksemburgcha"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machamcha"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoncha"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-mittocha"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasiycha"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayamcha"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaycha"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltacha"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maqondiy"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratcha"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "markaziy atlas vaqt zonasi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaycha"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika ispanchasi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merucha"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mo‘g‘ulcha"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovan rumincha"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyencha"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangcha"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namacha"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemischa"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalcha"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombcha"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegcha bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegcha ninorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "noyrcha"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolcha"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "oʻzbekcha"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriycha"
+ },
+ "az": {
+ "code": "az",
+ "name": "ozarbayjoncha"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjobcha"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polyakcha"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalcha"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pushtu tili"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "qirgʻizcha"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "qobilcha"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "qoyra-chincha"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "qozoqcha"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "quyi sorbcha"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romancha"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombacha"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruandcha"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumincha"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundcha"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruscha"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburcha"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoancha"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguancha"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "seniycha"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbcha"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalacha"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "shimoliy ndebelcha"
+ },
+ "se": {
+ "code": "se",
+ "name": "shimoliy semiycha"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shoniycha"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "shvedcha"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Shvesariya fransuzchasi"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Shvesariya olmonchasi"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "shveysariya nemischasi"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinholcha"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakcha"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovencha"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "soddalashtirilgan xitoycha"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogancha"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalicha"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standart marokash tamazit"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilcha"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachilgitcha"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitcha"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilcha"
+ },
+ "th": {
+ "code": "th",
+ "name": "taycha"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugvancha"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesoancha"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetcha"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrincha"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongocha"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tosovoqcha"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkcha"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uelscha"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraincha"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urducha"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uygʻurcha"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vayancha"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "vengrcha"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjoancha"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vyetnamcha"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "xauscha"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xitoycha"
+ },
+ "km": {
+ "code": "km",
+ "name": "xmercha"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "xorvatcha"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "yaponcha"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Yevropa ispanchasi"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Yevropa portugalchasi"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "yola-fonyicha"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubcha"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "yovoncha"
+ },
+ "el": {
+ "code": "el",
+ "name": "yunoncha"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yuqori sorbcha"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "zamonavij standart arabcha"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmacha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluancha"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vai-Latn.json b/library/intl/resources/language/vai-Latn.json
new file mode 100644
index 000000000..520e4bae2
--- /dev/null
+++ b/library/intl/resources/language/vai-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akaŋ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amihári"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bhelarusaŋ"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bhɛmísi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bhɛŋgáli"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bhɔgerɛŋ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chaniĩ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Chɛ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɔchi"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fɛŋsi"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawusa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "el": {
+ "code": "el",
+ "name": "Hɛlɛŋ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Híiŋdi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔŋgérɛŋ"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Índonisiyɛŋ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itáliyɛŋ"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jamáĩ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaníĩ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kimɛɛ̃ tɛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koríyɛŋ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Lahabu"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maléee"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nipali"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ɔdu"
+ },
+ "es": {
+ "code": "es",
+ "name": "Panyɛĩ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pɛɛsiyɛŋ"
+ },
+ "en": {
+ "code": "en",
+ "name": "Poo"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Potokíi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pɔ́lési"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Puŋjabhi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romíniyɛŋ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rɔshiyɛŋ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somáli"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Súwídɛŋ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tái"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamíli"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tɔ́ki"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viyamíĩ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yóróbha"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Yukureniyɛŋ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zúlu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vai.json b/library/intl/resources/language/vai.json
new file mode 100644
index 000000000..27017be31
--- /dev/null
+++ b/library/intl/resources/language/vai.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ꔆꕞꖩꔻ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ꔤꕚꔷꘂꘋ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ꔤꖆꕇꔻꘂꘋ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ꔦꔺ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ꔲꕩꕯꕆꔧ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ꕃꘈꗢ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ꕇꕐꔷ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ꕉꕆꕌꔸ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ꕉꕪꘋ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ꕌꖙꕢ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ꕐꘊꔧ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ꕙꔤ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ꕚꔤ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ꕚꕆꔷ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ꕞꕌꖝ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ꕦꕇꔧ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ꕧꕐꕇꔧ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ꕧꕮꔧ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ꕮꔒꔀ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ꕶꕱ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ꕶꕿꕃꔤ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ꖄꕆꕇꘂꘋ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ꖇꕮꔷ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ꖎꖄꕑ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ꖏꔸꘂꘋ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ꖛꕨꔬ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ꖬꔨꗵꘋ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ꖮꖨ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ꖳꖴꔓꕇꘂꘋ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ꖺꖦ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ꖽꔟꗸꘋ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ꗁꔒꔻ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ꗂꔠꗸꘋ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ꗋꕃ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ꗍꔿ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ꗐꖺꔻꘂꘋ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ꗥꗷꘋ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ꗨꗡꔻꘂꘋ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ꗩꕆꔻ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ꗩꕭꔷ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ꗱꘋꔻ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ꗿꗡ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vi.json b/library/intl/resources/language/vi.json
new file mode 100644
index 000000000..9601780eb
--- /dev/null
+++ b/library/intl/resources/language/vi.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Tiếng Ả Rập"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Tiếng Ả Rập Hiện đại"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Tiếng Aghem"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Tiếng Ai-len"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Tiếng Akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tiếng Amharic"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Tiếng An-ba-ni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Tiếng Anh"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Tiếng Anh (Anh)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Tiếng Anh (Mỹ)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Tiếng Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Tiếng Asturias"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Tiếng Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Tiếng Azerbaijan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tiếng Ba Lan"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tiếng Ba Tư"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Tiếng Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Tiếng Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Tiếng Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Tiếng Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tiếng Belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Tiếng Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tiếng Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Tiếng Bodo"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Tiếng Bồ Đào Nha"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Tiếng Bồ Đào Nha (Braxin)"
+ },
+ "br": {
+ "code": "br",
+ "name": "Tiếng Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tiếng Bulgaria"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Tiếng Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Tiếng Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Tiếng Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Tiếng Cologne"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Tiếng Croatia"
+ },
+ "he": {
+ "code": "he",
+ "name": "Tiếng Do Thái"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Tiếng Dzongkha"
+ },
+ "da": {
+ "code": "da",
+ "name": "Tiếng Đan Mạch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Tiếng Đức"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Tiếng Đức (Thụy Sĩ)"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Tiếng Embu"
+ },
+ "et": {
+ "code": "et",
+ "name": "Tiếng Estonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Tiếng Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Tiếng Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Tiếng Faore"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Tiếng Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Tiếng Frisia"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Tiếng Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Tiếng Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Tiếng Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Tiếng Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Tiếng Gruzia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Tiếng Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Tiếng Gusii"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Tiếng Hà Lan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Tiếng Hạ Sorbia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Tiếng Hàn"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tiếng Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tiếng Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tiếng Hungary"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tiếng Hy Lạp"
+ },
+ "is": {
+ "code": "is",
+ "name": "Tiếng Iceland"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tiếng Indonesia"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Tiếng Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Tiếng Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Tiếng Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Tiếng Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Tiếng Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Tiếng Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Tiếng Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Tiếng Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Tiếng Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Tiếng Khơ-me"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Tiếng Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Tiếng Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Tiếng Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Tiếng Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Tiếng Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Tiếng Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Tiếng Lào"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Tiếng Latvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Tiếng Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Tiếng Lít-va"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Tiếng Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Tiếng Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Tiếng Luxembourg"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Tiếng Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Tiếng Macedonia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Tiếng Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Tiếng Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Tiếng Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Tiếng Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Tiếng Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tiếng Malaysia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Tiếng Malt"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Tiếng Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Tiếng Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Tiếng Meru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Tiếng Miến Điện"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Tiếng Moldova"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Tiếng Morisyen"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Tiếng Mông Cổ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Tiếng Mundang"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Tiếng Na Uy (Bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Tiếng Na Uy (Nynorsk)"
+ },
+ "af": {
+ "code": "af",
+ "name": "Tiếng Nam Phi"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Tiếng Nam Tư"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Tiếng Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Tiếng Ndebele Miền Bắc"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tiếng Nepal"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tiếng Nga"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Tiếng Ngomba"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tiếng Nhật"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Tiếng Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Tiếng Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Tiếng Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Tiếng Pashto"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tiếng Pháp"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Tiếng Phần Lan"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Tiếng Philipin"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tiếng Punjab"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Tiếng Quốc Tế Ngữ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Tiếng Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Tiếng Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Tiếng Rumani"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Tiếng Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Tiếng Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Tiếng Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Tiếng Sami Miền Bắc"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Tiếng Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Tiếng Sangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tiếng Séc"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Tiếng Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Tiếng Serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Tiếng Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Tiếng Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Tiếng Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Tiếng Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Tiếng Slovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Tiếng Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Tiếng Somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Tiếng Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Tiếng Swahili Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tiếng Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Tiếng Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tiếng Tamazight Chuẩn của Ma-rốc"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tiếng Tamazight Miền Trung Ma-rốc"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tiếng Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tiếng Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "Tiếng Tây Ban Nha"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tiếng Tây Tạng"
+ },
+ "te": {
+ "code": "te",
+ "name": "Tiếng Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Tiếng Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tiếng Thái"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tiếng Thổ Nhĩ Kỳ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Tiếng Thụy Điển"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Tiếng Thượng Giéc-man (Thụy Sĩ)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Tiếng Thượng Sorbia"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tiếng Tigrigya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tiếng Tonga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tiếng Trung"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tiếng Ucraina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Tiếng Uđu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Tiếng Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Tiếng Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Tiếng Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Tiếng Việt"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Tiếng Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Tiếng Wales"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Tiếng Walser"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Tiếng Xentơ (Xcốt len)"
+ },
+ "it": {
+ "code": "it",
+ "name": "Tiếng Ý"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Tiếng Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tiếng Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Tiếng Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Tiếng Zulu"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vun.json b/library/intl/resources/language/vun.json
new file mode 100644
index 000000000..f8f0b4735
--- /dev/null
+++ b/library/intl/resources/language/vun.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Kyivunjo"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/wae.json b/library/intl/resources/language/wae.json
new file mode 100644
index 000000000..69098e0c8
--- /dev/null
+++ b/library/intl/resources/language/wae.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikáns"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaniš"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanišes Engliš"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhariš"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabiš"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeniš"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Auštrališes Engliš"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskiš"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengališ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosniš"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianišes Portugisiš"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britišes Engliš"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgariš"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmesiš"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butaniš"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesiš"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Däniš"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engliš"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estniš"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipiniš"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finiš"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämiš"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiziš"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgiš"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gričiš"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräiš"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holändiš"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberišes Portugisiš"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Iberišes Schpaniš"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iisländiš"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesiš"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iriš"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italieniš"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaniš"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodšaniš"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadišes Engliš"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadišes Wälš"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kašmiriš"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaniš"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazačiš"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisiš"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaniš"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatiš"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiš"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettiš"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauiš"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgiš"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagási"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaíš"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesiš"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedoniš"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoliš"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesiš"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nordsamiš"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegiš Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegiš Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Öštričišes Titš"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandšabiš"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paštu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persiš"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polniš"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugisiš"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätromaniš"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumäniš"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusiš"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpaniš"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwediš"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwizer Hočtitš"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwizer Wälš"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "az": {
+ "code": "az",
+ "name": "Serbaidšaniš"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbiš"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalesiš"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakiš"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloweniš"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somališ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheliš"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiliš"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändiš"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetiš"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "de": {
+ "code": "de",
+ "name": "Titš"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditionells Chinesiš"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tšečiš"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkiš"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uiguriš"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainiš"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungariš"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekiš"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Vereifačts Chinesiš"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesiš"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisiš"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Wälš"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wísrussiš"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/xog.json b/library/intl/resources/language/xog.json
new file mode 100644
index 000000000..41ce6cd02
--- /dev/null
+++ b/library/intl/resources/language/xog.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Olu-urudu"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Oluakaani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Oluamhariki"
+ },
+ "my": {
+ "code": "my",
+ "name": "Olubbama"
+ },
+ "be": {
+ "code": "be",
+ "name": "Olubelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Olubengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Olubulugariya"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Olucayina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oluceeke"
+ },
+ "de": {
+ "code": "de",
+ "name": "Oludaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Olufalansa"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oluhangare"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oluhawuza"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oluhindu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Oluholandi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Olujapani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Olukme"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Olukoreya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Olulasa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Olulomaniya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Olumalayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Olunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Olungereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Oluperusi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Olupolandi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Olupotugiizi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Olupunjabi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Olusipanya"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Olusoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Olusomaliya"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oluswideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Olutake"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Olutamiiru"
+ },
+ "th": {
+ "code": "th",
+ "name": "Oluttaayi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oluvyetinaamu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oluwarabu"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oluyindonezya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oluyitale"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oluyonaani"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oluyoruba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oluyukurayine"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oluzzulu"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yav.json b/library/intl/resources/language/yav.json
new file mode 100644
index 000000000..ab34736d3
--- /dev/null
+++ b/library/intl/resources/language/yav.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akánɛ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "amalíke"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "my": {
+ "code": "my",
+ "name": "bímanɛ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgálɛ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cɛ́kɛ́ɛ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "feleŋsí"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "índí"
+ },
+ "id": {
+ "code": "id",
+ "name": "índonísiɛ"
+ },
+ "en": {
+ "code": "en",
+ "name": "íŋgilísé"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliɛ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kímɛɛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kolíe"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "máliɛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ndiáman"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nilándɛ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "nuasue"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "es": {
+ "code": "es",
+ "name": "nuɛspanyɔ́lɛ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "nufiɛtnamíɛŋ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "nukeleniɛ́ŋɛ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "nulumɛ́ŋɛ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "nulúse"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "nulutú"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nunipálɛ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "nupɛ́lisɛ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "nupolonɛ́ɛ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "nupɔlitukɛ́ɛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "nupunsapíɛ́"
+ },
+ "so": {
+ "code": "so",
+ "name": "nusomalíɛ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "nusuetua"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "nusulú"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "nutámule"
+ },
+ "th": {
+ "code": "th",
+ "name": "nutáyɛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "nutúluke"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "nuyolúpa"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "ŋndiáman"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ɔ́ŋgɛ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "pakas"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "́pakas"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "pengálɛ́ɛ"
+ },
+ "be": {
+ "code": "be",
+ "name": "pielúse"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinúɛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "el": {
+ "code": "el",
+ "name": "yavánɛ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yo-BJ.json b/library/intl/resources/language/yo-BJ.json
new file mode 100644
index 000000000..5ebc90216
--- /dev/null
+++ b/library/intl/resources/language/yo-BJ.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "af": {
+ "code": "af",
+ "name": "Èdè Afrikani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Èdè Akani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Èdè Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Èdè Amariki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Èdè ara Somalia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Èdè Arabiki"
+ },
+ "az": {
+ "code": "az",
+ "name": "Èdè Azerbaijani"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Èdè Baski"
+ },
+ "be": {
+ "code": "be",
+ "name": "Èdè Belarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Èdè Bengali"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Èdè Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Èdè Bretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Èdè Bugaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Èdè Bumiisi"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Èdè Catala"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Èdè Duki"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Èdè Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Èdè Estonia"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Èdè Faransé"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Èdè Faroesi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Èdè Finisi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Èdè Frisia"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Èdè Gaelik ti Ilu Scotland"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Èdè Galicia"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Èdè Georgia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Èdè Gɛ̀ɛ́sì"
+ },
+ "el": {
+ "code": "el",
+ "name": "Èdè Giriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Èdè Gujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Èdè Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Èdè Heberu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Èdè Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Èdè Hungaria"
+ },
+ "is": {
+ "code": "is",
+ "name": "Èdè Icelandic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Èdè Ile Armenia"
+ },
+ "da": {
+ "code": "da",
+ "name": "Èdè Ilɛ̀ Denmark"
+ },
+ "de": {
+ "code": "de",
+ "name": "Èdè Ilɛ̀ Gemani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Èdè Ilɛ̀ Polandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èdè Indonasia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Èdè Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Èdè Italiani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Èdè Japanisi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Èdè Jetinamu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Èdè kameri"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Èdè Kannada"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Èdè Koria"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Èdè Kroatia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Èdè Latvianu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Èdè Lithuania"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Èdè Macedonia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Èdè Malaya"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Èdè Malta"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Èdè Mandari"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Èdè marathi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Èdè Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Èdè Pasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Èdè Pɔtugi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Èdè Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Èdè Romania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Èdè ̣Rɔɔsia"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Èdè seeki"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Èdè Serbia"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Èdè Shulu"
+ },
+ "si": {
+ "code": "si",
+ "name": "Èdè Sinhalese"
+ },
+ "es": {
+ "code": "es",
+ "name": "Èdè Sipanisi"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Èdè Slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Èdè Slovenia"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Èdè Suwidiisi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Èdè Swahili"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Èdè Tagalogi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Èdè Tai"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Èdè Tamili"
+ },
+ "te": {
+ "code": "te",
+ "name": "Èdè Telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Èdè Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Èdè Tɔɔkisi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Èdè Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Èdè Ukania"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Èdè Uzbek"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Èdè Welshi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Èdè Yorùbá"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yo.json b/library/intl/resources/language/yo.json
new file mode 100644
index 000000000..968fb13be
--- /dev/null
+++ b/library/intl/resources/language/yo.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "af": {
+ "code": "af",
+ "name": "Èdè Afrikani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Èdè Akani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Èdè Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Èdè Amariki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Èdè ara Somalia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Èdè Arabiki"
+ },
+ "az": {
+ "code": "az",
+ "name": "Èdè Azerbaijani"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Èdè Baski"
+ },
+ "be": {
+ "code": "be",
+ "name": "Èdè Belarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Èdè Bengali"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Èdè Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Èdè Bretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Èdè Bugaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Èdè Bumiisi"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Èdè Catala"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Èdè Duki"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Èdè Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Èdè Estonia"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Èdè Faransé"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Èdè Faroesi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Èdè Finisi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Èdè Frisia"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Èdè Gaelik ti Ilu Scotland"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Èdè Galicia"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Èdè Georgia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Èdè Gẹ̀ẹ́sì"
+ },
+ "el": {
+ "code": "el",
+ "name": "Èdè Giriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Èdè Gujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Èdè Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Èdè Heberu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Èdè Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Èdè Hungaria"
+ },
+ "is": {
+ "code": "is",
+ "name": "Èdè Icelandic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Èdè Ile Armenia"
+ },
+ "da": {
+ "code": "da",
+ "name": "Èdè Ilẹ̀ Denmark"
+ },
+ "de": {
+ "code": "de",
+ "name": "Èdè Ilẹ̀ Gemani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Èdè Ilẹ̀ Polandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èdè Indonasia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Èdè Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Èdè Italiani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Èdè Japanisi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Èdè Jetinamu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Èdè kameri"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Èdè Kannada"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Èdè Koria"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Èdè Kroatia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Èdè Latvianu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Èdè Lithuania"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Èdè Macedonia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Èdè Malaya"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Èdè Malta"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Èdè Mandari"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Èdè marathi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Èdè Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Èdè Pasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Èdè Pọtugi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Èdè Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Èdè Romania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Èdè ̣Rọọsia"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Èdè seeki"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Èdè Serbia"
+ },
+ "si": {
+ "code": "si",
+ "name": "Èdè Sinhalese"
+ },
+ "es": {
+ "code": "es",
+ "name": "Èdè Sipanisi"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Èdè Slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Èdè Slovenia"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Èdè Suwidiisi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Èdè Swahili"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Èdè Ṣulu"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Èdè Tagalogi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Èdè Tai"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Èdè Tamili"
+ },
+ "te": {
+ "code": "te",
+ "name": "Èdè Telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Èdè Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Èdè Tọọkisi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Èdè Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Èdè Ukania"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Èdè Uzbek"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Èdè Welshi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Èdè Yorùbá"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zgh.json b/library/intl/resources/language/zgh.json
new file mode 100644
index 000000000..6b6d9172f
--- /dev/null
+++ b/library/intl/resources/language/zgh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ⵜⴰⴱⵉⵔⵎⴰⵏⵉⵜ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ⵜⴰⴱⵍⵖⴰⵔⵉⵜ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ⵜⴰⴱⵏⵊⴰⴱⵉⵜ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ⵜⴰⴱⵏⵖⴰⵍⵉⵜ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ⵜⴰⴱⵓⵍⵓⵏⵉⵜ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ⵜⴰⴱⵕⵟⵇⵉⵣⵜ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ⵜⴰⴳⵔⵉⴳⵉⵜ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ⵜⴰⴼⵓⵔⵙⵉⵜ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ⵜⴰⴽⴰⵏⵜ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ⵜⴰⴽⵓⵔⵉⵜ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ⵜⴰⵀⴰⵡⵙⴰⵜ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ⵜⴰⵀⵉⵏⴷⵉⵜ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ⵜⴰⵀⵏⵖⴰⵔⵉⵜ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ⵜⴰⵄⵔⴰⴱⵜ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ⵜⴰⵅⵎⵉⵔⵜ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ⵜⴰⵍⵉⵎⴰⵏⵜ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ⵜⴰⵎⴰⵍⴰⵡⵉⵜ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ⵜⴰⵎⴰⵣⵉⵖⵜ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ⵜⴰⵎⵀⴰⵔⵉⵜ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ⵜⴰⵏⴳⵍⵉⵣⵜ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ⵜⴰⵏⴷⵓⵏⵉⵙⵉⵜ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ⵜⴰⵏⵉⴱⴰⵍⵉⵜ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ⵜⴰⵔⵓⵎⴰⵏⵉⵜ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ⵜⴰⵔⵓⵙⵉⵜ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ⵜⴰⵙⵓⵎⴰⵍⵉⵜ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ⵜⴰⵙⵡⵉⴷⵉⵜ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ⵜⴰⵛⵉⵏⵡⵉⵜ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ⵜⴰⵜⴰⵎⵉⵍⵜ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ⵜⴰⵜⵓⵔⴽⵉⵜ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ⵜⴰⵟⴰⵍⵢⴰⵏⵜ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ⵜⴰⵢⵔⵓⴱⴰⵜ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ⵜⴰⵣⵓⵍⵓⵜ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ⵜⵓⴽⵔⴰⵏⵉⵜ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ⵜⵓⵔⴷⵓⵜ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-HK.json b/library/intl/resources/language/zh-Hans-HK.json
new file mode 100644
index 000000000..6c5f166f3
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-HK.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚思文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿苏文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亚文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴萨文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亚文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北恩德贝勒文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北萨米文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "贝纳文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "不丹文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩艮巴"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁体中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律宾文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "格鲁吉亚文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈萨克文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪萨文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷兰文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉尔吉斯文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉库尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布佛得鲁文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡伦金文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "卡纳达文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "兰博文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "老挝文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "卢奥文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "卢干达文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "卢森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "卢雅文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "鲁巴加丹加文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马来文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅鲁文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美式英文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷兰文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪威博克马尔文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪威尼诺斯克文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "萨伊文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布鲁文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "绍纳文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "苏格兰盖尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马齐格特文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰卢固文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "旺杜文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威尔士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "维吾尔文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯来文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡萄牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西班牙文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "印地文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印度尼西亚文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英式英文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约鲁巴文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖鲁文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-MO.json b/library/intl/resources/language/zh-Hans-MO.json
new file mode 100644
index 000000000..6c5f166f3
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-MO.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚思文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿苏文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亚文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴萨文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亚文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北恩德贝勒文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北萨米文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "贝纳文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "不丹文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩艮巴"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁体中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律宾文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "格鲁吉亚文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈萨克文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪萨文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷兰文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉尔吉斯文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉库尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布佛得鲁文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡伦金文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "卡纳达文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "兰博文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "老挝文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "卢奥文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "卢干达文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "卢森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "卢雅文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "鲁巴加丹加文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马来文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅鲁文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美式英文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷兰文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪威博克马尔文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪威尼诺斯克文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "萨伊文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布鲁文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "绍纳文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "苏格兰盖尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马齐格特文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰卢固文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "旺杜文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威尔士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "维吾尔文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯来文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡萄牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西班牙文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "印地文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印度尼西亚文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英式英文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约鲁巴文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖鲁文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-SG.json b/library/intl/resources/language/zh-Hans-SG.json
new file mode 100644
index 000000000..c5327f054
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-SG.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚思特文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿苏文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亚文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴萨文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亚文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北恩德贝勒文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北萨米文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "贝纳文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "不丹文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩艮巴"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁体中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律宾文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "格鲁吉亚文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈萨克文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪萨文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷兰文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉尔吉斯文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉库尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布佛得鲁文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡伦金文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "卡纳达文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "兰博文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "老挝文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "卢奥文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "卢干达文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "卢森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "卢雅文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "鲁巴加丹加文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马来文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅鲁文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美国英文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷兰文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪威博克马尔文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪威尼诺斯克文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "萨伊文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布鲁文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "绍纳文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "苏格兰盖尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马齐格特文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰卢固文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "旺杜文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威尔士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "维吾尔文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯来文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡萄牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西班牙文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "印地文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印度尼西亚文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英国英文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约鲁巴文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖鲁文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant-HK.json b/library/intl/resources/language/zh-Hant-HK.json
new file mode 100644
index 000000000..177cca849
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant-HK.json
@@ -0,0 +1,738 @@
+{
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "干達文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙語"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪威文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亞文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴薩文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加里西亞文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北印度文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布威爾第文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡倫金文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "史瓦希里文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼揚科萊文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印尼文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉庫尤文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉爾吉斯文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅地亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "坎納達文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "貝納文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "依汪都文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "坦米爾文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "宗卡文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "東加文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "東桑海文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿坎文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亞文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷蘭文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威爾斯文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美國英文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "耐諾斯克挪威文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英國英文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "修納文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "剛果史瓦希里文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩格姆巴文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "烏克蘭文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "烏茲別克文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "烏爾都文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "納馬文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加斯文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬恰美文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "現代標準阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷蘭文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格利尼亞文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律賓文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奧地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奧里雅文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士德語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維吾爾文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "摩洛哥標準塔馬齊格特文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦羅馬尼亞文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "歐洲西班牙文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "歐洲葡萄牙文"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳洲英文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁體中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "賽納文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭博文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant-MO.json b/library/intl/resources/language/zh-Hant-MO.json
new file mode 100644
index 000000000..177cca849
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant-MO.json
@@ -0,0 +1,738 @@
+{
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "干達文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙語"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪威文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亞文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴薩文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加里西亞文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北印度文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布威爾第文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡倫金文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "史瓦希里文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼揚科萊文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印尼文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉庫尤文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉爾吉斯文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅地亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "坎納達文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "貝納文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "依汪都文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "坦米爾文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "宗卡文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "東加文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "東桑海文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿坎文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亞文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷蘭文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威爾斯文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美國英文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "耐諾斯克挪威文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英國英文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "修納文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "剛果史瓦希里文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩格姆巴文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "烏克蘭文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "烏茲別克文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "烏爾都文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "納馬文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加斯文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬恰美文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "現代標準阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷蘭文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格利尼亞文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律賓文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奧地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奧里雅文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士德語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維吾爾文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "摩洛哥標準塔馬齊格特文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦羅馬尼亞文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "歐洲西班牙文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "歐洲葡萄牙文"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳洲英文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁體中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "賽納文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭博文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant.json b/library/intl/resources/language/zh-Hant.json
new file mode 100644
index 000000000..4d7dcb999
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "干達文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪威文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亞文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴薩文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亞文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北印度文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布威爾第文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡倫金文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "史瓦希里文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "史瓦希里文(剛果)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼揚科萊文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布列塔尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印尼文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉庫尤文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉爾吉斯文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "西班牙文(歐洲)"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅埃西亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "坎那達文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "貝納文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "依汪都文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "坦米爾文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "宗卡文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "東加文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "東桑海文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿坎文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亞文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷蘭文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威爾斯文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "耐諾斯克挪威文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩格姆巴文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "烏克蘭文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "烏茲別克文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "烏都文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "納馬文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加什文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬恰美文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "高地德文(瑞士)"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "現代標準阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷蘭文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格利尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛維尼亞文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律賓文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "塞內加爾文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "it": {
+ "code": "it",
+ "name": "義大利文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "葡萄牙文(歐洲)"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維吾爾文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "標準摩洛哥塔馬塞特文"
+ },
+ "or": {
+ "code": "or",
+ "name": "歐利亞文"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁體中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "賽納文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭博文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh.json b/library/intl/resources/language/zh.json
new file mode 100644
index 000000000..85169c37b
--- /dev/null
+++ b/library/intl/resources/language/zh.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚思特文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿苏文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "巴菲亚文"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "巴萨文"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡萄牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "班巴拉文"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "保加利亚文"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北恩德贝勒文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北萨米文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "贝纳文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "博多文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "不丹文"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "藏文"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "德文"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "俄文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "恩布文"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "恩艮巴"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "繁体中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "菲律宾文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "格鲁吉亚文"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "古吉拉特文"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "古西文"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈萨克文"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪萨文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "荷兰文"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "吉尔吉斯文"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "吉库尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "捷克文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "卡比尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "卡布佛得鲁文"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "卡伦金文"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "卡姆巴文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "卡纳达文"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "兰博文"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗吉文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "老挝文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "卢奥文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "卢干达文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "卢森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "卢雅文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "鲁巴加丹加文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马来文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅鲁文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美式英文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "蒙古文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西班牙文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "南非荷兰文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪威博克马尔文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪威尼诺斯克文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "欧洲葡萄牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "欧洲西班牙文"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "旁遮普文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "葡萄牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "萨伊文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布鲁文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "桑古文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "绍纳文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛伐克文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "苏格兰盖尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马齐格特文"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "台塔文"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰卢固文"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "泰文"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "提格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "旺杜文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "威尔士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "维吾尔文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯来文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西班牙文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "洋卞文"
+ },
+ "it": {
+ "code": "it",
+ "name": "意大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "印地文"
+ },
+ "id": {
+ "code": "id",
+ "name": "印度尼西亚文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英式英文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约鲁巴文"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越南文"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖鲁文"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zu.json b/library/intl/resources/language/zu.json
new file mode 100644
index 000000000..cffe0347a
--- /dev/null
+++ b/library/intl/resources/language/zu.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "i-American English"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "i-British English"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "i-Canadian English"
+ },
+ "en": {
+ "code": "en",
+ "name": "i-English"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "i-Lao"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "i-Norwegian Nynorsk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "i-Scottish Gaelic"
+ },
+ "si": {
+ "code": "si",
+ "name": "i-Sinhala"
+ },
+ "af": {
+ "code": "af",
+ "name": "isi-Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "isi-Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "isi-Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "isi-Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "isi-Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "isi-Arabic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Isi-Arabic Esijwayelekile Samanje"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "isi-Armenia"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "isi-Austrian German"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "isi-Austrillian English"
+ },
+ "az": {
+ "code": "az",
+ "name": "isi-Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "isi-Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "isi-Bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "isi-Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "isi-Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "isi-Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "isi-Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "isi-Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "isi-Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "isi-Brazillian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Isi-Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "isi-Bulgari"
+ },
+ "my": {
+ "code": "my",
+ "name": "isi-Burmese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "isi-Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "isi-Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "isi-Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Isi-Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "isi-Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "isi-Chinese"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "isi-Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "isi-Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "isi-Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "isi-Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "isi-Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "isi-Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "isi-Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "isi-Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "isi-Estonia"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "isi-European Portuguese"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Isi-Ewe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "isi-Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "isi-Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "isi-Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "isi-Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "isi-French"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "isi-Galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Isi-Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "isi-Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "isi-German"
+ },
+ "el": {
+ "code": "el",
+ "name": "isi-Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "isi-Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "isi-Gusli"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "isi-Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "isi-Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "isi-Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "isi-Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "isi-Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "isi-Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "isi-Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "isi-Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "isi-Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "isi-Jola-Fonyl"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "isi-Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "isi-Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "isi-Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "isi-Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "isi-Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "isi-Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "isi-Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "isi-Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "isi-Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "isi-Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "isi-Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "isi-Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "isi-Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "isi-Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "isi-Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "isi-Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "isi-Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "isi-Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "isi-Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "isi-Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "isi-Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "isi-Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "isi-Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "isi-Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "isi-Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "isi-Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "isi-Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "isi-Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "isi-Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "isi-Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "isi-Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "isi-Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "isi-Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "isi-Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "isi-Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "isi-Mexican Spanish"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "isi-Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "isi-Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Isi-Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "isi-Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "isi-Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "isi-Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "isi-Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "isi-North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "isi-Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "isi-Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "isi-Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Isi-Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "isi-Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "isi-Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "isi-Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "isi-Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "isi-Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "isi-Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "isi-Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "isi-Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "isi-Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "isi-Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "isi-Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "isi-Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "isi-Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "isi-Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "isi-Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "isi-Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "isi-Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "isi-Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "isi-Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "isi-Sipmlified Chinese"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "isi-Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "isi-Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "isi-Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "isi-Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "isi-Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "isi-Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "isi-Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isi-Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "isi-Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "isi-Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "isi-Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "isi-Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "isi-Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "isi-Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "isi-Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "isi-Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "isi-Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "isi-Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "isi-Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "isi-Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Isi-Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "isi-Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "isi-Turkish"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "isi-Uighur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "isi-Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "isi-Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "isi-Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "isi-Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "isi-Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "isi-Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "isi-Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "isi-Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "isi-Western Frisian"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "isi-Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "isi-Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "isiZulu"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/aa.json b/library/intl/resources/number_format/aa.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/aa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/af-NA.json b/library/intl/resources/number_format/af-NA.json
new file mode 100644
index 000000000..7ce8a94ca
--- /dev/null
+++ b/library/intl/resources/number_format/af-NA.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/af.json b/library/intl/resources/number_format/af.json
new file mode 100644
index 000000000..198b1e963
--- /dev/null
+++ b/library/intl/resources/number_format/af.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/agq.json b/library/intl/resources/number_format/agq.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/agq.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ak.json b/library/intl/resources/number_format/ak.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ak.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/am.json b/library/intl/resources/number_format/am.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/am.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-DZ.json b/library/intl/resources/number_format/ar-DZ.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-DZ.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-EH.json b/library/intl/resources/number_format/ar-EH.json
new file mode 100644
index 000000000..474e484f4
--- /dev/null
+++ b/library/intl/resources/number_format/ar-EH.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-LY.json b/library/intl/resources/number_format/ar-LY.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-LY.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-MA.json b/library/intl/resources/number_format/ar-MA.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-MA.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-TN.json b/library/intl/resources/number_format/ar-TN.json
new file mode 100644
index 000000000..3d40ecdee
--- /dev/null
+++ b/library/intl/resources/number_format/ar-TN.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar.json b/library/intl/resources/number_format/ar.json
new file mode 100644
index 000000000..a027ffa1f
--- /dev/null
+++ b/library/intl/resources/number_format/ar.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arab",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‏+",
+ "minus_sign": "‏-",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/as.json b/library/intl/resources/number_format/as.json
new file mode 100644
index 000000000..ef4b5e798
--- /dev/null
+++ b/library/intl/resources/number_format/as.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "beng",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/asa.json b/library/intl/resources/number_format/asa.json
new file mode 100644
index 000000000..5ca4d4e1c
--- /dev/null
+++ b/library/intl/resources/number_format/asa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ast.json b/library/intl/resources/number_format/ast.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/ast.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/az.json b/library/intl/resources/number_format/az.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/az.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bas.json b/library/intl/resources/number_format/bas.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/bas.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/be.json b/library/intl/resources/number_format/be.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/be.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bem.json b/library/intl/resources/number_format/bem.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/bem.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bez.json b/library/intl/resources/number_format/bez.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/bez.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bg.json b/library/intl/resources/number_format/bg.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/bg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bm.json b/library/intl/resources/number_format/bm.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/bm.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bn.json b/library/intl/resources/number_format/bn.json
new file mode 100644
index 000000000..af72c4966
--- /dev/null
+++ b/library/intl/resources/number_format/bn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "beng",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "#,##,##0.00¤",
+ "accounting_currency_pattern": "#,##,##0.00¤;(#,##,##0.00¤)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bo.json b/library/intl/resources/number_format/bo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/bo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/br.json b/library/intl/resources/number_format/br.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/br.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/brx.json b/library/intl/resources/number_format/brx.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/brx.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bs.json b/library/intl/resources/number_format/bs.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/bs.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ca.json b/library/intl/resources/number_format/ca.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/ca.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cgg.json b/library/intl/resources/number_format/cgg.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/cgg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/chr.json b/library/intl/resources/number_format/chr.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/chr.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cs.json b/library/intl/resources/number_format/cs.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/cs.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cy.json b/library/intl/resources/number_format/cy.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/cy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/da.json b/library/intl/resources/number_format/da.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/da.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dav.json b/library/intl/resources/number_format/dav.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/dav.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-AT.json b/library/intl/resources/number_format/de-AT.json
new file mode 100644
index 000000000..9e2fdafca
--- /dev/null
+++ b/library/intl/resources/number_format/de-AT.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-CH.json b/library/intl/resources/number_format/de-CH.json
new file mode 100644
index 000000000..0cdba3d23
--- /dev/null
+++ b/library/intl/resources/number_format/de-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-LI.json b/library/intl/resources/number_format/de-LI.json
new file mode 100644
index 000000000..b353ac425
--- /dev/null
+++ b/library/intl/resources/number_format/de-LI.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de.json b/library/intl/resources/number_format/de.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/de.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dje.json b/library/intl/resources/number_format/dje.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/dje.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dsb.json b/library/intl/resources/number_format/dsb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/dsb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dua.json b/library/intl/resources/number_format/dua.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/dua.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dyo.json b/library/intl/resources/number_format/dyo.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/dyo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dz.json b/library/intl/resources/number_format/dz.json
new file mode 100644
index 000000000..4e78d7725
--- /dev/null
+++ b/library/intl/resources/number_format/dz.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0 %",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ebu.json b/library/intl/resources/number_format/ebu.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ebu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ee.json b/library/intl/resources/number_format/ee.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ee.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/el-CY.json b/library/intl/resources/number_format/el-CY.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/el-CY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/el.json b/library/intl/resources/number_format/el.json
new file mode 100644
index 000000000..a951f7d15
--- /dev/null
+++ b/library/intl/resources/number_format/el.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-BE.json b/library/intl/resources/number_format/en-BE.json
new file mode 100644
index 000000000..a951f7d15
--- /dev/null
+++ b/library/intl/resources/number_format/en-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-IN.json b/library/intl/resources/number_format/en-IN.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/en-IN.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-PK.json b/library/intl/resources/number_format/en-PK.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/en-PK.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-ZA.json b/library/intl/resources/number_format/en-ZA.json
new file mode 100644
index 000000000..198b1e963
--- /dev/null
+++ b/library/intl/resources/number_format/en-ZA.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en.json b/library/intl/resources/number_format/en.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/en.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/eo.json b/library/intl/resources/number_format/eo.json
new file mode 100644
index 000000000..011b800c1
--- /dev/null
+++ b/library/intl/resources/number_format/eo.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-AR.json b/library/intl/resources/number_format/es-AR.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-AR.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-BO.json b/library/intl/resources/number_format/es-BO.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-BO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CL.json b/library/intl/resources/number_format/es-CL.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-CL.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CO.json b/library/intl/resources/number_format/es-CO.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-CO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CR.json b/library/intl/resources/number_format/es-CR.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-CR.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CU.json b/library/intl/resources/number_format/es-CU.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-CU.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-DO.json b/library/intl/resources/number_format/es-DO.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-DO.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-EC.json b/library/intl/resources/number_format/es-EC.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-EC.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-GQ.json b/library/intl/resources/number_format/es-GQ.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-GQ.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-GT.json b/library/intl/resources/number_format/es-GT.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-GT.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-HN.json b/library/intl/resources/number_format/es-HN.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-HN.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-MX.json b/library/intl/resources/number_format/es-MX.json
new file mode 100644
index 000000000..ed01495e9
--- /dev/null
+++ b/library/intl/resources/number_format/es-MX.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-NI.json b/library/intl/resources/number_format/es-NI.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-NI.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PA.json b/library/intl/resources/number_format/es-PA.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PA.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PE.json b/library/intl/resources/number_format/es-PE.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PE.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PR.json b/library/intl/resources/number_format/es-PR.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PR.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PY.json b/library/intl/resources/number_format/es-PY.json
new file mode 100644
index 000000000..ed88c9cf4
--- /dev/null
+++ b/library/intl/resources/number_format/es-PY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤ -#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-SV.json b/library/intl/resources/number_format/es-SV.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-SV.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-US.json b/library/intl/resources/number_format/es-US.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-US.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-UY.json b/library/intl/resources/number_format/es-UY.json
new file mode 100644
index 000000000..d7fbe51cd
--- /dev/null
+++ b/library/intl/resources/number_format/es-UY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-VE.json b/library/intl/resources/number_format/es-VE.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-VE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es.json b/library/intl/resources/number_format/es.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/es.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/et.json b/library/intl/resources/number_format/et.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/et.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/eu.json b/library/intl/resources/number_format/eu.json
new file mode 100644
index 000000000..d633ea283
--- /dev/null
+++ b/library/intl/resources/number_format/eu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "% #,##0",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ewo.json b/library/intl/resources/number_format/ewo.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ewo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fa.json b/library/intl/resources/number_format/fa.json
new file mode 100644
index 000000000..26a1017a3
--- /dev/null
+++ b/library/intl/resources/number_format/fa.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "‎¤#,##0.00",
+ "accounting_currency_pattern": "‎¤#,##0.00;‎(¤#,##0.00)",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎−",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ff.json b/library/intl/resources/number_format/ff.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ff.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fi.json b/library/intl/resources/number_format/fi.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/fi.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fil.json b/library/intl/resources/number_format/fil.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/fil.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fo.json b/library/intl/resources/number_format/fo.json
new file mode 100644
index 000000000..c1e16e6dc
--- /dev/null
+++ b/library/intl/resources/number_format/fo.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-BE.json b/library/intl/resources/number_format/fr-BE.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/fr-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-CH.json b/library/intl/resources/number_format/fr-CH.json
new file mode 100644
index 000000000..5dc15aabe
--- /dev/null
+++ b/library/intl/resources/number_format/fr-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-LU.json b/library/intl/resources/number_format/fr-LU.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/fr-LU.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr.json b/library/intl/resources/number_format/fr.json
new file mode 100644
index 000000000..5458fba77
--- /dev/null
+++ b/library/intl/resources/number_format/fr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fur.json b/library/intl/resources/number_format/fur.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/fur.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fy.json b/library/intl/resources/number_format/fy.json
new file mode 100644
index 000000000..ff49eddc5
--- /dev/null
+++ b/library/intl/resources/number_format/fy.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤ #,##0.00-",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ga.json b/library/intl/resources/number_format/ga.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ga.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gd.json b/library/intl/resources/number_format/gd.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/gd.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gl.json b/library/intl/resources/number_format/gl.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/gl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gsw.json b/library/intl/resources/number_format/gsw.json
new file mode 100644
index 000000000..f7a23e7ff
--- /dev/null
+++ b/library/intl/resources/number_format/gsw.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "’",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gu.json b/library/intl/resources/number_format/gu.json
new file mode 100644
index 000000000..c3395e8a0
--- /dev/null
+++ b/library/intl/resources/number_format/gu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00;(¤#,##,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/guz.json b/library/intl/resources/number_format/guz.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/guz.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gv.json b/library/intl/resources/number_format/gv.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/gv.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ha.json b/library/intl/resources/number_format/ha.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/ha.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/haw.json b/library/intl/resources/number_format/haw.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/haw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/he.json b/library/intl/resources/number_format/he.json
new file mode 100644
index 000000000..b469e01a7
--- /dev/null
+++ b/library/intl/resources/number_format/he.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hi.json b/library/intl/resources/number_format/hi.json
new file mode 100644
index 000000000..c888438cb
--- /dev/null
+++ b/library/intl/resources/number_format/hi.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hr.json b/library/intl/resources/number_format/hr.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/hr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hsb.json b/library/intl/resources/number_format/hsb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/hsb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hu.json b/library/intl/resources/number_format/hu.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/hu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hy.json b/library/intl/resources/number_format/hy.json
new file mode 100644
index 000000000..8fd18e83c
--- /dev/null
+++ b/library/intl/resources/number_format/hy.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#0.###",
+ "percent_pattern": "#0%",
+ "currency_pattern": "#0.00 ¤",
+ "accounting_currency_pattern": "#0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/id.json b/library/intl/resources/number_format/id.json
new file mode 100644
index 000000000..2d0b0fad1
--- /dev/null
+++ b/library/intl/resources/number_format/id.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ig.json b/library/intl/resources/number_format/ig.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ig.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ii.json b/library/intl/resources/number_format/ii.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/ii.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/is.json b/library/intl/resources/number_format/is.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/is.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/it-CH.json b/library/intl/resources/number_format/it-CH.json
new file mode 100644
index 000000000..4d5d16160
--- /dev/null
+++ b/library/intl/resources/number_format/it-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/it.json b/library/intl/resources/number_format/it.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/it.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ja.json b/library/intl/resources/number_format/ja.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ja.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/jgo.json b/library/intl/resources/number_format/jgo.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/jgo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/jmc.json b/library/intl/resources/number_format/jmc.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/jmc.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ka.json b/library/intl/resources/number_format/ka.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/ka.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kab.json b/library/intl/resources/number_format/kab.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/kab.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kam.json b/library/intl/resources/number_format/kam.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kam.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kde.json b/library/intl/resources/number_format/kde.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kde.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kea.json b/library/intl/resources/number_format/kea.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/kea.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/khq.json b/library/intl/resources/number_format/khq.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/khq.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ki.json b/library/intl/resources/number_format/ki.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ki.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kk.json b/library/intl/resources/number_format/kk.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/kk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kkj.json b/library/intl/resources/number_format/kkj.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/kkj.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kl.json b/library/intl/resources/number_format/kl.json
new file mode 100644
index 000000000..c1e16e6dc
--- /dev/null
+++ b/library/intl/resources/number_format/kl.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kln.json b/library/intl/resources/number_format/kln.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kln.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/km.json b/library/intl/resources/number_format/km.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/km.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kn.json b/library/intl/resources/number_format/kn.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ko.json b/library/intl/resources/number_format/ko.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ko.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kok.json b/library/intl/resources/number_format/kok.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/kok.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ks.json b/library/intl/resources/number_format/ks.json
new file mode 100644
index 000000000..e3bf6449c
--- /dev/null
+++ b/library/intl/resources/number_format/ks.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksb.json b/library/intl/resources/number_format/ksb.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/ksb.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksf.json b/library/intl/resources/number_format/ksf.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ksf.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksh.json b/library/intl/resources/number_format/ksh.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/ksh.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kw.json b/library/intl/resources/number_format/kw.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/kw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ky.json b/library/intl/resources/number_format/ky.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ky.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lag.json b/library/intl/resources/number_format/lag.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/lag.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lb.json b/library/intl/resources/number_format/lb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/lb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lg.json b/library/intl/resources/number_format/lg.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/lg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lkt.json b/library/intl/resources/number_format/lkt.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/lkt.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ln.json b/library/intl/resources/number_format/ln.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/ln.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lo.json b/library/intl/resources/number_format/lo.json
new file mode 100644
index 000000000..ce91051ad
--- /dev/null
+++ b/library/intl/resources/number_format/lo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lt.json b/library/intl/resources/number_format/lt.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/lt.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lu.json b/library/intl/resources/number_format/lu.json
new file mode 100644
index 000000000..d4ecf4607
--- /dev/null
+++ b/library/intl/resources/number_format/lu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/luo.json b/library/intl/resources/number_format/luo.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/luo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/luy.json b/library/intl/resources/number_format/luy.json
new file mode 100644
index 000000000..a2c910b56
--- /dev/null
+++ b/library/intl/resources/number_format/luy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤- #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤- #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lv.json b/library/intl/resources/number_format/lv.json
new file mode 100644
index 000000000..5a38d2acb
--- /dev/null
+++ b/library/intl/resources/number_format/lv.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#0.00",
+ "accounting_currency_pattern": "¤#0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mas.json b/library/intl/resources/number_format/mas.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/mas.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mer.json b/library/intl/resources/number_format/mer.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/mer.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mfe.json b/library/intl/resources/number_format/mfe.json
new file mode 100644
index 000000000..5576f9438
--- /dev/null
+++ b/library/intl/resources/number_format/mfe.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mg.json b/library/intl/resources/number_format/mg.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/mg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mgh.json b/library/intl/resources/number_format/mgh.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/mgh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mgo.json b/library/intl/resources/number_format/mgo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/mgo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mk.json b/library/intl/resources/number_format/mk.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/mk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ml.json b/library/intl/resources/number_format/ml.json
new file mode 100644
index 000000000..7a1f3b487
--- /dev/null
+++ b/library/intl/resources/number_format/ml.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mn.json b/library/intl/resources/number_format/mn.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/mn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mr.json b/library/intl/resources/number_format/mr.json
new file mode 100644
index 000000000..6f71dcc1f
--- /dev/null
+++ b/library/intl/resources/number_format/mr.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "deva",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ms-Latn-BN.json b/library/intl/resources/number_format/ms-Latn-BN.json
new file mode 100644
index 000000000..bb9eb8d94
--- /dev/null
+++ b/library/intl/resources/number_format/ms-Latn-BN.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ms.json b/library/intl/resources/number_format/ms.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ms.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mt.json b/library/intl/resources/number_format/mt.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/mt.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mua.json b/library/intl/resources/number_format/mua.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/mua.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/my.json b/library/intl/resources/number_format/my.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/my.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/naq.json b/library/intl/resources/number_format/naq.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/naq.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nb.json b/library/intl/resources/number_format/nb.json
new file mode 100644
index 000000000..d22e8d0b7
--- /dev/null
+++ b/library/intl/resources/number_format/nb.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nd.json b/library/intl/resources/number_format/nd.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/nd.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ne.json b/library/intl/resources/number_format/ne.json
new file mode 100644
index 000000000..e1149da96
--- /dev/null
+++ b/library/intl/resources/number_format/ne.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "deva",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nl-BE.json b/library/intl/resources/number_format/nl-BE.json
new file mode 100644
index 000000000..23256bff0
--- /dev/null
+++ b/library/intl/resources/number_format/nl-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nl.json b/library/intl/resources/number_format/nl.json
new file mode 100644
index 000000000..ff49eddc5
--- /dev/null
+++ b/library/intl/resources/number_format/nl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤ #,##0.00-",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nmg.json b/library/intl/resources/number_format/nmg.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/nmg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nn.json b/library/intl/resources/number_format/nn.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/nn.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nnh.json b/library/intl/resources/number_format/nnh.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/nnh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nr.json b/library/intl/resources/number_format/nr.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/nr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nso.json b/library/intl/resources/number_format/nso.json
new file mode 100644
index 000000000..bfdcf22d4
--- /dev/null
+++ b/library/intl/resources/number_format/nso.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nus.json b/library/intl/resources/number_format/nus.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/nus.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nyn.json b/library/intl/resources/number_format/nyn.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/nyn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/om.json b/library/intl/resources/number_format/om.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/om.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/or.json b/library/intl/resources/number_format/or.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/or.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/os.json b/library/intl/resources/number_format/os.json
new file mode 100644
index 000000000..c97d61fb2
--- /dev/null
+++ b/library/intl/resources/number_format/os.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pa-Arab.json b/library/intl/resources/number_format/pa-Arab.json
new file mode 100644
index 000000000..2b2e9fdbb
--- /dev/null
+++ b/library/intl/resources/number_format/pa-Arab.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pa.json b/library/intl/resources/number_format/pa.json
new file mode 100644
index 000000000..1ea49ce5f
--- /dev/null
+++ b/library/intl/resources/number_format/pa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pl.json b/library/intl/resources/number_format/pl.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ps.json b/library/intl/resources/number_format/ps.json
new file mode 100644
index 000000000..4c162b17d
--- /dev/null
+++ b/library/intl/resources/number_format/ps.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-AO.json b/library/intl/resources/number_format/pt-AO.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-AO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-CV.json b/library/intl/resources/number_format/pt-CV.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-CV.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-GW.json b/library/intl/resources/number_format/pt-GW.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-GW.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-MO.json b/library/intl/resources/number_format/pt-MO.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-MO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-MZ.json b/library/intl/resources/number_format/pt-MZ.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-MZ.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-PT.json b/library/intl/resources/number_format/pt-PT.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-PT.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-ST.json b/library/intl/resources/number_format/pt-ST.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-ST.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-TL.json b/library/intl/resources/number_format/pt-TL.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-TL.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt.json b/library/intl/resources/number_format/pt.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/pt.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/qu-BO.json b/library/intl/resources/number_format/qu-BO.json
new file mode 100644
index 000000000..407be1332
--- /dev/null
+++ b/library/intl/resources/number_format/qu-BO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/qu.json b/library/intl/resources/number_format/qu.json
new file mode 100644
index 000000000..3534c1277
--- /dev/null
+++ b/library/intl/resources/number_format/qu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rm.json b/library/intl/resources/number_format/rm.json
new file mode 100644
index 000000000..f7a23e7ff
--- /dev/null
+++ b/library/intl/resources/number_format/rm.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "’",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rn.json b/library/intl/resources/number_format/rn.json
new file mode 100644
index 000000000..01fceee09
--- /dev/null
+++ b/library/intl/resources/number_format/rn.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ro.json b/library/intl/resources/number_format/ro.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/ro.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rof.json b/library/intl/resources/number_format/rof.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/rof.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ru.json b/library/intl/resources/number_format/ru.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/ru.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rw.json b/library/intl/resources/number_format/rw.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/rw.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rwk.json b/library/intl/resources/number_format/rwk.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/rwk.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sah.json b/library/intl/resources/number_format/sah.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/sah.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/saq.json b/library/intl/resources/number_format/saq.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/saq.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sbp.json b/library/intl/resources/number_format/sbp.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/sbp.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/se.json b/library/intl/resources/number_format/se.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/se.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/seh.json b/library/intl/resources/number_format/seh.json
new file mode 100644
index 000000000..d4ecf4607
--- /dev/null
+++ b/library/intl/resources/number_format/seh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ses.json b/library/intl/resources/number_format/ses.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/ses.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sg.json b/library/intl/resources/number_format/sg.json
new file mode 100644
index 000000000..ce91051ad
--- /dev/null
+++ b/library/intl/resources/number_format/sg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/shi.json b/library/intl/resources/number_format/shi.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/shi.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/si.json b/library/intl/resources/number_format/si.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/si.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sk.json b/library/intl/resources/number_format/sk.json
new file mode 100644
index 000000000..5458fba77
--- /dev/null
+++ b/library/intl/resources/number_format/sk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sl.json b/library/intl/resources/number_format/sl.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/sl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/smn.json b/library/intl/resources/number_format/smn.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/smn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sn.json b/library/intl/resources/number_format/sn.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/sn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/so.json b/library/intl/resources/number_format/so.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/so.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sq.json b/library/intl/resources/number_format/sq.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/sq.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sr.json b/library/intl/resources/number_format/sr.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/sr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ss.json b/library/intl/resources/number_format/ss.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ss.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ssy.json b/library/intl/resources/number_format/ssy.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ssy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sv.json b/library/intl/resources/number_format/sv.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/sv.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sw.json b/library/intl/resources/number_format/sw.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/sw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/swc.json b/library/intl/resources/number_format/swc.json
new file mode 100644
index 000000000..2d0b0fad1
--- /dev/null
+++ b/library/intl/resources/number_format/swc.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta-MY.json b/library/intl/resources/number_format/ta-MY.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/ta-MY.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta-SG.json b/library/intl/resources/number_format/ta-SG.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/ta-SG.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta.json b/library/intl/resources/number_format/ta.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/ta.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/te.json b/library/intl/resources/number_format/te.json
new file mode 100644
index 000000000..bb26b152a
--- /dev/null
+++ b/library/intl/resources/number_format/te.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00;(¤#,##,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/teo.json b/library/intl/resources/number_format/teo.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/teo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/th.json b/library/intl/resources/number_format/th.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/th.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ti.json b/library/intl/resources/number_format/ti.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ti.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tn.json b/library/intl/resources/number_format/tn.json
new file mode 100644
index 000000000..bfdcf22d4
--- /dev/null
+++ b/library/intl/resources/number_format/tn.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/to.json b/library/intl/resources/number_format/to.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/to.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tr.json b/library/intl/resources/number_format/tr.json
new file mode 100644
index 000000000..2950f361c
--- /dev/null
+++ b/library/intl/resources/number_format/tr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "%#,##0",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ts.json b/library/intl/resources/number_format/ts.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ts.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/twq.json b/library/intl/resources/number_format/twq.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/twq.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tzm.json b/library/intl/resources/number_format/tzm.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/tzm.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ug.json b/library/intl/resources/number_format/ug.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ug.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uk.json b/library/intl/resources/number_format/uk.json
new file mode 100644
index 000000000..7aa3ad369
--- /dev/null
+++ b/library/intl/resources/number_format/uk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00¤;(#,##0.00¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ur-IN.json b/library/intl/resources/number_format/ur-IN.json
new file mode 100644
index 000000000..972fb3c39
--- /dev/null
+++ b/library/intl/resources/number_format/ur-IN.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ur.json b/library/intl/resources/number_format/ur.json
new file mode 100644
index 000000000..b1a9ac268
--- /dev/null
+++ b/library/intl/resources/number_format/ur.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uz-Arab.json b/library/intl/resources/number_format/uz-Arab.json
new file mode 100644
index 000000000..4c162b17d
--- /dev/null
+++ b/library/intl/resources/number_format/uz-Arab.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": "٫",
+ "grouping_separator": "٬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "٪"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uz.json b/library/intl/resources/number_format/uz.json
new file mode 100644
index 000000000..c97d61fb2
--- /dev/null
+++ b/library/intl/resources/number_format/uz.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vai.json b/library/intl/resources/number_format/vai.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/vai.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ve.json b/library/intl/resources/number_format/ve.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ve.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vi.json b/library/intl/resources/number_format/vi.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/vi.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vo.json b/library/intl/resources/number_format/vo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/vo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vun.json b/library/intl/resources/number_format/vun.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/vun.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/wae.json b/library/intl/resources/number_format/wae.json
new file mode 100644
index 000000000..4f32aa8e3
--- /dev/null
+++ b/library/intl/resources/number_format/wae.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "’"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/xog.json b/library/intl/resources/number_format/xog.json
new file mode 100644
index 000000000..5ca4d4e1c
--- /dev/null
+++ b/library/intl/resources/number_format/xog.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yav.json b/library/intl/resources/number_format/yav.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/yav.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yi.json b/library/intl/resources/number_format/yi.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/yi.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yo.json b/library/intl/resources/number_format/yo.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/yo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zgh.json b/library/intl/resources/number_format/zgh.json
new file mode 100644
index 000000000..8ecea403c
--- /dev/null
+++ b/library/intl/resources/number_format/zgh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-HK.json b/library/intl/resources/number_format/zh-Hans-HK.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-HK.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-MO.json b/library/intl/resources/number_format/zh-Hans-MO.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-MO.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-SG.json b/library/intl/resources/number_format/zh-Hans-SG.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-SG.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hant.json b/library/intl/resources/number_format/zh-Hant.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh.json b/library/intl/resources/number_format/zh.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/zh.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zu.json b/library/intl/resources/number_format/zu.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/scripts/country/generate.php b/library/intl/scripts/country/generate.php
new file mode 100644
index 000000000..879dc0a25
--- /dev/null
+++ b/library/intl/scripts/country/generate.php
@@ -0,0 +1,162 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/country.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$enCountries = '../json-full/main/en/territories.json';
+$codeMappings = '../json-full/supplemental/codeMappings.json';
+$telephoneCodeData = '../json-full/supplemental/telephoneCodeData.json';
+if (!file_exists($enCountries)) {
+ die("The $enCountries file was not found");
+}
+if (!file_exists($codeMappings)) {
+ die("The $codeMappings file was not found");
+}
+if (!file_exists($telephoneCodeData)) {
+ die("The $telephoneCodeData file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+$ignoredCountries = array(
+ 'AN', // Netherlands Antilles, no longer exists.
+ 'BV', 'HM', 'CP', // Uninhabited islands.
+ 'EU', 'QO', // European Union, Outlying Oceania. Not countries.
+ 'ZZ', // Unknown region
+);
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Assemble the base data. Use the "en" data to get a list of countries.
+$telephoneCodeData = json_decode(file_get_contents($telephoneCodeData), true);
+$telephoneCodeData = $telephoneCodeData['supplemental']['telephoneCodeData'];
+$codeMappings = json_decode(file_get_contents($codeMappings), true);
+$codeMappings = $codeMappings['supplemental']['codeMappings'];
+$countryData = json_decode(file_get_contents($enCountries), true);
+$countryData = $countryData['main']['en']['localeDisplayNames']['territories'];
+$baseData = array();
+foreach ($countryData as $countryCode => $countryName) {
+ if (is_numeric($countryCode) || in_array($countryCode, $ignoredCountries)) {
+ // Ignore continents, regions, uninhabited islands.
+ continue;
+ }
+ if (strpos($countryCode, '-alt-') !== FALSE) {
+ // Ignore alternative names.
+ continue;
+ }
+
+ $baseData[$countryCode]['code'] = $countryCode;
+ // Countries are not guaranteed to have an alpha3 and/or numeric code.
+ if (isset($codeMappings[$countryCode]['_alpha3'])) {
+ $baseData[$countryCode]['three_letter_code'] = $codeMappings[$countryCode]['_alpha3'];
+ }
+ if (isset($codeMappings[$countryCode]['_numeric'])) {
+ $baseData[$countryCode]['numeric_code'] = $codeMappings[$countryCode]['_numeric'];
+ }
+
+ // Determine the telephone code for this country.
+ if (in_array($countryCode, array('IC', 'EA'))) {
+ // "Canary Islands" and "Ceuta and Melilla" use Spain's.
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData['ES'][0]['telephoneCountryCode'];
+ } elseif ($countryCode == 'XK') {
+ // Kosovo uses three telephone codes. Use Serbia's until that gets resolved.
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData['RS'][0]['telephoneCountryCode'];
+ } elseif (isset($telephoneCodeData[$countryCode])) {
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData[$countryCode][0]['telephoneCountryCode'];
+ }
+}
+
+// Write out base.json.
+ksort($baseData);
+$json = json_encode($baseData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+file_put_contents('base.json', $json);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Create the localizations.
+$countries = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/territories.json'), true);
+ $data = $data['main'][$locale]['localeDisplayNames']['territories'];
+ foreach ($data as $countryCode => $countryName) {
+ if (isset($baseData[$countryCode])) {
+ // This country name is untranslated, use the english version.
+ if ($countryCode == $countryName) {
+ $countryName = $countryData[$countryCode];
+ }
+
+ $countries[$locale][$countryCode] = array(
+ 'name' => $countryName,
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($countries as $locale => $localizedCountries) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedCountries, $countries[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($countries[$locale]);
+}
+
+// Write out the localizations.
+foreach ($countries as $locale => $localizedCountries) {
+ $collator = collator_create($locale);
+ uasort($localizedCountries, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedCountries, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/currency/generate.php b/library/intl/scripts/currency/generate.php
new file mode 100644
index 000000000..723906f7a
--- /dev/null
+++ b/library/intl/scripts/currency/generate.php
@@ -0,0 +1,153 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/currency.
+ *
+ * The ISO currency list is used as a base, since it doesn't contain
+ * deprecated currencies, unlike CLDR (v25 has 139 deprecated entries).
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://www.currency-iso.org/en/home/tables/table-a1.html
+$isoCurrencies = '../c2.xml';
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$cldrCurrencies = '../json-full/main/en-US/currencies.json';
+$currencyData = '../json-full/supplemental/currencyData.json';
+if (!file_exists($isoCurrencies)) {
+ die("The $isoCurrencies file was not found");
+}
+if (!file_exists($cldrCurrencies)) {
+ die("The $cldrCurrencies file was not found");
+}
+if (!file_exists($currencyData)) {
+ die("The $currencyData file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Assemble the base data.
+$baseData = array();
+$currencyData = json_decode(file_get_contents($currencyData), true);
+$currencyData = $currencyData['supplemental']['currencyData']['fractions'];
+$isoData = simplexml_load_file($isoCurrencies);
+foreach ($isoData->CcyTbl->CcyNtry as $currency) {
+ $attributes = (array) $currency->CcyNm->attributes();
+ if (!empty($attributes) && !empty($attributes['@attributes']['IsFund'])) {
+ // Ignore funds.
+ continue;
+ }
+ $currency = (array) $currency;
+ if (empty($currency['Ccy'])) {
+ // Ignore placeholders like "Antarctica".
+ continue;
+ }
+ if (substr($currency['CtryNm'], 0, 2) == 'ZZ' || in_array($currency['Ccy'], array('XUA', 'XSU', 'XDR'))) {
+ // Ignore special currencies.
+ continue;
+ }
+
+ $currencyCode = $currency['Ccy'];
+ $baseData[$currencyCode] = array(
+ 'code' => $currencyCode,
+ 'numeric_code' => $currency['CcyNbr'],
+ );
+ // Take the fraction digits from CLDR, not ISO, because it reflects real
+ // life usage more closely. If the digits aren't set, that means that the
+ // default value (2) should be used.
+ if (isset($currencyData[$currencyCode]['_digits'])) {
+ $fractionDigits = $currencyData[$currencyCode]['_digits'];
+ if ($fractionDigits != 2) {
+ $baseData[$currencyCode]['fraction_digits'] = $fractionDigits;
+ }
+ }
+}
+
+// Write out base.json.
+ksort($baseData);
+$json = json_encode($baseData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+file_put_contents('base.json', $json);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Create the localizations.
+$currencies = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/currencies.json'), true);
+ $data = $data['main'][$locale]['numbers']['currencies'];
+ foreach ($data as $currencyCode => $currency) {
+ if (isset($baseData[$currencyCode])) {
+ $currencies[$locale][$currencyCode] = array(
+ 'name' => $currency['displayName'],
+ 'symbol' => $currency['symbol'],
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($currencies as $locale => $localizedCurrencies) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedCurrencies, $currencies[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($currencies[$locale]);
+}
+
+// Write out the localizations.
+foreach ($currencies as $locale => $localizedCurrencies) {
+ $collator = collator_create($locale);
+ uasort($localizedCurrencies, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedCurrencies, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/language/generate.php b/library/intl/scripts/language/generate.php
new file mode 100644
index 000000000..e11c8df49
--- /dev/null
+++ b/library/intl/scripts/language/generate.php
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/language.
+ *
+ * CLDR lists about 515 languages, many of them dead (like Latin or Old English).
+ * In order to decrease the list to a reasonable size, only the languages
+ * for which CLDR itself has translations are listed.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$enLanguages = '../json-full/main/en/languages.json';
+if (!file_exists($enLanguages)) {
+ die("The $enLanguages file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+$languages = array();
+// Load the "en" data first so that it can be used as a fallback for
+// untranslated language names in other locales.
+$languageData = json_decode(file_get_contents($enLanguages), true);
+$languageData = $languageData['main']['en']['localeDisplayNames']['languages'];
+foreach ($languageData as $languageCode => $languageName) {
+ if (strpos($languageCode, '-alt-') === FALSE) {
+ $languages['en'][$languageCode] = array(
+ 'code' => $languageCode,
+ 'name' => $languageName,
+ );
+ }
+}
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Remove all languages that aren't an available locale at the same time.
+// This reduces the language list from about 515 to about 185 languages.
+foreach ($languages['en'] as $languageCode => $languageData) {
+ if (!in_array($languageCode, $locales)) {
+ unset($languages['en'][$languageCode]);
+ }
+}
+
+// Load the localizations.
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/languages.json'), true);
+ $data = $data['main'][$locale]['localeDisplayNames']['languages'];
+ foreach ($data as $languageCode => $languageName) {
+ if (isset($languages['en'][$languageCode])) {
+ // This language name is untranslated, use to the english version.
+ if ($languageCode == $languageName) {
+ $languageName = $languages['en'][$languageCode]['name'];
+ }
+
+ $languages[$locale][$languageCode] = array(
+ 'code' => $languageCode,
+ 'name' => $languageName,
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($languages as $locale => $localizedLanguages) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedLanguages, $languages[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($languages[$locale]);
+}
+
+// Write out the localizations.
+foreach ($languages as $locale => $localizedLanguages) {
+ $collator = collator_create($locale);
+ uasort($localizedLanguages, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedLanguages, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/number_format/generate.php b/library/intl/scripts/number_format/generate.php
new file mode 100644
index 000000000..4308b4dc7
--- /dev/null
+++ b/library/intl/scripts/number_format/generate.php
@@ -0,0 +1,107 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/number_format.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+if (!is_dir('../json-full/main')) {
+ die("The '../json-full/main' directory was not found");
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Load the data.
+$numberFormats = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/numbers.json'), true);
+ $data = $data['main'][$locale]['numbers'];
+ // Use the default numbering system, if it's supported.
+ if (in_array($data['defaultNumberingSystem'], array('arab', 'arabext', 'beng', 'deva', 'latn'))) {
+ $numberingSystem = $data['defaultNumberingSystem'];
+ } else {
+ $numberingSystem = 'latn';
+ }
+
+ $numberFormats[$locale] = array(
+ 'numbering_system' => $numberingSystem,
+ 'decimal_pattern' => $data['decimalFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'percent_pattern' => $data['percentFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'currency_pattern' => $data['currencyFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'accounting_currency_pattern' => $data['currencyFormats-numberSystem-' . $numberingSystem]['accounting'],
+ );
+
+ // Add the symbols only if they're different from the default data.
+ $decimalSeparator = $data['symbols-numberSystem-' . $numberingSystem]['decimal'];
+ $groupingSeparator = $data['symbols-numberSystem-' . $numberingSystem]['group'];
+ $plusSign = $data['symbols-numberSystem-' . $numberingSystem]['plusSign'];
+ $minusSign = $data['symbols-numberSystem-' . $numberingSystem]['minusSign'];
+ $percentSign = $data['symbols-numberSystem-' . $numberingSystem]['percentSign'];
+ if ($decimalSeparator != '.') {
+ $numberFormats[$locale]['decimal_separator'] = $decimalSeparator;
+ }
+ if ($groupingSeparator != ',') {
+ $numberFormats[$locale]['grouping_separator'] = $groupingSeparator;
+ }
+ if ($plusSign != '+') {
+ $numberFormats[$locale]['plus_sign'] = $plusSign;
+ }
+ if ($minusSign != '-') {
+ $numberFormats[$locale]['minus_sign'] = $minusSign;
+ }
+ if ($percentSign != '%') {
+ $numberFormats[$locale]['percent_sign'] = $percentSign;
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($numberFormats as $locale => $formatData) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_diff_assoc($formatData, $numberFormats[$parentLocale]);
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($numberFormats[$locale]);
+}
+
+// Write out the data.
+foreach ($numberFormats as $locale => $numberFormat) {
+ $json = json_encode($numberFormat, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/src/Country/Country.php b/library/intl/src/Country/Country.php
new file mode 100644
index 000000000..5ac65fd0d
--- /dev/null
+++ b/library/intl/src/Country/Country.php
@@ -0,0 +1,168 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+class Country implements CountryInterface
+{
+ /**
+ * The two-letter country code.
+ *
+ * @var string
+ */
+ protected $countryCode;
+
+ /**
+ * The country name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The three-letter country code.
+ *
+ * @var string
+ */
+ protected $threeLetterCode;
+
+ /**
+ * The numeric country code.
+ *
+ * @var string
+ */
+ protected $numericCode;
+
+ /**
+ * The country telephone code.
+ *
+ * @var string
+ */
+ protected $telephoneCode;
+
+ /**
+ * The country locale (i.e. "en_US").
+ *
+ * The country name is locale specific.
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the Country.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getCountryCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCountryCode()
+ {
+ return $this->countryCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCountryCode($countryCode)
+ {
+ $this->countryCode = $countryCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getThreeLetterCode()
+ {
+ return $this->threeLetterCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setThreeLetterCode($threeLetterCode)
+ {
+ $this->threeLetterCode = $threeLetterCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumericCode()
+ {
+ return $this->numericCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumericCode($numericCode)
+ {
+ $this->numericCode = $numericCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTelephoneCode()
+ {
+ return $this->telephoneCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setTelephoneCode($telephoneCode)
+ {
+ $this->telephoneCode = $telephoneCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Country/CountryInterface.php b/library/intl/src/Country/CountryInterface.php
new file mode 100644
index 000000000..245a49be9
--- /dev/null
+++ b/library/intl/src/Country/CountryInterface.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+interface CountryInterface
+{
+ /**
+ * Gets the two-letter country code.
+ *
+ * @return string
+ */
+ public function getCountryCode();
+
+ /**
+ * Sets the two-letter country code.
+ *
+ * @param string $countryCode The two-letter country code.
+ */
+ public function setCountryCode($countryCode);
+
+ /**
+ * Gets the country name.
+ *
+ * Note that certain locales have incomplete translations, in which
+ * case the english version of the country name is used instead.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the country name.
+ *
+ * @param string $name The country name.
+ */
+ public function setName($name);
+
+ /**
+ * Gets the three-letter country code.
+ *
+ * Note that not every country has a three-letter code.
+ * CLDR lists "Canary Islands" (IC) and "Ceuta and Melilla" (EA)
+ * as separate countries, even though they are formally a part of Spain
+ * and have no three-letter or numeric ISO codes.
+ *
+ * @return string|null
+ */
+ public function getThreeLetterCode();
+
+ /**
+ * Sets the three-letter country code.
+ *
+ * @param string $threeLetterCode The three-letter country code.
+ */
+ public function setThreeLetterCode($threeLetterCode);
+
+ /**
+ * Gets the numeric country code.
+ *
+ * The numeric code has three digits, and the first one can be a zero,
+ * hence the need to pass it around as a string.
+ *
+ * Note that not every country has a numeric code.
+ * CLDR lists "Canary Islands" (IC) and "Ceuta and Melilla" (EA)
+ * as separate countries, even though they are formally a part of Spain
+ * and have no three-letter or numeric ISO codes.
+ * "Ascension Island" (AE) also has no numeric code, even though it has a
+ * three-letter code.
+ *
+ * @return string|null
+ */
+ public function getNumericCode();
+
+ /**
+ * Sets the numeric country code.
+ *
+ * @param string $numericCode The numeric country code.
+ */
+ public function setNumericCode($numericCode);
+
+ /**
+ * Gets the country telephone code.
+ *
+ * Also known as the calling code.
+ *
+ * Note that not every country has a telephone code.
+ * Right now Tristan da Cunha (TI) is the only such example.
+ *
+ * @return string|null
+ */
+ public function getTelephoneCode();
+
+ /**
+ * Sets the country telephone code.
+ *
+ * @param string $telephoneCode The telephone code.
+ */
+ public function setTelephoneCode($telephoneCode);
+}
diff --git a/library/intl/src/Country/CountryRepository.php b/library/intl/src/Country/CountryRepository.php
new file mode 100644
index 000000000..b1fea803d
--- /dev/null
+++ b/library/intl/src/Country/CountryRepository.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownCountryException;
+
+/**
+ * Manages countries based on JSON definitions.
+ */
+class CountryRepository implements CountryRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Base country definitions.
+ *
+ * Contains data common to all locales, such as the country numeric,
+ * three-letter, telephone codes.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array();
+
+ /**
+ * Per-locale country definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a CountryRepository instance.
+ *
+ * @param string $definitionPath The path to the country definitions.
+ * Defaults to 'resources/country'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/country/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($countryCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$countryCode])) {
+ throw new UnknownCountryException($countryCode);
+ }
+
+ return $this->createCountryFromDefinition($definitions[$countryCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $countries = array();
+ foreach ($definitions as $countryCode => $definition) {
+ $countries[$countryCode] = $this->createCountryFromDefinition($definition, $locale);
+ }
+
+ return $countries;
+ }
+
+ /**
+ * Loads the country definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+
+ // Make sure the base definitions have been loaded.
+ if (empty($this->baseDefinitions)) {
+ $this->baseDefinitions = json_decode(file_get_contents($this->definitionPath . 'base.json'), true);
+ }
+ // Merge-in base definitions.
+ foreach ($this->definitions[$locale] as $countryCode => $definition) {
+ $this->definitions[$locale][$countryCode] += $this->baseDefinitions[$countryCode];
+ }
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a country object from the provided definition.
+ *
+ * @param array $definition The country definition.
+ * @param string $locale The locale of the country definition.
+ *
+ * @return Country
+ */
+ protected function createCountryFromDefinition(array $definition, $locale)
+ {
+ $country = new Country();
+ $country->setCountryCode($definition['code']);
+ $country->setName($definition['name']);
+ $country->setLocale($locale);
+ if (isset($definition['three_letter_code'])) {
+ $country->setThreeLetterCode($definition['three_letter_code']);
+ }
+ if (isset($definition['numeric_code'])) {
+ $country->setNumericCode($definition['numeric_code']);
+ }
+ if (isset($definition['telephone_code'])) {
+ $country->setTelephoneCode($definition['telephone_code']);
+ }
+
+ return $country;
+ }
+}
diff --git a/library/intl/src/Country/CountryRepositoryInterface.php b/library/intl/src/Country/CountryRepositoryInterface.php
new file mode 100644
index 000000000..ae1cbd0c9
--- /dev/null
+++ b/library/intl/src/Country/CountryRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+/**
+ * Country repository interface.
+ */
+interface CountryRepositoryInterface
+{
+ /**
+ * Returns a country instance matching the provided country code.
+ *
+ * @param string $countryCode The country code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return CountryInterface
+ */
+ public function get($countryCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available country instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of countries implementing the CountryInterface,
+ * keyed by country code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/Currency/Currency.php b/library/intl/src/Currency/Currency.php
new file mode 100644
index 000000000..6138210b5
--- /dev/null
+++ b/library/intl/src/Currency/Currency.php
@@ -0,0 +1,168 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+class Currency implements CurrencyInterface
+{
+ /**
+ * The alphanumeric currency code.
+ *
+ * @var string
+ */
+ protected $currencyCode;
+
+ /**
+ * The currency name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The numeric currency code.
+ *
+ * @var string
+ */
+ protected $numericCode;
+
+ /**
+ * The currency symbol.
+ *
+ * @var string
+ */
+ protected $symbol;
+
+ /**
+ * The number of fraction digits.
+ *
+ * @var int
+ */
+ protected $fractionDigits;
+
+ /**
+ * The currency locale (i.e. "en_US").
+ *
+ * The currency name and symbol are locale specific.
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the currency.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getCurrencyCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyCode()
+ {
+ return $this->currencyCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyCode($currencyCode)
+ {
+ $this->currencyCode = $currencyCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumericCode()
+ {
+ return $this->numericCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumericCode($numericCode)
+ {
+ $this->numericCode = $numericCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getSymbol()
+ {
+ return $this->symbol;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setSymbol($symbol)
+ {
+ $this->symbol = $symbol;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFractionDigits()
+ {
+ return $this->fractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFractionDigits($fractionDigits)
+ {
+ $this->fractionDigits = $fractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Currency/CurrencyInterface.php b/library/intl/src/Currency/CurrencyInterface.php
new file mode 100644
index 000000000..ccd03c7e0
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyInterface.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+interface CurrencyInterface
+{
+ /**
+ * Gets the alphabetic currency code.
+ *
+ * @return string
+ */
+ public function getCurrencyCode();
+
+ /**
+ * Sets the alphabetic currency code.
+ *
+ * @param string $currencyCode The alphabetic currency code.
+ */
+ public function setCurrencyCode($currencyCode);
+
+ /**
+ * Gets the currency name.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the currency name.
+ *
+ * @param string $name The currency name.
+ */
+ public function setName($name);
+
+ /**
+ * Gets the numeric currency code.
+ *
+ * The numeric code has three digits, and the first one can be a zero,
+ * hence the need to pass it around as a string.
+ *
+ * @return string
+ */
+ public function getNumericCode();
+
+ /**
+ * Sets the numeric currency code.
+ *
+ * @param string $numericCode The numeric currency code.
+ */
+ public function setNumericCode($numericCode);
+
+ /**
+ * Gets the currency symbol.
+ *
+ * @return string
+ */
+ public function getSymbol();
+
+ /**
+ * Sets the currency symbol.
+ *
+ * @param string $symbol The currency symbol.
+ */
+ public function setSymbol($symbol);
+
+ /**
+ * Gets the number of fraction digits.
+ *
+ * Used when rounding or formatting an amount for display.
+ * Actual storage precision can be greater.
+ *
+ * @return int
+ */
+ public function getFractionDigits();
+
+ /**
+ * Sets the number of fraction digits.
+ *
+ * @param int $fractionDigits The number of fraction digits.
+ */
+ public function setFractionDigits($fractionDigits);
+}
diff --git a/library/intl/src/Currency/CurrencyRepository.php b/library/intl/src/Currency/CurrencyRepository.php
new file mode 100644
index 000000000..84d0d4522
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyRepository.php
@@ -0,0 +1,122 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownCurrencyException;
+
+/**
+ * Manages currencies based on JSON definitions.
+ */
+class CurrencyRepository implements CurrencyRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Base currency definitions.
+ *
+ * Contains data common to all locales, such as the currency numeric
+ * code, number of fraction digits.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array();
+
+ /**
+ * Per-locale currency definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a CurrencyRepository instance.
+ *
+ * @param string $definitionPath The path to the currency definitions.
+ * Defaults to 'resources/currency'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/currency/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($currencyCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$currencyCode])) {
+ throw new UnknownCurrencyException($currencyCode);
+ }
+
+ return $this->createCurrencyFromDefinition($definitions[$currencyCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $currencies = array();
+ foreach ($definitions as $currencyCode => $definition) {
+ $currencies[$currencyCode] = $this->createCurrencyFromDefinition($definition, $locale);
+ }
+
+ return $currencies;
+ }
+
+ /**
+ * Loads the currency definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+
+ // Make sure the base definitions have been loaded.
+ if (empty($this->baseDefinitions)) {
+ $this->baseDefinitions = json_decode(file_get_contents($this->definitionPath . 'base.json'), true);
+ }
+ // Merge-in base definitions.
+ foreach ($this->definitions[$locale] as $currencyCode => $definition) {
+ $this->definitions[$locale][$currencyCode] += $this->baseDefinitions[$currencyCode];
+ }
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a currency object from the provided definition.
+ *
+ * @param array $definition The currency definition.
+ * @param string $locale The locale of the currency definition.
+ *
+ * @return Currency
+ */
+ protected function createCurrencyFromDefinition(array $definition, $locale)
+ {
+ if (!isset($definition['fraction_digits'])) {
+ $definition['fraction_digits'] = 2;
+ }
+
+ $currency = new Currency();
+ $currency->setCurrencyCode($definition['code']);
+ $currency->setName($definition['name']);
+ $currency->setNumericCode($definition['numeric_code']);
+ $currency->setFractionDigits($definition['fraction_digits']);
+ $currency->setSymbol($definition['symbol']);
+ $currency->setLocale($locale);
+
+ return $currency;
+ }
+}
diff --git a/library/intl/src/Currency/CurrencyRepositoryInterface.php b/library/intl/src/Currency/CurrencyRepositoryInterface.php
new file mode 100644
index 000000000..d72fcf137
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+/**
+ * Currency repository interface.
+ */
+interface CurrencyRepositoryInterface
+{
+ /**
+ * Returns a currency instance matching the provided currency code.
+ *
+ * @param string $currencyCode The currency code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return CurrencyInterface
+ */
+ public function get($currencyCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available currency instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of currencies implementing the CurrencyInterface,
+ * keyed by currency code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/Exception/ExceptionInterface.php b/library/intl/src/Exception/ExceptionInterface.php
new file mode 100644
index 000000000..a7d17f9ab
--- /dev/null
+++ b/library/intl/src/Exception/ExceptionInterface.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+interface ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/InvalidArgumentException.php b/library/intl/src/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..afbe114a4
--- /dev/null
+++ b/library/intl/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an invalid argument is passed to a method.
+ * For example, a float amount instead of the expected string amount.
+ */
+class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownCountryException.php b/library/intl/src/Exception/UnknownCountryException.php
new file mode 100644
index 000000000..c89845b23
--- /dev/null
+++ b/library/intl/src/Exception/UnknownCountryException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown country code is passed to the
+ * CountryRepository.
+ */
+class UnknownCountryException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownCurrencyException.php b/library/intl/src/Exception/UnknownCurrencyException.php
new file mode 100644
index 000000000..f94c93d8a
--- /dev/null
+++ b/library/intl/src/Exception/UnknownCurrencyException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown currency code is passed to the
+ * CurrencyRepository.
+ */
+class UnknownCurrencyException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownLanguageException.php b/library/intl/src/Exception/UnknownLanguageException.php
new file mode 100644
index 000000000..922b42185
--- /dev/null
+++ b/library/intl/src/Exception/UnknownLanguageException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown language code is passed to the
+ * LanguageRepository.
+ */
+class UnknownLanguageException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownLocaleException.php b/library/intl/src/Exception/UnknownLocaleException.php
new file mode 100644
index 000000000..0deca13e8
--- /dev/null
+++ b/library/intl/src/Exception/UnknownLocaleException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown locale is passed to a repository.
+ */
+class UnknownLocaleException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Formatter/NumberFormatter.php b/library/intl/src/Formatter/NumberFormatter.php
new file mode 100644
index 000000000..0b8e2ae59
--- /dev/null
+++ b/library/intl/src/Formatter/NumberFormatter.php
@@ -0,0 +1,406 @@
+<?php
+
+namespace CommerceGuys\Intl\Formatter;
+
+use CommerceGuys\Intl\Currency\CurrencyInterface;
+use CommerceGuys\Intl\Exception\InvalidArgumentException;
+use CommerceGuys\Intl\NumberFormat\NumberFormatInterface;
+
+/**
+ * Formats numbers using locale-specific patterns.
+ */
+class NumberFormatter implements NumberFormatterInterface
+{
+ /**
+ * The number format.
+ *
+ * @var NumberFormatInterface
+ */
+ protected $numberFormat;
+
+ /**
+ * The number pattern used to format positive numbers.
+ *
+ * @var string
+ */
+ protected $positivePattern;
+
+ /**
+ * The number pattern used to format negative numbers.
+ *
+ * @var string
+ */
+ protected $negativePattern;
+
+ /**
+ * Whether grouping is used.
+ *
+ * @var bool
+ */
+ protected $groupingUsed;
+
+ /**
+ * The size of the group of digits closest to the decimal point.
+ *
+ * @var int
+ */
+ protected $primaryGroupSize;
+
+ /**
+ * The size of every group of digits after the primary group.
+ *
+ * @var int
+ */
+ protected $secondaryGroupSize;
+
+ /**
+ * The minimum number of fraction digits to show.
+ *
+ * @var int
+ */
+ protected $minimumFractionDigits;
+
+ /**
+ * The maximum number of fraction digits to show.
+ *
+ * @var int
+ */
+ protected $maximumFractionDigits;
+
+ /**
+ * The currency display style.
+ *
+ * @var int
+ */
+ protected $currencyDisplay;
+
+ /**
+ * Localized digits.
+ *
+ * @var array
+ */
+ protected $digits = array(
+ NumberFormatInterface::NUMBERING_SYSTEM_ARABIC => array(
+ 0 => '٠', 1 => '١', 2 => '٢', 3 => '٣', 4 => '٤',
+ 5 => '٥', 6 => '٦', 7 => '٧', 8 => '٨', 9 => '٩',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_ARABIC_EXTENDED => array(
+ 0 => '۰', 1 => '۱', 2 => '۲', 3 => '۳', 4 => '۴',
+ 5 => '۵', 6 => '۶', 7 => '۷', 8 => '۸', 9 => '۹',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_BENGALI => array(
+ 0 => '০', 1 => '১', 2 => '২', 3 => '৩', 4 => '৪',
+ 5 => '৫', 6 => '৬', 7 => '৭', 8 => '৮', 9 => '৯',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_DEVANAGARI => array(
+ 0 => '०', 1 => '१', 2 => '२', 3 => '३', 4 => '४',
+ 5 => '५', 6 => '६', 7 => '७', 8 => '८', 9 => '९',
+ ),
+ );
+
+ /**
+ * Creaes a NumberFormatter instance.
+ *
+ * @param NumberFormatInterface $numberFormat The number format.
+ * @param int $style The formatting style.
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct(NumberFormatInterface $numberFormat, $style = self::DECIMAL)
+ {
+ $availablePatterns = array(
+ self::DECIMAL => $numberFormat->getDecimalPattern(),
+ self::PERCENT => $numberFormat->getPercentPattern(),
+ self::CURRENCY => $numberFormat->getCurrencyPattern(),
+ self::CURRENCY_ACCOUNTING => $numberFormat->getAccountingCurrencyPattern(),
+ );
+ if (!array_key_exists($style, $availablePatterns)) {
+ // Unknown type.
+ throw new InvalidArgumentException('Unknown format style provided to NumberFormatter::__construct().');
+ }
+
+ // Split the selected pattern into positive and negative patterns.
+ $patterns = explode(';', $availablePatterns[$style]);
+ if (!isset($patterns[1])) {
+ // No explicit negative pattern was provided, construct it.
+ $patterns[1] = '-' . $patterns[0];
+ }
+
+ $this->numberFormat = $numberFormat;
+ $this->positivePattern = $patterns[0];
+ $this->negativePattern = $patterns[1];
+ $this->groupingUsed = (strpos($this->positivePattern, ',') !== false);
+ // This pattern has number groups, parse them.
+ if ($this->groupingUsed) {
+ preg_match('/#+0/', $this->positivePattern, $primaryGroupMatches);
+ $this->primaryGroupSize = $this->secondaryGroupSize = strlen($primaryGroupMatches[0]);
+ $numberGroups = explode(',', $this->positivePattern);
+ if (count($numberGroups) > 2) {
+ // This pattern has a distinct secondary group size.
+ $this->secondaryGroupSize = strlen($numberGroups[1]);
+ }
+ }
+
+ // Initialize the fraction digit settings for decimal and percent
+ // styles only. The currency ones will default to the currency values.
+ if (in_array($style, array(self::DECIMAL, self::PERCENT))) {
+ $this->minimumFractionDigits = 0;
+ $this->maximumFractionDigits = 3;
+ }
+ $this->currencyDisplay = self::CURRENCY_DISPLAY_SYMBOL;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format($value)
+ {
+ if (!is_numeric($value)) {
+ $message = sprintf('The provided value "%s" must be a valid number or numeric string.', $value);
+ throw new InvalidArgumentException($message);
+ }
+
+ // Ensure that the value is positive and has the right number of digits.
+ $negative = (bccomp('0', $value, 12) == 1);
+ $signMultiplier = $negative ? '-1' : '1';
+ $value = bcdiv($value, $signMultiplier, $this->maximumFractionDigits);
+ // Split the number into major and minor digits.
+ $valueParts = explode('.', $value);
+ $majorDigits = $valueParts[0];
+ // Account for maximumFractionDigits = 0, where the number won't
+ // have a decimal point, and $valueParts[1] won't be set.
+ $minorDigits = isset($valueParts[1]) ? $valueParts[1] : '';
+
+ if ($this->groupingUsed) {
+ // Reverse the major digits, since they are grouped from the right.
+ $majorDigits = array_reverse(str_split($majorDigits));
+ // Group the major digits.
+ $groups = array();
+ $groups[] = array_splice($majorDigits, 0, $this->primaryGroupSize);
+ while (!empty($majorDigits)) {
+ $groups[] = array_splice($majorDigits, 0, $this->secondaryGroupSize);
+ }
+ // Reverse the groups and the digits inside of them.
+ $groups = array_reverse($groups);
+ foreach ($groups as &$group) {
+ $group = implode(array_reverse($group));
+ }
+ // Reconstruct the major digits.
+ $majorDigits = implode(',', $groups);
+ }
+
+ if ($this->minimumFractionDigits < $this->maximumFractionDigits) {
+ // Strip any trailing zeroes.
+ $minorDigits = rtrim($minorDigits, '0');
+ if (strlen($minorDigits) < $this->minimumFractionDigits) {
+ // Now there are too few digits, re-add trailing zeroes
+ // until the desired length is reached.
+ $neededZeroes = $this->minimumFractionDigits - strlen($minorDigits);
+ $minorDigits .= str_repeat('0', $neededZeroes);
+ }
+ }
+
+ // Assemble the final number and insert it into the pattern.
+ $value = $minorDigits ? $majorDigits . '.' . $minorDigits : $majorDigits;
+ $pattern = $negative ? $this->negativePattern : $this->positivePattern;
+ $value = preg_replace('/#(?:[\.,]#+)*0(?:[,\.][0#]+)*/', $value, $pattern);
+
+ // Localize the number.
+ $value = $this->replaceDigits($value);
+ $value = $this->replaceSymbols($value);
+
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function formatCurrency($value, CurrencyInterface $currency)
+ {
+ // Use the currency defaults if the values weren't set by the caller.
+ $resetMinimumFractionDigits = $resetMaximumFractionDigits = false;
+ if (!isset($this->minimumFractionDigits)) {
+ $this->minimumFractionDigits = $currency->getFractionDigits();
+ $resetMinimumFractionDigits = true;
+ }
+ if (!isset($this->maximumFractionDigits)) {
+ $this->maximumFractionDigits = $currency->getFractionDigits();
+ $resetMaximumFractionDigits = true;
+ }
+
+ // Format the decimal part of the value first.
+ $value = $this->format($value);
+
+ // Reset the fraction digit settings, so that they don't affect
+ // future formattings with different currencies.
+ if ($resetMinimumFractionDigits) {
+ $this->minimumFractionDigits = null;
+ }
+ if ($resetMaximumFractionDigits) {
+ $this->maximumFractionDigits = null;
+ }
+
+ // Determine whether to show the currency symbol or the currency code.
+ if ($this->currencyDisplay == self::CURRENCY_DISPLAY_SYMBOL) {
+ $symbol = $currency->getSymbol();
+ } else {
+ $symbol = $currency->getCurrencyCode();
+ }
+
+ return str_replace('¤', $symbol, $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function parseCurrency($value, CurrencyInterface $currency)
+ {
+ $replacements = array(
+ // Convert the localized symbols back to their original form.
+ $this->numberFormat->getDecimalSeparator() => '.',
+ $this->numberFormat->getPlusSign() => '+',
+ $this->numberFormat->getMinusSign() => '-',
+
+ // Strip any grouping separators, the currency code or symbol.
+ $this->numberFormat->getGroupingSeparator() => '',
+ $currency->getCurrencyCode() => '',
+ $currency->getSymbol() => '',
+
+ // Strip whitespace (spaces and non-breaking spaces).
+ ' ' => '',
+ chr(0xC2) . chr(0xA0) => '',
+ );
+ $numberingSystem = $this->numberFormat->getNumberingSystem();
+ if (isset($this->digits[$numberingSystem])) {
+ // Convert the localized digits back to latin.
+ $replacements += array_flip($this->digits[$numberingSystem]);
+ }
+
+ $value = strtr($value, $replacements);
+ if (substr($value, 0, 1) == '(' && substr($value, -1, 1) == ')') {
+ // This is an accounting formatted negative number.
+ $value = '-' . str_replace(array('(', ')'), '', $value);
+ }
+
+ return is_numeric($value) ? $value : false;
+ }
+
+ /**
+ * Replaces digits with their localized equivalents.
+ *
+ * @param string $value The value being formatted.
+ *
+ * @return string
+ */
+ protected function replaceDigits($value)
+ {
+ $numberingSystem = $this->numberFormat->getNumberingSystem();
+ if (isset($this->digits[$numberingSystem])) {
+ $value = strtr($value, $this->digits[$numberingSystem]);
+ }
+
+ return $value;
+ }
+
+ /**
+ * Replaces number symbols with their localized equivalents.
+ *
+ * @param string $value The value being formatted.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-symbols
+ */
+ protected function replaceSymbols($value)
+ {
+ $replacements = array(
+ '.' => $this->numberFormat->getDecimalSeparator(),
+ ',' => $this->numberFormat->getGroupingSeparator(),
+ '+' => $this->numberFormat->getPlusSign(),
+ '-' => $this->numberFormat->getMinusSign(),
+ '%' => $this->numberFormat->getPercentSign(),
+ );
+
+ return strtr($value, $replacements);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumberFormat()
+ {
+ return $this->numberFormat;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinimumFractionDigits()
+ {
+ return $this->minimumFractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinimumFractionDigits($minimumFractionDigits)
+ {
+ $this->minimumFractionDigits = $minimumFractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMaximumFractionDigits()
+ {
+ return $this->maximumFractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMaximumFractionDigits($maximumFractionDigits)
+ {
+ $this->maximumFractionDigits = $maximumFractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isGroupingUsed()
+ {
+ return $this->groupingUsed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setGroupingUsed($groupingUsed)
+ {
+ $this->groupingUsed = $groupingUsed;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyDisplay()
+ {
+ return $this->currencyDisplay;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyDisplay($currencyDisplay)
+ {
+ $this->currencyDisplay = $currencyDisplay;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Formatter/NumberFormatterInterface.php b/library/intl/src/Formatter/NumberFormatterInterface.php
new file mode 100644
index 000000000..721107555
--- /dev/null
+++ b/library/intl/src/Formatter/NumberFormatterInterface.php
@@ -0,0 +1,134 @@
+<?php
+
+namespace CommerceGuys\Intl\Formatter;
+
+use CommerceGuys\Intl\Currency\CurrencyInterface;
+use CommerceGuys\Intl\NumberFormat\NumberFormatInterface;
+
+interface NumberFormatterInterface
+{
+ /* Format style constants */
+ const DECIMAL = 1;
+ const PERCENT = 2;
+ const CURRENCY = 3;
+ const CURRENCY_ACCOUNTING = 4;
+
+ /* Currency display style constants */
+ const CURRENCY_DISPLAY_SYMBOL = 1;
+ const CURRENCY_DISPLAY_CODE = 2;
+
+ /**
+ * Formats a number.
+ *
+ * Please note that the provided value should already be rounded.
+ * This formatter doesn't do any rounding of its own, and will simply
+ * truncate extra digits.
+ *
+ * @param string $value The value to format.
+ *
+ * @return string
+ */
+ public function format($value);
+
+ /**
+ * Formats a currency value.
+ *
+ * Please note that the provided value should already be rounded.
+ * This formatter doesn't do any rounding of its own, and will simply
+ * truncate extra digits.
+ *
+ * @param string $value The value to format.
+ * @param CurrencyInterface $currency The currency.
+ *
+ * @return string
+ */
+ public function formatCurrency($value, CurrencyInterface $currency);
+
+ /**
+ * Parses a formatted currency value.
+ *
+ * Commonly used in price input widgets where the end-user might
+ * input a value using digits and symbols common to their locale.
+ *
+ * @param string $value The value to parse.
+ * @param CurrencyInterface $currency The currency.
+ *
+ * @return string|false The parsed numeric value or FALSE on error.
+ */
+ public function parseCurrency($value, CurrencyInterface $currency);
+
+ /**
+ * Gets the number format.
+ *
+ * @return NumberFormatInterface
+ */
+ public function getNumberFormat();
+
+ /**
+ * Gets the minimum number of fraction digits.
+ *
+ * Defaults to 0 for decimal and percentage styles.
+ * Defaults to null for currency styles, since the currency number of
+ * fraction digits is used as the default in that case.
+ *
+ * @return int
+ */
+ public function getMinimumFractionDigits();
+
+ /**
+ * Sets the minimum number of fraction digits.
+ *
+ * @param int $minimumFractionDigits
+ */
+ public function setMinimumFractionDigits($minimumFractionDigits);
+
+ /**
+ * Gets the maximum number of fraction digits.
+ *
+ * Defaults to 3 for decimal and percentage styles.
+ * Defaults to null for currency styles, since the currency number of
+ * fraction digits is used as the default in that case.
+ *
+ * @return int
+ */
+ public function getMaximumFractionDigits();
+
+ /**
+ * Sets the maximum number of fraction digits.
+ *
+ * @param int $maximumFractionDigits
+ */
+ public function setMaximumFractionDigits($maximumFractionDigits);
+
+ /**
+ * Returns whether the major digits will be grouped.
+ *
+ * @return bool
+ */
+ public function isGroupingUsed();
+
+ /**
+ * Sets whether or not major digits should be grouped
+ *
+ * @param bool $groupingUsed
+ */
+ public function setGroupingUsed($groupingUsed);
+
+ /**
+ * Gets the currency display style.
+ *
+ * Controls whether a currency amount will be shown with the
+ * currency symbol (CURRENCY_DISPLAY_SYMBOL) or the
+ * currency code (CURRENCY_DISPLAY_CODE).
+ *
+ * @return int
+ */
+ public function getCurrencyDisplay();
+
+ /**
+ * Sets the currency display style.
+ *
+ * @param int $currencyDisplay One of the CURRENCY_DISPLAY_ constants.
+ */
+ public function setCurrencyDisplay($currencyDisplay);
+}
diff --git a/library/intl/src/Language/Language.php b/library/intl/src/Language/Language.php
new file mode 100644
index 000000000..259b57249
--- /dev/null
+++ b/library/intl/src/Language/Language.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+class Language implements LanguageInterface
+{
+ /**
+ * The two-letter language code.
+ *
+ * @var string
+ */
+ protected $languageCode;
+
+ /**
+ * The language name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The language locale (i.e. "en-US").
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the Language.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getLanguageCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLanguageCode()
+ {
+ return $this->languageCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLanguageCode($languageCode)
+ {
+ $this->languageCode = $languageCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Language/LanguageInterface.php b/library/intl/src/Language/LanguageInterface.php
new file mode 100644
index 000000000..612389142
--- /dev/null
+++ b/library/intl/src/Language/LanguageInterface.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+interface LanguageInterface
+{
+ /**
+ * Gets the two-letter language code.
+ *
+ * @return string
+ */
+ public function getLanguageCode();
+
+ /**
+ * Sets the two-letter language code.
+ *
+ * @param string $languageCode The two-letter language code.
+ */
+ public function setLanguageCode($languageCode);
+
+ /**
+ * Gets the language name.
+ *
+ * Note that certain locales have incomplete translations, in which
+ * case the english version of the language name is used instead.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the language name.
+ *
+ * @param string $name The language name.
+ */
+ public function setName($name);
+}
diff --git a/library/intl/src/Language/LanguageRepository.php b/library/intl/src/Language/LanguageRepository.php
new file mode 100644
index 000000000..50335cdc0
--- /dev/null
+++ b/library/intl/src/Language/LanguageRepository.php
@@ -0,0 +1,96 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownLanguageException;
+
+/**
+ * Manages languages based on JSON definitions.
+ */
+class LanguageRepository implements LanguageRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Per-locale language definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a LanguageRepository instance.
+ *
+ * @param string $definitionPath The path to the currency definitions.
+ * Defaults to 'resources/language'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/language/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($languageCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$languageCode])) {
+ throw new UnknownLanguageException($languageCode);
+ }
+
+ return $this->createLanguageFromDefinition($definitions[$languageCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $languages = array();
+ foreach ($definitions as $languageCode => $definition) {
+ $languages[$languageCode] = $this->createLanguageFromDefinition($definition, $locale);
+ }
+
+ return $languages;
+ }
+
+ /**
+ * Loads the language definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a language object from the provided definition.
+ *
+ * @param array $definition The language definition.
+ * @param string $locale The locale of the language definition.
+ *
+ * @return Language
+ */
+ protected function createLanguageFromDefinition(array $definition, $locale)
+ {
+ $language = new Language();
+ $language->setLanguageCode($definition['code']);
+ $language->setName($definition['name']);
+ $language->setLocale($locale);
+
+ return $language;
+ }
+}
diff --git a/library/intl/src/Language/LanguageRepositoryInterface.php b/library/intl/src/Language/LanguageRepositoryInterface.php
new file mode 100644
index 000000000..ebdc0200a
--- /dev/null
+++ b/library/intl/src/Language/LanguageRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+/**
+ * Language repository interface.
+ */
+interface LanguageRepositoryInterface
+{
+ /**
+ * Returns a language instance matching the provided language code.
+ *
+ * @param string $languageCode The language code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return LanguageInterface
+ */
+ public function get($languageCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available language instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of language implementing the LanguageInterface,
+ * keyed by language code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/LocaleResolverTrait.php b/library/intl/src/LocaleResolverTrait.php
new file mode 100644
index 000000000..21c463c7e
--- /dev/null
+++ b/library/intl/src/LocaleResolverTrait.php
@@ -0,0 +1,89 @@
+<?php
+
+namespace CommerceGuys\Intl;
+
+use CommerceGuys\Intl\Exception\UnknownLocaleException;
+
+trait LocaleResolverTrait
+{
+ /**
+ * The path where per-locale definitions are stored.
+ */
+ protected $definitionPath;
+
+ /**
+ * Determines which locale should be used for loading definitions.
+ *
+ * If the "bs-Cyrl-BA" locale is requested, with an "en" fallback,
+ * the system will try to find the definitions for:
+ * 1) bs-Cyrl-BA
+ * 2) bs-Cyrl
+ * 3) bs
+ * 4) en
+ * The first locale for which a definition file is found, wins.
+ * Otherwise, an exception is thrown.
+ *
+ * @param string $locale The desired locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return string
+ *
+ * @throws UnknownLocaleException
+ */
+ protected function resolveLocale($locale = null, $fallbackLocale = null)
+ {
+ if (is_null($locale)) {
+ // Use the default locale if none was provided.
+ // @todo Provide a way to override this.
+ $locale = 'en';
+ }
+ // Normalize the locale. Allows en_US to work the same as en-US, etc.
+ $locale = str_replace('_', '-', $locale);
+ // List all possible variants (i.e. en-US gives "en-US" and "en").
+ $localeVariants = $this->getLocaleVariants($locale);
+ // A fallback locale was provided, add it to the end of the chain.
+ if (isset($fallbackLocale)) {
+ $localeVariants[] = $fallbackLocale;
+ }
+
+ // Try to resolve a locale by finding a matching definition file.
+ $resolvedLocale = null;
+ foreach ($localeVariants as $localeVariant) {
+ $path = $this->definitionPath . $localeVariant . '.json';
+ if (file_exists($path)) {
+ $resolvedLocale = $localeVariant;
+ break;
+ }
+ }
+ // No locale could be resolved, stop here.
+ if (!$resolvedLocale) {
+ throw new UnknownLocaleException($locale);
+ }
+
+ return $resolvedLocale;
+ }
+
+ /**
+ * Returns all variants of a locale.
+ *
+ * For example, "bs-Cyrl-BA" has the following variants:
+ * 1) bs-Cyrl-BA
+ * 2) bs-Cyrl
+ * 3) bs
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ *
+ * @return array An array of all variants of a locale.
+ */
+ protected function getLocaleVariants($locale)
+ {
+ $localeVariants = array();
+ $localeParts = explode('-', $locale);
+ while (!empty($localeParts)) {
+ $localeVariants[] = implode('-', $localeParts);
+ array_pop($localeParts);
+ }
+
+ return $localeVariants;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormat.php b/library/intl/src/NumberFormat/NumberFormat.php
new file mode 100644
index 000000000..0c512b7ab
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormat.php
@@ -0,0 +1,269 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+class NumberFormat implements NumberFormatInterface
+{
+ /**
+ * The locale (i.e. "en_US").
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * The numbering system.
+ *
+ * @var string
+ */
+ protected $numberingSystem = array();
+
+ /**
+ * The decimal separator.
+ *
+ * @var string
+ */
+ protected $decimalSeparator = array();
+
+ /**
+ * The grouping separator.
+ *
+ * @var string
+ */
+ protected $groupingSeparator = array();
+
+ /**
+ * The plus sign.
+ *
+ * @var string
+ */
+ protected $plusSign = array();
+
+ /**
+ * The number symbols.
+ *
+ * @var string
+ */
+ protected $minusSign = array();
+
+ /**
+ * The percent sign.
+ *
+ * @var string
+ */
+ protected $percentSign = array();
+
+ /**
+ * The number pattern used to format decimal numbers.
+ *
+ * @var string
+ */
+ protected $decimalPattern;
+
+ /**
+ * The number pattern used to format percentages.
+ *
+ * @var string
+ */
+ protected $percentPattern;
+
+ /**
+ * The number pattern used to format currency amounts.
+ *
+ * @var string
+ */
+ protected $currencyPattern;
+
+ /**
+ * The number pattern used to format accounting currency amounts.
+ *
+ * @var string
+ */
+ protected $accountingCurrencyPattern;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumberingSystem()
+ {
+ return $this->numberingSystem;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumberingSystem($numberingSystem)
+ {
+ $this->numberingSystem = $numberingSystem;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDecimalSeparator()
+ {
+ return $this->decimalSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setDecimalSeparator($decimalSeparator)
+ {
+ $this->decimalSeparator = $decimalSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getGroupingSeparator()
+ {
+ return $this->groupingSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setGroupingSeparator($groupingSeparator)
+ {
+ $this->groupingSeparator = $groupingSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPlusSign()
+ {
+ return $this->plusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPlusSign($plusSign)
+ {
+ $this->plusSign = $plusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinusSign()
+ {
+ return $this->minusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinusSign($minusSign)
+ {
+ $this->minusSign = $minusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPercentSign()
+ {
+ return $this->percentSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPercentSign($percentSign)
+ {
+ $this->percentSign = $percentSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDecimalPattern()
+ {
+ return $this->decimalPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setDecimalPattern($decimalPattern)
+ {
+ $this->decimalPattern = $decimalPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPercentPattern()
+ {
+ return $this->percentPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPercentPattern($percentPattern)
+ {
+ $this->percentPattern = $percentPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyPattern()
+ {
+ return $this->currencyPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyPattern($currencyPattern)
+ {
+ $this->currencyPattern = $currencyPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAccountingCurrencyPattern()
+ {
+ return $this->accountingCurrencyPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setAccountingCurrencyPattern($accountingCurrencyPattern)
+ {
+ $this->accountingCurrencyPattern = $accountingCurrencyPattern;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatInterface.php b/library/intl/src/NumberFormat/NumberFormatInterface.php
new file mode 100644
index 000000000..fa382df70
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatInterface.php
@@ -0,0 +1,185 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+interface NumberFormatInterface
+{
+ // Arabic-Indic digits.
+ const NUMBERING_SYSTEM_ARABIC = 'arab';
+ // Extended Arabic-Indic digits.
+ const NUMBERING_SYSTEM_ARABIC_EXTENDED = 'arabext';
+ // Bengali digits.
+ const NUMBERING_SYSTEM_BENGALI = 'beng';
+ // Devanagari digits.
+ const NUMBERING_SYSTEM_DEVANAGARI = 'deva';
+ // Latin digits
+ const NUMBERING_SYSTEM_LATIN = 'latn';
+
+ /**
+ * Gets the locale.
+ *
+ * @return string
+ */
+ public function getLocale();
+
+ /**
+ * Sets the locale.
+ *
+ * @param string $locale The locale (i.e. "en_US").
+ */
+ public function setLocale($locale);
+
+ /**
+ * Gets the numbering system.
+ *
+ * The value is one of the NUMBERING_SYSTEM_ constants.
+ *
+ * @return string
+ */
+ public function getNumberingSystem();
+
+ /**
+ * Sets the numbering system.
+ *
+ * @param string $numberingSystem One of the NUMBERING_SYSTEM_ constants.
+ */
+ public function setNumberingSystem($numberingSystem);
+
+ /**
+ * Gets the decimal separator.
+ *
+ * @return string
+ */
+ public function getDecimalSeparator();
+
+ /**
+ * Sets the decimal separator.
+ *
+ * @var string $decimalSeparator
+ */
+ public function setDecimalSeparator($decimalSeparator);
+
+ /**
+ * Gets the grouping separator.
+ *
+ * @return string
+ */
+ public function getGroupingSeparator();
+
+ /**
+ * Sets the grouping separator.
+ *
+ * @var string $groupingSeparator
+ */
+ public function setGroupingSeparator($groupingSeparator);
+
+ /**
+ * Gets the plus sign.
+ *
+ * @return string
+ */
+ public function getPlusSign();
+
+ /**
+ * Sets the plus sign.
+ *
+ * @var string $plusSign
+ */
+ public function setPlusSign($plusSign);
+
+ /**
+ * Gets the minus sign.
+ *
+ * @return string
+ */
+ public function getMinusSign();
+
+ /**
+ * Sets the minus sign.
+ *
+ * @var string $minusSign
+ */
+ public function setMinusSign($minusSign);
+
+ /**
+ * Gets the percent sign.
+ *
+ * @return string
+ */
+ public function getPercentSign();
+
+ /**
+ * Sets the percent sign.
+ *
+ * @var string $percentSign
+ */
+ public function setPercentSign($percentSign);
+
+ /**
+ * Gets the number pattern used to format decimal numbers.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getDecimalPattern();
+
+ /**
+ * Sets the number pattern used to format decimal numbers.
+ *
+ * @param string $decimalPattern The decimal pattern.
+ */
+ public function setDecimalPattern($decimalPattern);
+
+ /**
+ * Gets the number pattern used to format percentages.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getPercentPattern();
+
+ /**
+ * Sets the number pattern used to format percentages.
+ *
+ * @param string $percentPattern The percent pattern.
+ */
+ public function setPercentPattern($percentPattern);
+
+ /**
+ * Gets the number pattern used to format currency amounts.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getCurrencyPattern();
+
+ /**
+ * Sets the number pattern used to format currency amounts.
+ *
+ * @param string $currencyPattern The currency pattern.
+ */
+ public function setCurrencyPattern($currencyPattern);
+
+ /**
+ * Gets the number pattern used to format accounting currency amounts.
+ *
+ * Most commonly used when formatting amounts on invoices.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getAccountingCurrencyPattern();
+
+ /**
+ * Sets the number pattern used to format accounting currency amounts.
+ *
+ * Most commonly used when formatting amounts on invoices.
+ *
+ * @param string $accountingCurrencyPattern The accounting currency pattern.
+ */
+ public function setAccountingCurrencyPattern($accountingCurrencyPattern);
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatRepository.php b/library/intl/src/NumberFormat/NumberFormatRepository.php
new file mode 100644
index 000000000..29a597906
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatRepository.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+
+/**
+ * Repository for number formats based on JSON definitions.
+ */
+class NumberFormatRepository implements NumberFormatRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Number format definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a NumberFormatRepository instance.
+ *
+ * @param string $definitionPath The path to the number format definitions.
+ * Defaults to 'resources/number_format'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/number_format/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($locale, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+ }
+
+ return $this->createNumberFormatFromDefinition($this->definitions[$locale], $locale);
+ }
+
+ /**
+ * Creates a number format object from the provided definition.
+ *
+ * @param array $definition The number format definition.
+ * @param string $locale The locale of the number format definition.
+ *
+ * @return NumberFormat
+ */
+ protected function createNumberFormatFromDefinition(array $definition, $locale)
+ {
+ if (!isset($definition['decimal_separator'])) {
+ $definition['decimal_separator'] = '.';
+ }
+ if (!isset($definition['grouping_separator'])) {
+ $definition['grouping_separator'] = ',';
+ }
+ if (!isset($definition['plus_sign'])) {
+ $definition['plus_sign'] = '+';
+ }
+ if (!isset($definition['minus_sign'])) {
+ $definition['minus_sign'] = '-';
+ }
+ if (!isset($definition['percent_sign'])) {
+ $definition['percent_sign'] = '%';
+ }
+
+ $numberFormat = new NumberFormat();
+ $numberFormat->setLocale($locale);
+ $numberFormat->setNumberingSystem($definition['numbering_system']);
+ $numberFormat->setDecimalSeparator($definition['decimal_separator']);
+ $numberFormat->setGroupingSeparator($definition['grouping_separator']);
+ $numberFormat->setPlusSign($definition['plus_sign']);
+ $numberFormat->setMinusSign($definition['minus_sign']);
+ $numberFormat->setPercentSign($definition['percent_sign']);
+ $numberFormat->setDecimalPattern($definition['decimal_pattern']);
+ $numberFormat->setPercentPattern($definition['percent_pattern']);
+ $numberFormat->setCurrencyPattern($definition['currency_pattern']);
+ $numberFormat->setAccountingCurrencyPattern($definition['accounting_currency_pattern']);
+
+ return $numberFormat;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php b/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php
new file mode 100644
index 000000000..ff162b522
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+/**
+ * Number format repository interface.
+ */
+interface NumberFormatRepositoryInterface
+{
+ /**
+ * Returns a number format instance for the provided locale.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return NumberFormatInterface
+ */
+ public function get($locale, $fallbackLocale = null);
+}
diff --git a/library/intl/tests/Country/CountryRepositoryTest.php b/library/intl/tests/Country/CountryRepositoryTest.php
new file mode 100644
index 000000000..23e1509d8
--- /dev/null
+++ b/library/intl/tests/Country/CountryRepositoryTest.php
@@ -0,0 +1,114 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Country;
+
+use CommerceGuys\Intl\Country\CountryRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Country\CountryRepository
+ */
+class CountryRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Base country definitions.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array(
+ 'FR' => array(
+ 'code' => 'FR',
+ 'three_letter_code' => 'FRA',
+ 'numeric_code' => '250',
+ 'telephone_code' => '33',
+ ),
+ 'US' => array(
+ 'code' => 'US',
+ 'three_letter_code' => 'USA',
+ 'numeric_code' => '840',
+ 'telephone_code' => '1',
+ ),
+ );
+
+ /**
+ * English country definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'FR' => array(
+ 'name' => 'France',
+ ),
+ 'US' => array(
+ 'name' => 'United States',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('country/base.json')->at($root)->setContent(json_encode($this->baseDefinitions));
+ vfsStream::newFile('country/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the country repository and confirm that the definition path
+ // was properly set.
+ $countryRepository = new CountryRepository('vfs://resources/country/');
+ $definitionPath = $this->getObjectAttribute($countryRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/country/', $definitionPath);
+
+ return $countryRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createCountryFromDefinition
+ * @uses \CommerceGuys\Intl\Country\Country
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($countryRepository)
+ {
+ $country = $countryRepository->get('FR');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Country\\Country', $country);
+ $this->assertEquals('FR', $country->getCountryCode());
+ $this->assertEquals('France', $country->getName());
+ $this->assertEquals('FRA', $country->getThreeLetterCode());
+ $this->assertEquals('250', $country->getNumericCode());
+ $this->assertEquals('33', $country->getTelephoneCode());
+ $this->assertEquals('en', $country->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownCountryException
+ * @depends testConstructor
+ */
+ public function testGetInvalidCountry($countryRepository)
+ {
+ $countryRepository->get('DE');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createCountryFromDefinition
+ * @uses \CommerceGuys\Intl\Country\Country
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($countryRepository)
+ {
+ $countries = $countryRepository->getAll();
+ $this->assertArrayHasKey('FR', $countries);
+ $this->assertArrayHasKey('US', $countries);
+ $this->assertEquals('FR', $countries['FR']->getCountryCode());
+ $this->assertEquals('US', $countries['US']->getCountryCode());
+ }
+}
diff --git a/library/intl/tests/Country/CountryTest.php b/library/intl/tests/Country/CountryTest.php
new file mode 100644
index 000000000..a0b2dc116
--- /dev/null
+++ b/library/intl/tests/Country/CountryTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Country;
+
+use CommerceGuys\Intl\Country\Country;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Country\Country
+ */
+class CountryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Country
+ */
+ protected $country;
+
+ public function setUp()
+ {
+ $this->country = new Country();
+ }
+
+ /**
+ * @covers ::getCountryCode
+ * @covers ::setCountryCode
+ * @covers ::__toString
+ */
+ public function testCountryCode()
+ {
+ $this->country->setCountryCode('US');
+ $this->assertEquals('US', $this->country->getCountryCode());
+ $this->assertEquals('US', (string) $this->country);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->country->setName('United States');
+ $this->assertEquals('United States', $this->country->getName());
+ }
+
+ /**
+ * @covers ::getThreeLetterCode
+ * @covers ::setThreeLetterCode
+ */
+ public function testThreeLetterCode()
+ {
+ $this->country->setThreeLetterCode('USA');
+ $this->assertEquals('USA', $this->country->getThreeLetterCode());
+ }
+
+ /**
+ * @covers ::getNumericCode
+ * @covers ::setNumericCode
+ */
+ public function testNumericCode()
+ {
+ $this->country->setNumericCode('840');
+ $this->assertEquals('840', $this->country->getNumericCode());
+ }
+
+ /**
+ * @covers ::getTelephoneCode
+ * @covers ::setTelephoneCode
+ */
+ public function testTelephoneCode()
+ {
+ $this->country->setTelephoneCode('1');
+ $this->assertEquals('1', $this->country->getTelephoneCode());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->country->setLocale('en');
+ $this->assertEquals('en', $this->country->getLocale());
+ }
+}
diff --git a/library/intl/tests/Currency/CurrencyRepositoryTest.php b/library/intl/tests/Currency/CurrencyRepositoryTest.php
new file mode 100644
index 000000000..4270dc70f
--- /dev/null
+++ b/library/intl/tests/Currency/CurrencyRepositoryTest.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Currency;
+
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Currency\CurrencyRepository
+ */
+class CurrencyRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Base currency definitions.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array(
+ 'USD' => array(
+ 'code' => 'USD',
+ 'numeric_code' => '840',
+ ),
+ 'EUR' => array(
+ 'code' => 'EUR',
+ 'numeric_code' => '840',
+ 'fraction_digits' => '2',
+ ),
+ );
+
+ /**
+ * English currency definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'USD' => array(
+ 'name' => 'US Dollar',
+ 'symbol' => '$',
+ ),
+ 'EUR' => array(
+ 'name' => 'Euro',
+ 'symbol' => '€',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('currency/base.json')->at($root)->setContent(json_encode($this->baseDefinitions));
+ vfsStream::newFile('currency/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the currency repository and confirm that the definition path
+ // was properly set.
+ $currencyRepository = new CurrencyRepository('vfs://resources/currency/');
+ $definitionPath = $this->getObjectAttribute($currencyRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/currency/', $definitionPath);
+
+ return $currencyRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createCurrencyFromDefinition
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($currencyRepository)
+ {
+ $currency = $currencyRepository->get('USD');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Currency\\Currency', $currency);
+ $this->assertEquals('USD', $currency->getCurrencyCode());
+ $this->assertEquals('US Dollar', $currency->getName());
+ $this->assertEquals('840', $currency->getNumericCode());
+ $this->assertEquals('2', $currency->getFractionDigits());
+ $this->assertEquals('$', $currency->getSymbol());
+ $this->assertEquals('en', $currency->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownCurrencyException
+ * @depends testConstructor
+ */
+ public function testGetInvalidCurrency($currencyRepository)
+ {
+ $currencyRepository->get('RSD');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createCurrencyFromDefinition
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($currencyRepository)
+ {
+ $currencies = $currencyRepository->getAll();
+ $this->assertArrayHasKey('USD', $currencies);
+ $this->assertArrayHasKey('EUR', $currencies);
+ $this->assertEquals('USD', $currencies['USD']->getCurrencyCode());
+ $this->assertEquals('EUR', $currencies['EUR']->getCurrencyCode());
+ }
+}
diff --git a/library/intl/tests/Currency/CurrencyTest.php b/library/intl/tests/Currency/CurrencyTest.php
new file mode 100644
index 000000000..837e4d07a
--- /dev/null
+++ b/library/intl/tests/Currency/CurrencyTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Currency;
+
+use CommerceGuys\Intl\Currency\Currency;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Currency\Currency
+ */
+class CurrencyTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Currency
+ */
+ protected $currency;
+
+ public function setUp()
+ {
+ $this->currency = new Currency();
+ }
+
+ /**
+ * @covers ::getCurrencyCode
+ * @covers ::setCurrencyCode
+ * @covers ::__toString
+ */
+ public function testCurrencyCode()
+ {
+ $this->currency->setCurrencyCode('USD');
+ $this->assertEquals('USD', $this->currency->getCurrencyCode());
+ $this->assertEquals('USD', (string) $this->currency);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->currency->setName('US Dollar');
+ $this->assertEquals('US Dollar', $this->currency->getName());
+ }
+
+ /**
+ * @covers ::getNumericCode
+ * @covers ::setNumericCode
+ */
+ public function testNumericCode()
+ {
+ $this->currency->setNumericCode('840');
+ $this->assertEquals('840', $this->currency->getNumericCode());
+ }
+
+ /**
+ * @covers ::getFractionDigits
+ * @covers ::setFractionDigits
+ */
+ public function testFractionDigits()
+ {
+ $this->currency->setFractionDigits('2');
+ $this->assertEquals('2', $this->currency->getFractionDigits());
+ }
+
+ /**
+ * @covers ::getSymbol
+ * @covers ::setSymbol
+ */
+ public function testSymbol()
+ {
+ $this->currency->setSymbol('$');
+ $this->assertEquals('$', $this->currency->getSymbol());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->currency->setLocale('en');
+ $this->assertEquals('en', $this->currency->getLocale());
+ }
+}
diff --git a/library/intl/tests/DummyRepository.php b/library/intl/tests/DummyRepository.php
new file mode 100644
index 000000000..0d9ca760b
--- /dev/null
+++ b/library/intl/tests/DummyRepository.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+
+/**
+ * Dummy repository used for testing the LocaleResolverTrait.
+ */
+class DummyRepository
+{
+ use LocaleResolverTrait;
+
+ public function __construct()
+ {
+ $this->definitionPath = 'vfs://resources/dummy/';
+ }
+
+ public function runResolveLocale($locale, $fallbackLocale = null)
+ {
+ return $this->resolveLocale($locale, $fallbackLocale);
+ }
+}
diff --git a/library/intl/tests/Formatter/NumberFormatterTest.php b/library/intl/tests/Formatter/NumberFormatterTest.php
new file mode 100644
index 000000000..83574873b
--- /dev/null
+++ b/library/intl/tests/Formatter/NumberFormatterTest.php
@@ -0,0 +1,378 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Formatter;
+
+use CommerceGuys\Intl\Currency\Currency;
+use CommerceGuys\Intl\Formatter\NumberFormatter;
+use CommerceGuys\Intl\NumberFormat\NumberFormat;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Formatter\NumberFormatter
+ */
+class NumberFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Prepare two number formats.
+ */
+ protected $numberFormats = array(
+ 'latn' => array(
+ 'numbering_system' => 'latn',
+ 'decimal_pattern' => '#,##0.###',
+ 'percent_pattern' => '#,##0%',
+ 'currency_pattern' => '¤#,##0.00',
+ 'accounting_currency_pattern' => '¤#,##0.00;(¤#,##0.00)',
+ ),
+ 'beng' => array(
+ 'numbering_system' => 'beng',
+ 'decimal_pattern' => '#,##,##0.###',
+ 'percent_pattern' => '#,##,##0%',
+ 'currency_pattern' => '#,##,##0.00¤',
+ 'accounting_currency_pattern' => '#,##,##0.00¤;(#,##,##0.00¤)',
+ ),
+ );
+
+ /**
+ * Prepare two currency formats.
+ */
+ protected $currencies = array(
+ 'USD' => array(
+ 'code' => 'USD',
+ 'name' => 'US Dollar',
+ 'numeric_code' => '840',
+ 'symbol' => '$',
+ ),
+ 'BND' => array(
+ 'code' => 'BND',
+ 'name' => 'dollar Brunei',
+ 'numeric_code' => '096',
+ 'symbol' => 'BND',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::getNumberFormat
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testConstructor()
+ {
+ $numberFormat = new NumberFormat();
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertSame($numberFormat, $formatter->getNumberFormat());
+ }
+
+ /**
+ * @covers ::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @expectedException \CommerceGuys\Intl\Exception\InvalidArgumentException
+ * @expectedExceptionMessage Unknown format style provided to NumberFormatter::__construct().
+ */
+ public function testConstructorWithInvalidStyle()
+ {
+ $numberFormat = new NumberFormat();
+ new NumberFormatter($numberFormat, 'foo');
+ }
+
+ /**
+ * @covers ::format
+ * @covers ::replaceDigits
+ * @covers ::replaceSymbols
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider numberValueProvider
+ */
+ public function testFormat($number_format, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $formattedNumber = $formatter->format($value);
+ $this->assertSame($expected_value, $formattedNumber);
+ }
+
+ /**
+ * @covers ::SetMinimumFractionDigits
+ * @covers ::SetMaximumFractionDigits
+ * @covers ::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testFormatFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMinimumFractionDigits(2);
+ $formattedNumber = $formatter->format('12.5');
+ $this->assertSame('12.50', $formattedNumber);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMaximumFractionDigits(1);
+ $formattedNumber = $formatter->format('12.50');
+ $this->assertSame('12.5', $formattedNumber);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMinimumFractionDigits(4);
+ $formatter->setMaximumFractionDigits(5);
+ $formattedNumber = $formatter->format('12.50000');
+ $this->assertSame('12.5000', $formattedNumber);
+ }
+
+ /**
+ * @covers ::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @expectedException \CommerceGuys\Intl\Exception\InvalidArgumentException
+ */
+ public function testFormatOnlyAllowsNumbers()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->format('a12.34');
+ }
+
+ /**
+ * @covers ::formatCurrency
+ * @covers ::replaceSymbols
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider currencyValueProvider
+ */
+ public function testFormatCurrency($number_format, $currency, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $formattedNumber = $formatter->formatCurrency($value, $currency);
+ $this->assertSame($expected_value, $formattedNumber);
+ }
+
+ /**
+ * @covers ::parseCurrency
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider formattedCurrencyProvider
+ */
+ public function testParseCurrency($number_format, $currency, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $parsedNumber = $formatter->parseCurrency($value, $currency);
+ $this->assertSame($expected_value, $parsedNumber);
+ }
+
+ /**
+ * @covers ::getNumberFormat
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testGetNumberFormat()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertSame($numberFormat, $formatter->getNumberFormat());
+ }
+
+ /**
+ * @covers ::getMinimumFractionDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testMinimumFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // Defaults to 0 for decimal and percentage formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertEquals(0, $formatter->getMinimumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+ $this->assertEquals(0, $formatter->getMinimumFractionDigits());
+
+ // Should default to null for currency formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertNull($formatter->getMinimumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+ $this->assertNull($formatter->getMinimumFractionDigits());
+ }
+
+ /**
+ * @covers ::getMaximumFractionDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testMaximumFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // Defaults to 3 for decimal and percentage formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertEquals(3, $formatter->getMaximumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+ $this->assertEquals(3, $formatter->getMaximumFractionDigits());
+
+ // Should default to null for currency formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertNull($formatter->getMaximumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+ $this->assertNull($formatter->getMaximumFractionDigits());
+ }
+
+ /**
+ * @covers ::isGroupingUsed
+ * @covers ::setGroupingUsed
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testGroupingUsed()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // The formatter groups correctly.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertTrue($formatter->isGroupingUsed());
+ $this->assertSame('10,000.9', $formatter->format('10000.90'));
+
+ // The formatter respects grouping turned off.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $formatter->setGroupingUsed(false);
+ $this->assertFalse($formatter->isGroupingUsed());
+ $this->assertSame('10000.9', $formatter->format('10000.90'));
+ }
+
+ /**
+ * @covers ::getCurrencyDisplay
+ * @covers ::setCurrencyDisplay
+ * @covers ::formatCurrency
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testCurrencyDisplay()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $currency = $this->createCurrency($this->currencies['USD']);
+
+ // Currency display defaults to symbol.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertSame(NumberFormatter::CURRENCY_DISPLAY_SYMBOL, $formatter->getCurrencyDisplay());
+ $formattedNumber = $formatter->formatCurrency('100', $currency);
+ $this->assertSame('$100.00', $formattedNumber);
+
+ // Currency display respects setting the value to currency code.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $formatter->setCurrencyDisplay(NumberFormatter::CURRENCY_DISPLAY_CODE);
+ $this->assertSame(NumberFormatter::CURRENCY_DISPLAY_CODE, $formatter->getCurrencyDisplay());
+ $formattedNumber = $formatter->formatCurrency('100', $currency);
+ $this->assertSame('USD100.00', $formattedNumber);
+ }
+
+ /**
+ * Provides the number format, number style, value and expected formatted value.
+ */
+ public function numberValueProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::DECIMAL, '-50.5', '-50.5'),
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::PERCENT, '50.5', '50.5%'),
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::DECIMAL, '5000000.5', '5,000,000.5'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::DECIMAL, '-50.5', '-৫০.৫'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::PERCENT, '50.5', '৫০.৫%'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::DECIMAL, '5000000.5', '৫০,০০,০০০.৫')
+ );
+ }
+
+ /**
+ * Provides the number format, currency format, number style, value and expected formatted value.
+ */
+ public function currencyValueProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '-5.05', '-$5.05'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY_ACCOUNTING, '-5.05', '($5.05)'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '500100.05', '$500,100.05'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '-50.5', '-৫০.৫০BND'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY_ACCOUNTING, '-50.5', '(৫০.৫০BND)'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '500100.05', '৫,০০,১০০.০৫BND'),
+ );
+ }
+
+ /**
+ * Provides values for the formatted currency parser.
+ */
+ public function formattedCurrencyProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '$500,100.05', '500100.05'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '-$1,059.59', '-1059.59'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY_ACCOUNTING, '($1,059.59)', '-1059.59'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '৫,০০,১০০.০৫BND', '500100.05'),
+ );
+ }
+
+ /**
+ * Helper for initiating a new NumberFormat object.
+ */
+ protected function createNumberFormat(array $definition, $locale = 'en')
+ {
+ $default = array(
+ 'decimal_separator' => '.',
+ 'grouping_separator' => ',',
+ 'plus_sign' => '+',
+ 'minus_sign' => '-',
+ 'percent_sign' => '%'
+ );
+ $format = array_merge($default, $definition);
+
+ $numberFormat = new NumberFormat();
+ $numberFormat->setLocale($locale);
+ $numberFormat->setNumberingSystem($format['numbering_system']);
+ $numberFormat->setDecimalSeparator($format['decimal_separator']);
+ $numberFormat->setGroupingSeparator($format['grouping_separator']);
+ $numberFormat->setPlusSign($format['plus_sign']);
+ $numberFormat->setMinusSign($format['minus_sign']);
+ $numberFormat->setPercentSign($format['percent_sign']);
+ $numberFormat->setDecimalPattern($format['decimal_pattern']);
+ $numberFormat->setPercentPattern($format['percent_pattern']);
+ $numberFormat->setCurrencyPattern($format['currency_pattern']);
+ $numberFormat->setAccountingCurrencyPattern($format['accounting_currency_pattern']);
+
+ return $numberFormat;
+ }
+
+ /**
+ * Helper for initiating a new Currency object.
+ */
+ protected function createCurrency(array $definition, $locale = 'en')
+ {
+ $default = array(
+ 'fraction_digits' => 2
+ );
+ $format = array_merge($default, $definition);
+
+ $currency = new Currency();
+ $currency->setCurrencyCode($format['code']);
+ $currency->setName($format['name']);
+ $currency->setNumericCode($format['numeric_code']);
+ $currency->setFractionDigits($format['fraction_digits']);
+ $currency->setSymbol($format['symbol']);
+ $currency->setLocale($locale);
+
+ return $currency;
+ }
+}
diff --git a/library/intl/tests/Language/LanguageRepositoryTest.php b/library/intl/tests/Language/LanguageRepositoryTest.php
new file mode 100644
index 000000000..ea52cbf4c
--- /dev/null
+++ b/library/intl/tests/Language/LanguageRepositoryTest.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Language;
+
+use CommerceGuys\Intl\Language\LanguageRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Language\LanguageRepository
+ */
+class LanguageRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * English language definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'en' => array(
+ 'code' => 'en',
+ 'name' => 'English',
+ ),
+ 'fr' => array(
+ 'code' => 'fr',
+ 'name' => 'French',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('language/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the language repository and confirm that the definition path
+ // was properly set.
+ $languageRepository = new LanguageRepository('vfs://resources/language/');
+ $definitionPath = $this->getObjectAttribute($languageRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/language/', $definitionPath);
+
+ return $languageRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createLanguageFromDefinition
+ * @uses \CommerceGuys\Intl\Language\Language
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($languageRepository)
+ {
+ $language = $languageRepository->get('en');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Language\\Language', $language);
+ $this->assertEquals('en', $language->getLanguageCode());
+ $this->assertEquals('English', $language->getName());
+ $this->assertEquals('en', $language->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownLanguageException
+ * @depends testConstructor
+ */
+ public function testGetInvalidLanguage($languageRepository)
+ {
+ $languageRepository->get('de');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createLanguageFromDefinition
+ * @uses \CommerceGuys\Intl\Language\Language
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($languageRepository)
+ {
+ $languages = $languageRepository->getAll();
+ $this->assertArrayHasKey('en', $languages);
+ $this->assertArrayHasKey('fr', $languages);
+ $this->assertEquals('en', $languages['en']->getLanguageCode());
+ $this->assertEquals('fr', $languages['fr']->getLanguageCode());
+ }
+}
diff --git a/library/intl/tests/Language/LanguageTest.php b/library/intl/tests/Language/LanguageTest.php
new file mode 100644
index 000000000..037483c88
--- /dev/null
+++ b/library/intl/tests/Language/LanguageTest.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Language;
+
+use CommerceGuys\Intl\Language\Language;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Language\Language
+ */
+class LanguageTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Language
+ */
+ protected $language;
+
+ public function setUp()
+ {
+ $this->language = new Language();
+ }
+
+ /**
+ * @covers ::getLanguageCode
+ * @covers ::setLanguageCode
+ * @covers ::__toString
+ */
+ public function testLanguageCode()
+ {
+ $this->language->setLanguageCode('en');
+ $this->assertEquals('en', $this->language->getLanguageCode());
+ $this->assertEquals('en', (string) $this->language);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->language->setName('English');
+ $this->assertEquals('English', $this->language->getName());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->language->setLocale('en');
+ $this->assertEquals('en', $this->language->getLocale());
+ }
+}
diff --git a/library/intl/tests/LocaleResolverTest.php b/library/intl/tests/LocaleResolverTest.php
new file mode 100644
index 000000000..a52dea353
--- /dev/null
+++ b/library/intl/tests/LocaleResolverTest.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests;
+
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\LocaleResolverTrait
+ */
+class LocaleResolverTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var DummyRepository
+ */
+ protected $repository;
+
+ public function setUp()
+ {
+ // Simulate the presence of various definitions.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('dummy/bs-Cyrl.json')->at($root)->setContent('');
+ vfsStream::newFile('dummy/bs.json')->at($root)->setContent('');
+ vfsStream::newFile('dummy/en.json')->at($root)->setContent('');
+
+ $this->repository = new DummyRepository();
+ }
+
+ /**
+ * @covers ::resolveLocale
+ * @covers ::getLocaleVariants
+ */
+ public function testLocaleFallback()
+ {
+ $locale = $this->repository->runResolveLocale('bs-Cyrl-BA');
+ $this->assertEquals('bs-Cyrl', $locale);
+ $locale = $this->repository->runResolveLocale('bs-Latn-BA');
+ $this->assertEquals('bs', $locale);
+ $locale = $this->repository->runResolveLocale('de', 'en');
+ $this->assertEquals('en', $locale);
+ }
+
+ /**
+ * @covers ::resolveLocale
+ * @covers ::getLocaleVariants
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownLocaleException
+ */
+ public function testInvalidLocale()
+ {
+ $locale = $this->repository->runResolveLocale('de');
+ }
+}
diff --git a/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php b/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php
new file mode 100644
index 000000000..41e45805d
--- /dev/null
+++ b/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\NumberFormat;
+
+use CommerceGuys\Intl\NumberFormat\NumberFormatRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\NumberFormat\NumberFormatRepository
+ */
+class NumberFormatRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * English number format definition.
+ *
+ * @var array
+ */
+ protected $englishDefinition = array(
+ 'numbering_system' => 'latn',
+ 'decimal_pattern' => '#,##0.###',
+ 'percent_pattern' => '#,##0%',
+ 'currency_pattern' => '¤#,##0.00',
+ 'accounting_currency_pattern' => '¤#,##0.00;(¤#,##0.00)',
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('number_format/en.json')->at($root)->setContent(json_encode($this->englishDefinition));
+
+ // Instantiate the number format repository and confirm that the definition
+ // path was properly set.
+ $numberFormatRepository = new NumberFormatRepository('vfs://resources/number_format/');
+ $definitionPath = $this->getObjectAttribute($numberFormatRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/number_format/', $definitionPath);
+
+ return $numberFormatRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::createNumberFormatFromDefinition
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($numberFormatRepository)
+ {
+ $numberFormat = $numberFormatRepository->get('en');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\NumberFormat\\NumberFormat', $numberFormat);
+ $this->assertEquals('en', $numberFormat->getLocale());
+ $this->assertEquals('latn', $numberFormat->getNumberingSystem());
+ $this->assertEquals('.', $numberFormat->getDecimalSeparator());
+ $this->assertEquals(',', $numberFormat->getGroupingSeparator());
+ $this->assertEquals('+', $numberFormat->getPlusSign());
+ $this->assertEquals('-', $numberFormat->getMinusSign());
+ $this->assertEquals('%', $numberFormat->getPercentSign());
+ $this->assertEquals('#,##0.###', $numberFormat->getDecimalPattern());
+ $this->assertEquals('#,##0%', $numberFormat->getPercentPattern());
+ $this->assertEquals('¤#,##0.00', $numberFormat->getCurrencyPattern());
+ $this->assertEquals('¤#,##0.00;(¤#,##0.00)', $numberFormat->getAccountingCurrencyPattern());
+
+ return $numberFormat;
+ }
+}
diff --git a/library/intl/tests/NumberFormat/NumberFormatTest.php b/library/intl/tests/NumberFormat/NumberFormatTest.php
new file mode 100644
index 000000000..299dc41cb
--- /dev/null
+++ b/library/intl/tests/NumberFormat/NumberFormatTest.php
@@ -0,0 +1,131 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\NumberFormat;
+
+use CommerceGuys\Intl\NumberFormat\NumberFormat;
+
+/**
+ * @coversDefaultClass CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+class NumberFormatTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var NumberFormat
+ */
+ protected $numberFormat;
+
+ public function setUp()
+ {
+ $this->numberFormat = new NumberFormat();
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->numberFormat->setLocale('en');
+ $this->assertEquals('en', $this->numberFormat->getLocale());
+ }
+
+ /**
+ * @covers ::getNumberingSystem
+ * @covers ::setNumberingSystem
+ */
+ public function testNumberingSystem()
+ {
+ $this->numberFormat->setNumberingSystem('latn');
+ $this->assertEquals('latn', $this->numberFormat->getNumberingSystem());
+ }
+
+ /**
+ * @covers ::getDecimalSeparator
+ * @covers ::setDecimalSeparator
+ */
+ public function testDecimalSeparator()
+ {
+ $this->numberFormat->setDecimalSeparator('.');
+ $this->assertEquals('.', $this->numberFormat->getDecimalSeparator());
+ }
+
+ /**
+ * @covers ::getGroupingSeparator
+ * @covers ::setGroupingSeparator
+ */
+ public function testGroupingSeparator()
+ {
+ $this->numberFormat->setGroupingSeparator(',');
+ $this->assertEquals(',', $this->numberFormat->getGroupingSeparator());
+ }
+
+ /**
+ * @covers ::getPlusSign
+ * @covers ::setPlusSign
+ */
+ public function testPlusSign()
+ {
+ $this->numberFormat->setPlusSign('+');
+ $this->assertEquals('+', $this->numberFormat->getPlusSign());
+ }
+
+ /**
+ * @covers ::getMinusSign
+ * @covers ::setMinusSign
+ */
+ public function testMinusSign()
+ {
+ $this->numberFormat->setMinusSign('-');
+ $this->assertEquals('-', $this->numberFormat->getMinusSign());
+ }
+
+ /**
+ * @covers ::getPercentSign
+ * @covers ::setPercentSign
+ */
+ public function testPercentSign()
+ {
+ $this->numberFormat->setPercentSign('%');
+ $this->assertEquals('%', $this->numberFormat->getPercentSign());
+ }
+
+ /**
+ * @covers ::getDecimalPattern
+ * @covers ::setDecimalPattern
+ */
+ public function testDecimalPattern()
+ {
+ $this->numberFormat->setDecimalPattern('#,##0.###');
+ $this->assertEquals('#,##0.###', $this->numberFormat->getDecimalPattern());
+ }
+
+ /**
+ * @covers ::getPercentPattern
+ * @covers ::setPercentPattern
+ */
+ public function testPercentPattern()
+ {
+ $this->numberFormat->setPercentPattern('#,##0%');
+ $this->assertEquals('#,##0%', $this->numberFormat->getPercentPattern());
+ }
+
+ /**
+ * @covers ::getCurrencyPattern
+ * @covers ::setCurrencyPattern
+ */
+ public function testCurrencyPattern()
+ {
+ $this->numberFormat->setCurrencyPattern('¤#,##0.00');
+ $this->assertEquals('¤#,##0.00', $this->numberFormat->getCurrencyPattern());
+ }
+
+ /**
+ * @covers ::getAccountingCurrencyPattern
+ * @covers ::setAccountingCurrencyPattern
+ */
+ public function testAccountingCurrencyPattern()
+ {
+ $this->numberFormat->setAccountingCurrencyPattern('¤#,##0.00;(¤#,##0.00)');
+ $this->assertEquals('¤#,##0.00;(¤#,##0.00)', $this->numberFormat->getAccountingCurrencyPattern());
+ }
+}
diff --git a/library/intl/vendor/autoload.php b/library/intl/vendor/autoload.php
new file mode 100644
index 000000000..a46461eae
--- /dev/null
+++ b/library/intl/vendor/autoload.php
@@ -0,0 +1,7 @@
+<?php
+
+// autoload.php @generated by Composer
+
+require_once __DIR__ . '/composer' . '/autoload_real.php';
+
+return ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307::getLoader();
diff --git a/library/intl/vendor/composer/ClassLoader.php b/library/intl/vendor/composer/ClassLoader.php
new file mode 100644
index 000000000..70d78bc3f
--- /dev/null
+++ b/library/intl/vendor/composer/ClassLoader.php
@@ -0,0 +1,387 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ * Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class ClassLoader
+{
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
+ }
+
+ return array();
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-0 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return bool|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if ($file === null && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if ($file === null) {
+ // Remember that this class does not exist.
+ return $this->classMap[$class] = false;
+ }
+
+ return $file;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/library/intl/vendor/composer/autoload_classmap.php b/library/intl/vendor/composer/autoload_classmap.php
new file mode 100644
index 000000000..7a91153b0
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_classmap.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/library/intl/vendor/composer/autoload_namespaces.php b/library/intl/vendor/composer/autoload_namespaces.php
new file mode 100644
index 000000000..b7fc0125d
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/library/intl/vendor/composer/autoload_psr4.php b/library/intl/vendor/composer/autoload_psr4.php
new file mode 100644
index 000000000..a5a08e6c5
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+ 'CommerceGuys\\Intl\\' => array($baseDir . '/src'),
+);
diff --git a/library/intl/vendor/composer/autoload_real.php b/library/intl/vendor/composer/autoload_real.php
new file mode 100644
index 000000000..059a57bb5
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_real.php
@@ -0,0 +1,50 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307
+{
+ private static $loader;
+
+ public static function loadClassLoader($class)
+ {
+ if ('Composer\Autoload\ClassLoader' === $class) {
+ require __DIR__ . '/ClassLoader.php';
+ }
+ }
+
+ public static function getLoader()
+ {
+ if (null !== self::$loader) {
+ return self::$loader;
+ }
+
+ spl_autoload_register(array('ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307', 'loadClassLoader'), true, true);
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ spl_autoload_unregister(array('ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307', 'loadClassLoader'));
+
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+
+ $loader->register(true);
+
+ return $loader;
+ }
+}
+
+function composerRequiredf7950dd7e2ab03f0683ccb1c2da0307($file)
+{
+ require $file;
+}
diff --git a/library/jRange/.gitignore b/library/jRange/.gitignore
new file mode 100644
index 000000000..089ae868a
--- /dev/null
+++ b/library/jRange/.gitignore
@@ -0,0 +1,2 @@
+
+*.codekit
diff --git a/library/jslider/MIT-LICENSE.txt b/library/jRange/LICENSE
index b193a88a9..8f47b9a63 100644
--- a/library/jslider/MIT-LICENSE.txt
+++ b/library/jRange/LICENSE
@@ -1,5 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2012 Egor Khmelev
+
+Copyright (c) 2014 Nitin Hayaran
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/library/jRange/README.md b/library/jRange/README.md
new file mode 100644
index 000000000..5cbfe6aa8
--- /dev/null
+++ b/library/jRange/README.md
@@ -0,0 +1,5 @@
+## jQuery plugin to create Range Selector
+
+![jRange Preview](http://i.imgur.com/da8uZwx.png)
+
+[Demo and Documentation](http://nitinhayaran.github.io/jRange/demo/) \ No newline at end of file
diff --git a/library/jRange/demo/index.html b/library/jRange/demo/index.html
new file mode 100644
index 000000000..ac443f11f
--- /dev/null
+++ b/library/jRange/demo/index.html
@@ -0,0 +1,245 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>jRange : jQuery Range Selector</title>
+ <link rel="stylesheet" href="normalize.css">
+ <link rel="stylesheet" href="main.css">
+ <link rel="stylesheet" href="prism/prism.css">
+ <link rel="stylesheet" href="../jquery.range.css">
+ <link href='http://fonts.googleapis.com/css?family=Raleway:100,300' rel='stylesheet' type='text/css'>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
+</head>
+<body>
+ <section class="pane header">
+ <div class="header">
+ <h1>jRange</h1>
+ <h2>jQuery Plugin to create Range Selector</h2>
+ </div>
+ <footer>
+ <div class="left">
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="https://github.com/nitinhayaran/jRange" data-text="jRange - jQuery plugin for Range Selector" data-count="none" data-via="nitinhayaran">Tweet</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ <iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;repo=jRange&amp;type=watch&amp;count=false&amp;size=small"
+ allowtransparency="true" frameborder="0" scrolling="0" width="62" height="20"></iframe>
+ </div>
+ <div class="right">
+ <a href="https://twitter.com/nitinhayaran" class="twitter-follow-button" data-show-count="false">Follow @nitinhayaran</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ <iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;type=follow&amp;count=true" allowtransparency="true" frameborder="0" scrolling="0" width="153" height="20"></iframe>
+ </div>
+ </footer>
+ </section>
+ <section class="body demo">
+ <div class="container">
+ <h2>See it in Action</h2>
+ <h3>Play around with the demo</h3>
+ <div class="demo-container clearfix">
+ <div class="demo-section">
+ <div class="demo-code">
+ <pre><code class="language-javascript">$('.single-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,50,100],
+ format: '%s',
+ width: 300,
+ showLabels: true
+});</code></pre>
+ </div>
+ <div class="demo-output">
+ <input class="single-slider" type="hidden" value="25"/>
+ </div>
+ </div>
+ <div class="demo-section">
+ <div class="demo-code">
+ <pre><code class="language-javascript">$('.range-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true,
+ isRange : true
+});</code></pre>
+ </div>
+ <div class="demo-output">
+ <input class="range-slider" type="hidden" value="25,75"/>
+ </div>
+ </div>
+
+
+ </div>
+ <div class="text-container">
+ <h2>How to Use</h2>
+ <h3>Lets see some code</h3>
+ <p>To get started you'll have to include <code>jquery.range.js</code> and <code>jquery.range.css</code> files in your html file.</p>
+ <pre><code class="language-css">&lt;link rel="stylesheet" href="jquery.range.css"&gt;
+&lt;script src="jquery.range.js"&gt;&lt;/script&gt;</code></pre>
+ <p>Later just add an hidden input, where ever you want this slider to be shown.</p>
+ <pre><code class="language-css">&lt;input type="hidden" class="slider-input" value="23" /&gt;</code></pre>
+ <p>After this you'll have to intialize this plugin for that input, as shown in the example above</p>
+
+ <h2>Options</h2>
+ <h3>See configuration options</h3>
+ <p>Options can also be set programatically, by passing an options hash to the jRange method.
+ <table class="plugin-options" width='900'>
+ <tr>
+ <th>Option</th>
+ <th width="200">Override</th>
+ <th>Type</th>
+ <th>Details</th>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>Mandatory</td>
+ <td>Integer</td>
+ <td>Lower bound of slider</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>Mandatory</td>
+ <td>Integer</td>
+ <td>Upper bound of slider</td>
+ </tr>
+ <tr>
+ <td>step</td>
+ <td>Optional</td>
+ <td>Integer</td>
+ <td>
+ <code>Default : 1</code>
+ <p>amount of increment on each step</p>
+ </td>
+ </tr>
+ <tr>
+ <td>scale</td>
+ <td>Optional</td>
+ <td>Array</td>
+ <td>
+ <p>Array containing label which are shown below the slider. By default its [from, to].</p>
+ </td>
+ </tr>
+ <tr>
+ <td>showLabels</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <p>False, if you'd like to hide label which are shown on top of slider.</p>
+ <code>Default : true</code>
+ </td>
+ </tr>
+ <tr>
+ <td>showScale</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <p>False, if you'd like to hide scale which are shown below the slider.</p>
+ <code>Default : true</code>
+ </td>
+ </tr>
+ <tr>
+ <td>format</td>
+ <td>Optional</td>
+ <td>String / Function</td>
+ <td>
+ <p>this is used to show label on the pointer</p>
+ <code>Default : "%s"</code>
+ <p><code>String</code> : %s is replaced by its value, e.g., "%s days", "%s goats"</p>
+ <p>
+ <code>Function</code> : format(value, pointer)
+ <br>
+ <code>return</code> : string label for a given value and pointer. <br>
+ <code>pointer</code> could be 'low'/'high' if <code>isRange</code> is true, else undefined
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>width</td>
+ <td>Optional</td>
+ <td>Integer</td>
+ <td>
+ <code>Default : 300</code>
+ </td>
+ </tr>
+ <tr>
+ <td>theme</td>
+ <td>Optional</td>
+ <td>String</td>
+ <td>
+ <code>Default : "theme-green"</code>
+ <p>This is the css class name added to the container. Available themes are "theme-blue", "theme-green". You can also add more themes, just like in <code>jquery.range.less</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>isRange</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <code>Default : false</code>
+ <p>True if this is a range selector. If its a range the value of hidden input will be set comma-seperated, e.g., "25,75"</p>
+ </td>
+ </tr>
+ <tr>
+ <td>onstatechange</td>
+ <td>Optional</td>
+ <td>Function</td>
+ <td>
+ <p>This function is called whenever the value is changed by user. This same value is also automatically set for the provided Hidden Input.</p>
+ <p>For single slider value is without comma, however for a range selector value is comma-seperated.</p>
+ </td>
+ </tr>
+ </table>
+
+ <div class="footer">
+ <a href="https://github.com/nitinhayaran/jRange" class="large-github">Get it from Github</a>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section class="footer">
+ <div class="text-container clearfix">
+ <div class="left">
+ <p>
+ <a href="https://twitter.com/nitinhayaran" class="twitter-follow-button" data-show-count="false">Follow @nitinhayaran</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ </p>
+ <p><iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;type=follow&amp;count=true" allowtransparency="true" frameborder="0" scrolling="0" width="153" height="20"></iframe></p>
+ </div>
+ <div class="right">
+ <p><a href="https://github.com/nitinhayaran/jRange">jRange</a> is authored and maintained by <a href="https://github.com/nitinhayaran/">@nitinhayaran</a></p>
+ <p>
+ Released under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT
+ License</a>
+ </p>
+ </div>
+ </div>
+ </section>
+ <script src="prism/prism.js"></script>
+
+ <script src="../jquery.range.js"></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ $('.single-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true
+ });
+ $('.range-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true,
+ isRange : true
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/library/jRange/demo/main.css b/library/jRange/demo/main.css
new file mode 100644
index 000000000..1e29a98af
--- /dev/null
+++ b/library/jRange/demo/main.css
@@ -0,0 +1,289 @@
+html,
+body {
+ height: 100%;
+ width: 100%;
+}
+body {
+ font-family: Helvetica Neue, Helvetica, Arial sans-serif;
+ font-size: 16px;
+ line-height: 1.6;
+ color: #434343;
+}
+a {
+ text-decoration: none;
+}
+pre code {
+ line-height: 1.5;
+}
+.container {
+ width: 1130px;
+ padding: 0 20px;
+ margin: 0px auto;
+}
+.text-container {
+ width: 900px;
+ position: relative;
+ margin: 0px auto;
+}
+.clearfix:after {
+ content: " ";
+ /* Older browser do not support empty content */
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+.pane {
+ position: relative;
+ width: 100%;
+ height: 50%;
+ min-height: 450px;
+}
+.body {
+ position: relative;
+}
+section.header {
+ background-color: #606c88;
+ background: -webkit-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* Chrome 10+, Saf5.1+ */
+ background: -moz-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* IE10 */
+ background: -o-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* Opera 11.10+ */
+ background: linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* W3C */
+}
+section.header footer {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 10px 30px;
+ box-sizing: border-box;
+}
+.left {
+ float: left;
+ text-align: left;
+}
+.right {
+ float: right;
+ text-align: right;
+}
+div.header {
+ color: #fff;
+ width: 600px;
+ text-align: center;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ border-radius: 5px;
+}
+div.header h1,
+div.header h2 {
+ font-family: 'Raleway' sans-serif;
+ font-weight: 100;
+ line-height: 1;
+ margin: 0;
+}
+div.header h1 {
+ font-size: 72px;
+ margin-bottom: 25px;
+}
+section.demo h2,
+section.demo h3 {
+ font-family: 'Raleway' sans-serif;
+ font-weight: 300;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+}
+section.demo h2 {
+ font-size: 48px;
+ margin-top: 1em;
+}
+section.demo h3 {
+ font-size: 28px;
+ margin: 0.8em 0 1em;
+}
+section.demo .demo-container {
+ margin: 40px 0 80px;
+}
+section.demo .demo-section {
+ margin: 20px 0;
+ clear: both;
+}
+section.demo .demo-section .demo-code {
+ width: 50%;
+ float: left;
+}
+section.demo .demo-section .demo-output {
+ margin-left: 50%;
+ padding: 50px 0;
+}
+section.demo .demo-section .slider-container {
+ margin: 0 auto;
+}
+section.demo .text-container h2 {
+ margin-top: 3em;
+}
+section.demo .form-vertical {
+ width: 200px;
+ float: left;
+}
+section.demo .image-container {
+ margin-left: 200px;
+ padding: 1px;
+ border: 1px solid #eee;
+}
+section.demo .form-group {
+ margin-bottom: 20px;
+}
+section.demo label {
+ color: #999;
+ font-size: 13px;
+ display: block;
+}
+section.demo input {
+ width: 150px;
+ margin-top: 3px;
+ border: 1px solid #999;
+ border-width: 0 0 1px 0;
+ padding: 3px 0 3px;
+ transition: 0.3s all;
+}
+section.demo input:focus,
+section.demo input:active {
+ outline: none;
+ border-color: #2fc7ff;
+ box-shadow: 0 1px 3px -3px #2fc7ff;
+ color: #000;
+}
+section.demo button {
+ position: relative;
+ overflow: visible;
+ display: inline-block;
+ padding: 0.3em 1em;
+ border: 1px solid #d4d4d4;
+ margin: 0;
+ text-decoration: none;
+ text-align: center;
+ text-shadow: 1px 1px 0 #fff;
+ font-size: 12px;
+ color: #333;
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ background-color: #ececec;
+ background-image: linear-gradient(#f4f4f4, #ececec);
+ background-clip: padding-box;
+ border-radius: 0.2em;
+ zoom: 1;
+ transition: background-image 0.3s;
+}
+section.demo button:hover,
+section.demo button:active {
+ border-color: #3072b3;
+ border-bottom-color: #2a65a0;
+ text-decoration: none;
+ text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
+ color: #fff;
+ background-color: #3c8dde;
+ background-image: linear-gradient(#599bdc, #3072b3);
+}
+section.demo p {
+ font-family: 'Raleway' sans-serif;
+ margin: 1em auto;
+}
+section.demo .footer {
+ margin-top: 80px;
+ text-align: center;
+}
+section.demo .large-github {
+ display: inline-block;
+ border: 1px solid #21b0ff;
+ font-weight: 400;
+ font-family: 'Raleway' sans-serif;
+ text-shadow: none;
+ background-color: #fff;
+ background-image: none;
+ padding: 8px 25px;
+ color: #21b0ff;
+ font-size: 18px;
+ border-radius: 25px;
+}
+section.demo .large-github:hover,
+section.demo .large-github:active {
+ background-color: #21b0ff;
+ color: #fff;
+ background-image: none;
+ text-shadow: none;
+}
+.two-coloumn em {
+ font-weight: normal;
+ text-decoration: none;
+ font-style: normal;
+ display: inline-block;
+ width: 85px;
+}
+.plugin-options {
+ font-size: 14px;
+ margin-bottom: 40px;
+ width: 900px;
+ font-weight: 200;
+}
+.plugin-options td,
+.plugin-options th {
+ padding: 8px ;
+ text-align: left;
+ vertical-align: top;
+}
+.plugin-options td:first-child,
+.plugin-options th:first-child {
+ font-weight: bold;
+}
+.plugin-options td:nth-child(2),
+.plugin-options td:nth-child(3) {
+ font-size: 13px;
+ color: #999;
+}
+.plugin-options td p {
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+ margin: 4px 0;
+}
+.plugin-options td p:first-child {
+ margin-top: 0;
+}
+.plugin-options th {
+ background-color: #358ccb;
+ color: #fff;
+}
+.plugin-options tr:nth-child(2n + 1) td {
+ background-color: #f5f5f5;
+}
+.plugin-options small {
+ display: block;
+}
+.plugin-options ul {
+ list-style: none;
+ padding: 0;
+}
+.plugin-options ul ul {
+ list-style: circle inside;
+}
+section.footer {
+ margin-top: 80px;
+ padding: 30px;
+ text-align: center;
+ background-color: #333;
+ color: #999;
+ font-weight: 300;
+ font-size: 13px;
+}
+section.footer p {
+ margin: 5px 0;
+}
+section.footer a {
+ color: #fff;
+}
diff --git a/library/jRange/demo/main.less b/library/jRange/demo/main.less
new file mode 100644
index 000000000..e9ee232a1
--- /dev/null
+++ b/library/jRange/demo/main.less
@@ -0,0 +1,296 @@
+@font-family: 'Raleway' sans-serif;
+html, body{
+ height: 100%;
+ width: 100%;
+}
+body{
+ font-family: Helvetica Neue, Helvetica, Arial sans-serif;
+ font-size: 16px;
+ line-height: 1.6;
+ color: #434343;
+}
+a{
+ text-decoration: none;
+}
+pre code{
+ line-height: 1.5;
+}
+.container{
+ width: 1130px;
+ padding: 0 20px;
+ margin: 0px auto;
+}
+.text-container{
+ width: 900px;
+ position: relative;
+ margin: 0px auto;
+}
+.clearfix:after {
+ content: " "; /* Older browser do not support empty content */
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+.pane{
+ position: relative;
+ width: 100%;
+ height: 50%;
+ min-height: 450px;
+}
+.body{
+ position: relative;
+}
+section.header{
+ background-color: #606c88;
+
+ background: -webkit-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* Chrome 10+, Saf5.1+ */
+ background: -moz-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* FF3.6+ */
+ background: -ms-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* IE10 */
+ background: -o-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* Opera 11.10+ */
+ background: linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* W3C */
+
+ // background-image: radial-gradient(50% 102%, #3cb3db 48%, #2e6c9a 100%);
+ footer{
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 10px 30px;
+ box-sizing: border-box;
+ }
+}
+.left{
+ float: left;
+ text-align: left;
+}
+.right{
+ float: right;
+ text-align: right;
+}
+div.header{
+ color: #fff;
+ width: 600px;
+ text-align: center;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ // background-color: #333;
+ border-radius: 5px;
+ h1, h2{
+ font-family: @font-family;
+ font-weight: 100;
+ line-height: 1;
+ margin: 0;
+ }
+ h1{
+ font-size: 72px;
+ margin-bottom: 25px;
+ }
+}
+section.demo{
+ h2, h3{
+ font-family: @font-family;
+ font-weight: 300;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ }
+ h2{
+ font-size: 48px;
+ margin-top: 1em;
+ }
+ h3{
+ font-size: 28px;
+ margin: 0.8em 0 1em;
+ }
+ .demo-container{
+ margin: 40px 0 80px;
+ }
+ .demo-section{
+ margin: 20px 0;
+ clear: both;
+ .demo-code{
+ width: 50%;
+ float: left;
+ }
+ .demo-output{
+ margin-left: 50%;
+ padding: 50px 0;
+ }
+ .slider-container{
+ margin: 0 auto;
+ }
+ }
+ .text-container{
+ h2{
+ margin-top: 3em;
+ }
+ }
+ .form-vertical{
+ width: 200px;
+ float: left;
+ }
+ .image-container{
+ margin-left: 200px;
+ padding: 1px;
+ border: 1px solid #eee;
+ // background-color: #333;
+ }
+ .form-group{
+ margin-bottom: 20px;
+ }
+ label{
+ color: #999;
+ font-size: 13px;
+ display: block;
+ }
+ input{
+ width: 150px;
+ margin-top: 3px;
+ // border-radius: 2px;
+ border: 1px solid #999;
+ border-width: 0 0 1px 0;
+ padding: 3px 0 3px;
+ transition: 0.3s all;
+ // color: #999;
+ &:focus, &:active{
+ outline: none;
+ border-color: #2fc7ff;
+ box-shadow: 0 1px 3px -3px #2fc7ff;
+ color: #000;
+ }
+ }
+ button{
+ position: relative;
+ overflow: visible;
+ display: inline-block;
+ padding: 0.3em 1em;
+ border: 1px solid #d4d4d4;
+ margin: 0;
+ text-decoration: none;
+ text-align: center;
+ text-shadow: 1px 1px 0 #fff;
+ font-size: 12px;
+ color: #333;
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ background-color: #ececec;
+ background-image: linear-gradient(#f4f4f4, #ececec);
+ background-clip: padding-box;
+ border-radius: 0.2em;
+ zoom: 1;
+ transition: background-image 0.3s;
+ &:hover, &:active{
+ border-color: #3072b3;
+ border-bottom-color: #2a65a0;
+ text-decoration: none;
+ text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
+ color: #fff;
+ background-color: #3c8dde;
+ background-image: linear-gradient(#599bdc, #3072b3);
+ }
+ }
+ p{
+ font-family: @font-family;
+ margin: 1em auto;
+ }
+ .footer{
+ margin-top: 80px;
+ text-align: center;
+ }
+ .large-github{
+ display: inline-block;
+ border: 1px solid #21b0ff;
+ font-weight: 400;
+ font-family: @font-family;
+ text-shadow: none;
+ background-color: #fff;
+ background-image: none;
+ padding: 8px 25px;
+ color: #21b0ff;
+ font-size: 18px;
+ border-radius: 25px;
+ &:hover, &:active{
+ background-color: #21b0ff;
+ color: #fff;
+ background-image: none;
+ text-shadow: none;
+ }
+ }
+}
+.two-coloumn{
+ em{
+ font-weight: normal;
+ text-decoration: none;
+ font-style: normal;
+ display: inline-block;
+ width: 85px;
+ }
+}
+.plugin-options{
+ font-size: 14px;
+ margin-bottom: 40px;
+ width: 900px;
+ font-weight: 200;
+ td, th{
+ padding: 8px ;
+ text-align: left;
+ vertical-align: top;
+ &:first-child{
+ font-weight: bold;
+ }
+ }
+ td{
+ &:nth-child(2), &:nth-child(3){
+ font-size: 13px;
+ color: #999;
+ }
+ p{
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+ margin: 4px 0;
+ &:first-child{
+ margin-top: 0;
+ }
+ }
+ }
+ th{
+ background-color: #358ccb;
+ color: #fff;
+ }
+ tr{
+ &:nth-child(2n + 1){
+ td{
+ background-color: #f5f5f5;
+ }
+ }
+ }
+ small{
+ display: block;
+ // white-space: nowrap;
+ }
+ ul{
+ list-style: none;
+ padding: 0;
+ ul{
+ list-style: circle inside;
+ // padding-left: 25px;
+ }
+ }
+}
+section.footer{
+ margin-top: 80px;
+ padding: 30px;
+ text-align: center;
+ background-color: #333;
+ color: #999;
+ font-weight: 300;
+ font-size: 13px;
+ p{
+ margin: 5px 0;
+ }
+ a{
+ color: #fff;
+ }
+} \ No newline at end of file
diff --git a/library/jRange/demo/normalize.css b/library/jRange/demo/normalize.css
new file mode 100644
index 000000000..08f895079
--- /dev/null
+++ b/library/jRange/demo/normalize.css
@@ -0,0 +1,425 @@
+/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/library/jRange/demo/prism/prism.css b/library/jRange/demo/prism/prism.css
new file mode 100644
index 000000000..afc94b354
--- /dev/null
+++ b/library/jRange/demo/prism/prism.css
@@ -0,0 +1,193 @@
+/* http://prismjs.com/download.html?themes=prism-coy&languages=markup+css+css-extras+clike+javascript */
+/**
+ * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics);
+ * @author Tim Shedor
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ position:relative;
+ padding: 1em;
+ margin: .5em 0;
+ -webkit-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ -moz-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ border-left: 10px solid #358ccb;
+ background-color: #fdfdfd;
+ background-image: -webkit-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -moz-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -ms-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -o-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-size: 3em 3em;
+ background-origin:content-box;
+ overflow:visible;
+ max-height:30em;
+}
+
+code[class*="language"] {
+ max-height:29em;
+ display:block;
+ overflow:scroll;
+}
+
+/* Margin bottom to accomodate shadow */
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background-color:#fdfdfd;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-bottom: 1em;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ position:relative;
+ padding: .2em;
+ -webkit-border-radius: 0.3em;
+ -moz-border-radius: 0.3em;
+ -ms-border-radius: 0.3em;
+ -o-border-radius: 0.3em;
+ border-radius: 0.3em;
+ color: #c92c2c;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+pre[class*="language-"]:before,
+pre[class*="language-"]:after {
+ content: '';
+ z-index: -2;
+ display:block;
+ position: absolute;
+ bottom: 0.75em;
+ left: 0.18em;
+ width: 40%;
+ height: 20%;
+ -webkit-box-shadow: 0px 13px 8px #979797;
+ -moz-box-shadow: 0px 13px 8px #979797;
+ box-shadow: 0px 13px 8px #979797;
+ -webkit-transform: rotate(-2deg);
+ -moz-transform: rotate(-2deg);
+ -ms-transform: rotate(-2deg);
+ -o-transform: rotate(-2deg);
+ transform: rotate(-2deg);
+}
+
+:not(pre) > code[class*="language-"]:after,
+pre[class*="language-"]:after {
+ right: 0.75em;
+ left: auto;
+ -webkit-transform: rotate(2deg);
+ -moz-transform: rotate(2deg);
+ -ms-transform: rotate(2deg);
+ -o-transform: rotate(2deg);
+ transform: rotate(2deg);
+}
+
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #7D8B99;
+}
+
+.token.punctuation {
+ color: #5F6364;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.function-name,
+.token.constant,
+.token.symbol {
+ color: #c92c2c;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.function,
+.token.builtin {
+ color: #2f9c0a;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.token.variable {
+ color: #a67f59;
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword,
+.token.class-name {
+ color: #1990b8;
+}
+
+.token.regex,
+.token.important {
+ color: #e90;
+}
+.language-css .token.string,
+.style .token.string {
+ color: #a67f59;
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.token.important {
+ font-weight: normal;
+}
+
+.token.entity {
+ cursor: help;
+}
+
+.namespace {
+ opacity: .7;
+}
+
+@media screen and (max-width:767px){
+ pre[class*="language-"]:before,
+ pre[class*="language-"]:after {
+ bottom:14px;
+ -webkit-box-shadow:none;
+ -moz-box-shadow:none;
+ box-shadow:none;
+ }
+
+}
+
+/* Plugin styles */
+.token.tab:not(:empty):before,
+.token.cr:before,
+.token.lf:before {
+ color: #e0d7d1;
+}
+
diff --git a/library/jRange/demo/prism/prism.js b/library/jRange/demo/prism/prism.js
new file mode 100644
index 000000000..dace66766
--- /dev/null
+++ b/library/jRange/demo/prism/prism.js
@@ -0,0 +1,8 @@
+/* http://prismjs.com/download.html?themes=prism-coy&languages=markup+css+css-extras+clike+javascript */
+var self=typeof window!="undefined"?window:{},Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content)):t.util.type(e)==="Array"?e.map(t.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){var s=t.tokenize(e,r);return n.stringify(t.util.encode(s),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){if(!self.addEventListener)return self.Prism;self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return self.Prism}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}return self.Prism}();typeof module!="undefined"&&module.exports&&(module.exports=Prism);;
+Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});;
+Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/ig};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/ig,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
+Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/g,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/g,"pseudo-class":/:[-\w]+(?:\(.*\))?/g,"class":/\.[-:\.\w]+/g,id:/#[-:\.\w]+/g}};Prism.languages.insertBefore("css","ignore",{hexcode:/#[\da-f]{3,6}/gi,entity:/\\[\da-f]{1,8}/gi,number:/[\d%\.]+/g});;
+Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};;
+Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/ig,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});
+;
diff --git a/library/jRange/jquery.range-min.js b/library/jRange/jquery.range-min.js
new file mode 100644
index 000000000..8aa6e7ecb
--- /dev/null
+++ b/library/jRange/jquery.range-min.js
@@ -0,0 +1 @@
+!function($,t,i,s){"use strict";var o=function(){return this.init.apply(this,arguments)};o.prototype={defaults:{onstatechange:function(){},isRange:!1,showLabels:!0,showScale:!0,step:1,format:"%s",theme:"theme-green",width:300},template:'<div class="slider-container"> <div class="back-bar"> <div class="selected-bar"></div> <div class="pointer low"></div><div class="pointer-label">123456</div> <div class="pointer high"></div><div class="pointer-label">456789</div> <div class="clickable-dummy"></div> </div> <div class="scale"></div> </div>',init:function(t,i){this.options=$.extend({},this.defaults,i),this.inputNode=$(t),this.options.value=this.inputNode.val()||(this.options.isRange?this.options.from+","+this.options.from:this.options.from),this.domNode=$(this.template),this.domNode.addClass(this.options.theme),this.inputNode.after(this.domNode),this.domNode.on("change",this.onChange),this.pointers=$(".pointer",this.domNode),this.lowPointer=this.pointers.first(),this.highPointer=this.pointers.last(),this.labels=$(".pointer-label",this.domNode),this.lowLabel=this.labels.first(),this.highLabel=this.labels.last(),this.scale=$(".scale",this.domNode),this.bar=$(".selected-bar",this.domNode),this.clickableBar=this.domNode.find(".clickable-dummy"),this.interval=this.options.to-this.options.from,this.render()},render:function(){return 0!==this.inputNode.width()||this.options.width?(this.domNode.width(this.options.width||this.inputNode.width()),this.inputNode.hide(),this.isSingle()&&(this.lowPointer.hide(),this.lowLabel.hide()),this.options.showLabels||this.labels.hide(),this.attachEvents(),this.options.showScale&&this.renderScale(),void this.setValue(this.options.value)):void console.log("jRange : no width found, returning")},isSingle:function(){return"number"==typeof this.options.value?!0:-1!==this.options.value.indexOf(",")||this.options.isRange?!1:!0},attachEvents:function(){this.clickableBar.click($.proxy(this.barClicked,this)),this.pointers.mousedown($.proxy(this.onDragStart,this)),this.pointers.bind("dragstart",function(t){t.preventDefault()})},onDragStart:function(t){if(1===t.which){t.stopPropagation(),t.preventDefault();var s=$(t.target);s.addClass("focused"),this[(s.hasClass("low")?"low":"high")+"Label"].addClass("focused"),$(i).on("mousemove.slider",$.proxy(this.onDrag,this,s)),$(i).on("mouseup.slider",$.proxy(this.onDragEnd,this))}},onDrag:function(t,i){i.stopPropagation(),i.preventDefault();var s=i.clientX-this.domNode.offset().left;this.domNode.trigger("change",[this,t,s])},onDragEnd:function(){this.pointers.removeClass("focused"),this.labels.removeClass("focused"),$(i).off(".slider"),$(i).off(".slider")},barClicked:function(t){var i=t.pageX-this.clickableBar.offset().left;if(this.isSingle())this.setPosition(this.pointers.last(),i,!0,!0);else{var s=Math.abs(parseInt(this.pointers.first().css("left"),10)-i+this.pointers.first().width()/2)<Math.abs(parseInt(this.pointers.last().css("left"),10)-i+this.pointers.first().width()/2)?this.pointers.first():this.pointers.last();this.setPosition(s,i,!0,!0)}},onChange:function(t,i,s,o){var e,n;i.isSingle()?(e=0,n=i.domNode.width()):(e=s.hasClass("high")?i.lowPointer.position().left+i.lowPointer.width()/2:0,n=s.hasClass("low")?i.highPointer.position().left+i.highPointer.width()/2:i.domNode.width());var h=Math.min(Math.max(o,e),n);i.setPosition(s,h,!0)},setPosition:function(t,i,s,o){var e,n=this.lowPointer.position().left,h=this.highPointer.position().left,a=this.highPointer.width()/2;s||(i=this.prcToPx(i)),t[0]===this.highPointer[0]?h=Math.round(i-a):n=Math.round(i-a),t[o?"animate":"css"]({left:Math.round(i-a)}),e=this.isSingle()?0:n+a,this.bar[o?"animate":"css"]({width:Math.round(h+a-e),left:e}),this.showPointerValue(t,i,o)},setValue:function(t){var i=t.toString().split(",");this.options.value=t;var s=this.valuesToPrc(2===i.length?i:[0,i[0]]);this.isSingle()?this.setPosition(this.highPointer,s[1]):(this.setPosition(this.lowPointer,s[0]),this.setPosition(this.highPointer,s[1]))},renderScale:function(){for(var t=this.options.scale||[this.options.from,this.options.to],i=Math.round(100/(t.length-1)*10)/10,s="",o=0;o<t.length;o++)s+='<span style="left: '+o*i+'%">'+("|"!=t[o]?"<ins>"+t[o]+"</ins>":"")+"</span>";this.scale.html(s),$("ins",this.scale).each(function(){$(this).css({marginLeft:-$(this).outerWidth()/2})})},getBarWidth:function(){var t=this.options.value.split(",");return t.length>1?parseInt(t[1],10)-parseInt(t[0],10):parseInt(t[0],10)},showPointerValue:function(t,i,o){var e=$(".pointer-label",this.domNode)[t.hasClass("low")?"first":"last"](),n,h=this.positionToValue(i);if($.isFunction(this.options.format)){var a=this.isSingle()?s:t.hasClass("low")?"low":"high";n=this.options.format(h,a)}else n=this.options.format.replace("%s",h);var r=e.html(n).width(),l=i-r/2;l=Math.min(Math.max(l,0),this.options.width-r),e[o?"animate":"css"]({left:l}),this.setInputValue(t,h)},valuesToPrc:function(t){var i=100*(t[0]-this.options.from)/this.interval,s=100*(t[1]-this.options.from)/this.interval;return[i,s]},prcToPx:function(t){return this.domNode.width()*t/100},positionToValue:function(t){var i=t/this.domNode.width()*this.interval;return i+=this.options.from,Math.round(i/this.options.step)*this.options.step},setInputValue:function(t,i){if(this.isSingle())this.options.value=i.toString();else{var s=this.options.value.split(",");this.options.value=t.hasClass("low")?i+","+s[1]:s[0]+","+i}this.inputNode.val()!==this.options.value&&(this.inputNode.val(this.options.value),this.options.onstatechange.call(this,this.options.value))},getValue:function(){return this.options.value}};var e="jRange";$.fn[e]=function(t){var i=arguments,s;return this.each(function(){var n=$(this),h=$.data(this,"plugin_"+e),a="object"==typeof t&&t;h||n.data("plugin_"+e,h=new o(this,a)),"string"==typeof t&&(s=h[t].apply(h,Array.prototype.slice.call(i,1)))}),s||this}}(jQuery,window,document); \ No newline at end of file
diff --git a/library/jRange/jquery.range.css b/library/jRange/jquery.range.css
new file mode 100644
index 000000000..27375c846
--- /dev/null
+++ b/library/jRange/jquery.range.css
@@ -0,0 +1,168 @@
+.slider-container {
+ width: 300px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+.slider-container .back-bar {
+ height: 10px;
+ position: relative;
+}
+.slider-container .back-bar .selected-bar {
+ position: absolute;
+ height: 100%;
+}
+.slider-container .back-bar .pointer {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ cursor: move;
+ opacity: 1;
+ z-index: 2;
+}
+.slider-container .back-bar .pointer-label {
+ position: absolute;
+ top: -17px;
+ font-size: 8px;
+ background: white;
+ white-space: nowrap;
+ line-height: 1;
+}
+.slider-container .back-bar .focused {
+ z-index: 10;
+}
+.slider-container .clickable-dummy {
+ cursor: pointer;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+}
+.slider-container .scale {
+ top: 2px;
+ position: relative;
+}
+.slider-container .scale span {
+ position: absolute;
+ height: 5px;
+ border-left: 1px solid #999;
+ font-size: 0;
+}
+.slider-container .scale ins {
+ font-size: 9px;
+ text-decoration: none;
+ position: absolute;
+ left: 0;
+ top: 5px;
+ color: #999;
+ line-height: 1;
+}
+.theme-green .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+}
+.theme-green .back-bar .selected-bar {
+ border-radius: 2px;
+ background-color: #a1fad0;
+ background-image: -moz-linear-gradient(top, #bdfade, #76fabc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bdfade), to(#76fabc));
+ background-image: -webkit-linear-gradient(top, #bdfade, #76fabc);
+ background-image: -o-linear-gradient(top, #bdfade, #76fabc);
+ background-image: linear-gradient(to bottom, #bdfade, #76fabc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbdfade', endColorstr='#ff76fabc', GradientType=0);
+}
+.theme-green .back-bar .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+ cursor: col-resize;
+}
+.theme-green .back-bar .pointer-label {
+ color: #999;
+}
+.theme-green .back-bar .focused {
+ color: #333;
+}
+.theme-green .scale span {
+ border-left: 1px solid #e5e5e5;
+}
+.theme-green .scale ins {
+ color: #999;
+}
+.theme-blue .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+}
+.theme-blue .back-bar .selected-bar {
+ border-radius: 2px;
+ background-color: #92c1f9;
+ background-image: -moz-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b1d1f9), to(#64a8f9));
+ background-image: -webkit-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: -o-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: linear-gradient(to bottom, #b1d1f9, #64a8f9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb1d1f9', endColorstr='#ff64a8f9', GradientType=0);
+}
+.theme-blue .back-bar .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+ cursor: col-resize;
+}
+.theme-blue .back-bar .pointer-label {
+ color: #999;
+}
+.theme-blue .back-bar .focused {
+ color: #333;
+}
+.theme-blue .scale span {
+ border-left: 1px solid #e5e5e5;
+}
+.theme-blue .scale ins {
+ color: #999;
+}
diff --git a/library/jRange/jquery.range.js b/library/jRange/jquery.range.js
new file mode 100644
index 000000000..978b3e7ba
--- /dev/null
+++ b/library/jRange/jquery.range.js
@@ -0,0 +1,297 @@
+/*jshint multistr:true, curly: false */
+/*global jQuery:false, define: false */
+/**
+ * jRange - Awesome range control
+ *
+ * Written by
+ * ----------
+ * Nitin Hayaran (nitinhayaran@gmail.com)
+ *
+ * Licensed under the MIT (MIT-LICENSE.txt).
+ *
+ * @author Nitin Hayaran
+ * @version 0.1-RELEASE
+ *
+ * Dependencies
+ * ------------
+ * jQuery (http://jquery.com)
+ *
+ **/
+ ;
+ (function($, window, document, undefined) {
+ 'use strict';
+
+ var jRange = function(){
+ return this.init.apply(this, arguments);
+ };
+ jRange.prototype = {
+ defaults : {
+ onstatechange : function(){},
+ isRange : false,
+ showLabels : true,
+ showScale : true,
+ step : 1,
+ format: '%s',
+ theme : 'theme-green',
+ width : 300
+ },
+ template : '<div class="slider-container">\
+ <div class="back-bar">\
+ <div class="selected-bar"></div>\
+ <div class="pointer low"></div><div class="pointer-label">123456</div>\
+ <div class="pointer high"></div><div class="pointer-label">456789</div>\
+ <div class="clickable-dummy"></div>\
+ </div>\
+ <div class="scale"></div>\
+ </div>',
+ init : function(node, options){
+ this.options = $.extend({}, this.defaults, options);
+ this.inputNode = $(node);
+ this.options.value = this.inputNode.val() || (this.options.isRange ? this.options.from+','+this.options.from : this.options.from);
+ this.domNode = $(this.template);
+ this.domNode.addClass(this.options.theme);
+ this.inputNode.after(this.domNode);
+ this.domNode.on('change', this.onChange);
+ this.pointers = $('.pointer', this.domNode);
+ this.lowPointer = this.pointers.first();
+ this.highPointer = this.pointers.last();
+ this.labels = $('.pointer-label', this.domNode);
+ this.lowLabel = this.labels.first();
+ this.highLabel = this.labels.last();
+ this.scale = $('.scale', this.domNode);
+ this.bar = $('.selected-bar', this.domNode);
+ this.clickableBar = this.domNode.find('.clickable-dummy');
+ this.interval = this.options.to - this.options.from;
+ this.render();
+ },
+ render: function(){
+ // Check if inputNode is visible, and have some width, so that we can set slider width accordingly.
+ if( this.inputNode.width() === 0 && !this.options.width ){
+ console.log('jRange : no width found, returning');
+ return;
+ }else{
+ this.domNode.width( this.options.width || this.inputNode.width() );
+ this.inputNode.hide();
+ }
+
+ if(this.isSingle()){
+ this.lowPointer.hide();
+ this.lowLabel.hide();
+ }
+ if(!this.options.showLabels){
+ this.labels.hide();
+ }
+ this.attachEvents();
+ if(this.options.showScale){
+ this.renderScale();
+ }
+ this.setValue(this.options.value);
+ },
+ isSingle: function(){
+ if(typeof(this.options.value) === 'number'){
+ return true;
+ }
+ return (this.options.value.indexOf(',') !== -1 || this.options.isRange) ?
+ false : true;
+ },
+ attachEvents: function(){
+ this.clickableBar.click($.proxy(this.barClicked, this));
+ this.pointers.mousedown($.proxy(this.onDragStart, this));
+ this.pointers.bind('dragstart', function(event) { event.preventDefault(); });
+ },
+ onDragStart: function(e){
+ if(e.which !== 1){return;}
+ e.stopPropagation(); e.preventDefault();
+ var pointer = $(e.target);
+ pointer.addClass('focused');
+ this[(pointer.hasClass('low')?'low':'high') + 'Label'].addClass('focused');
+ $(document).on('mousemove.slider', $.proxy(this.onDrag, this, pointer));
+ $(document).on('mouseup.slider', $.proxy(this.onDragEnd, this));
+ },
+ onDrag: function(pointer, e){
+ e.stopPropagation(); e.preventDefault();
+ var position = e.clientX - this.domNode.offset().left;
+ this.domNode.trigger('change', [this, pointer, position]);
+ },
+ onDragEnd: function(){
+ this.pointers.removeClass('focused');
+ this.labels.removeClass('focused');
+ $(document).off('.slider');
+ $(document).off('.slider');
+ },
+ barClicked: function(e){
+ var x = e.pageX - this.clickableBar.offset().left;
+ if(this.isSingle())
+ this.setPosition(this.pointers.last(), x, true, true);
+ else{
+ var pointer = Math.abs(parseInt(this.pointers.first().css('left'), 10) - x + this.pointers.first().width() / 2) < Math.abs(parseInt(this.pointers.last().css('left'), 10) - x + this.pointers.first().width() / 2) ?
+ this.pointers.first() : this.pointers.last();
+ this.setPosition(pointer, x, true, true);
+ }
+ },
+ onChange: function(e, self, pointer, position){
+ var min, max;
+ if(self.isSingle()){
+ min = 0;
+ max = self.domNode.width();
+ }else{
+ min = pointer.hasClass('high')? self.lowPointer.position().left + self.lowPointer.width() / 2 : 0;
+ max = pointer.hasClass('low') ? self.highPointer.position().left + self.highPointer.width() / 2 : self.domNode.width();
+ }
+ var value = Math.min(Math.max(position, min), max);
+ self.setPosition(pointer, value, true);
+ },
+ setPosition: function(pointer, position, isPx, animate){
+ var leftPos,
+ lowPos = this.lowPointer.position().left,
+ highPos = this.highPointer.position().left,
+ circleWidth = this.highPointer.width() / 2;
+ if(!isPx){
+ position = this.prcToPx(position);
+ }
+ if(pointer[0] === this.highPointer[0]){
+ highPos = Math.round(position - circleWidth);
+ }else{
+ lowPos = Math.round(position - circleWidth);
+ }
+ pointer[animate?'animate':'css']({'left': Math.round(position - circleWidth)});
+ if(this.isSingle()){
+ leftPos = 0;
+ }else{
+ leftPos = lowPos + circleWidth;
+ }
+ this.bar[animate?'animate':'css']({
+ 'width' : Math.round(highPos + circleWidth - leftPos),
+ 'left' : leftPos
+ });
+ this.showPointerValue(pointer, position, animate);
+ },
+ // will be called from outside
+ setValue: function(value){
+ var values = value.toString().split(',');
+ this.options.value = value;
+ var prc = this.valuesToPrc( values.length === 2 ? values : [0, values[0]] );
+ if(this.isSingle()){
+ this.setPosition(this.highPointer, prc[1]);
+ }else{
+ this.setPosition(this.lowPointer, prc[0]);
+ this.setPosition(this.highPointer, prc[1]);
+ }
+ },
+ renderScale: function(){
+ var s = this.options.scale || [this.options.from, this.options.to];
+ var prc = Math.round((100 / (s.length - 1)) * 10) / 10;
+ var str = '';
+ for(var i = 0; i < s.length ; i++ ){
+ str += '<span style="left: ' + i * prc + '%">' + (s[i] != '|' ? '<ins>' + s[i] + '</ins>' : '') + '</span>';
+ }
+ this.scale.html(str);
+
+ $('ins', this.scale).each(function () {
+ $(this).css({
+ marginLeft: -$(this).outerWidth() / 2
+ });
+ });
+ },
+ getBarWidth: function(){
+ var values = this.options.value.split(',');
+ if(values.length > 1){
+ return parseInt(values[1], 10) - parseInt(values[0], 10);
+ }else{
+ return parseInt(values[0], 10);
+ }
+ },
+ showPointerValue: function(pointer, position, animate){
+ var label = $('.pointer-label', this.domNode)[pointer.hasClass('low')?'first':'last']();
+ var text;
+ var value = this.positionToValue(position);
+ if($.isFunction(this.options.format)){
+ var type = this.isSingle() ? undefined : (pointer.hasClass('low') ? 'low':'high');
+ text = this.options.format(value, type);
+ }else{
+ text = this.options.format.replace('%s', value);
+ }
+
+ var width = label.html(text).width(),
+ left = position - width / 2;
+ left = Math.min(Math.max(left, 0), this.options.width - width);
+ label[animate?'animate':'css']({left: left});
+ this.setInputValue(pointer, value);
+ },
+ valuesToPrc: function(values){
+ var lowPrc = ( ( values[0] - this.options.from ) * 100 / this.interval ),
+ highPrc = ( ( values[1] - this.options.from ) * 100 / this.interval );
+ return [lowPrc, highPrc];
+ },
+ prcToPx: function(prc){
+ return (this.domNode.width() * prc) / 100;
+ },
+ positionToValue: function(pos){
+ var value = (pos / this.domNode.width()) * this.interval;
+ value = value + this.options.from;
+ return Math.round(value / this.options.step) * this.options.step;
+ },
+ setInputValue: function(pointer, v){
+ // if(!isChanged) return;
+ if(this.isSingle()){
+ this.options.value = v.toString();
+ }else{
+ var values = this.options.value.split(',');
+ if(pointer.hasClass('low')){
+ this.options.value = v + ',' + values[1];
+ }else{
+ this.options.value = values[0] + ',' + v;
+ }
+ }
+ if( this.inputNode.val() !== this.options.value ){
+ this.inputNode.val(this.options.value);
+ this.options.onstatechange.call(this, this.options.value);
+ }
+ },
+ getValue: function(){
+ return this.options.value;
+ }
+ };
+
+ /*$.jRange = function (node, options) {
+ var jNode = $(node);
+ if(!jNode.data('jrange')){
+ jNode.data('jrange', new jRange(node, options));
+ }
+ return jNode.data('jrange');
+ };
+
+ $.fn.jRange = function (options) {
+ return this.each(function(){
+ $.jRange(this, options);
+ });
+ };*/
+
+ var pluginName = 'jRange';
+ // A really lightweight plugin wrapper around the constructor,
+ // preventing against multiple instantiations
+ $.fn[pluginName] = function(option) {
+ var args = arguments,
+ result;
+
+ this.each(function() {
+ var $this = $(this),
+ data = $.data(this, 'plugin_' + pluginName),
+ options = typeof option === 'object' && option;
+ if (!data) {
+ $this.data('plugin_' + pluginName, (data = new jRange(this, options)));
+ }
+ // if first argument is a string, call silimarly named function
+ // this gives flexibility to call functions of the plugin e.g.
+ // - $('.dial').plugin('destroy');
+ // - $('.dial').plugin('render', $('.new-child'));
+ if (typeof option === 'string') {
+ result = data[option].apply(data, Array.prototype.slice.call(args, 1));
+ }
+ });
+
+ // To enable plugin returns values
+ return result || this;
+ };
+
+})(jQuery, window, document); \ No newline at end of file
diff --git a/library/jRange/jquery.range.less b/library/jRange/jquery.range.less
new file mode 100644
index 000000000..979ed2e1a
--- /dev/null
+++ b/library/jRange/jquery.range.less
@@ -0,0 +1,192 @@
+#gradient {
+ .horizontal(@startColor: #555, @endColor: #333) {
+ background-color: @endColor;
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
+ }
+ .vertical(@startColor: #555, @endColor: #333) {
+ background-color: mix(@startColor, @endColor, 60%);
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
+ }
+ .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
+ background-color: @endColor;
+ background-repeat: repeat-x;
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
+ }
+ .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
+ background-color: mix(@midColor, @endColor, 80%);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-repeat: no-repeat;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
+ }
+ .radial(@innerColor: #555, @outerColor: #333) {
+ background-color: @outerColor;
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
+ background-repeat: no-repeat;
+ }
+ .striped(@color: #555, @angle: 45deg) {
+ background-color: @color;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ }
+}
+
+.slider-container {
+ width: 300px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ .back-bar {
+ height: 10px;
+ position: relative;
+ .selected-bar {
+ position: absolute;
+ height: 100%;
+ }
+ .pointer {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ cursor: move;
+ opacity: 1;
+ z-index: 2;
+ }
+ .pointer-label {
+ position: absolute;
+ top: -17px;
+ font-size: 8px;
+ background: white;
+ white-space: nowrap;
+ line-height: 1;
+ }
+ .focused {
+ z-index: 10;
+ }
+ }
+ .clickable-dummy {
+ cursor: pointer;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ }
+ .scale {
+ top: 2px;
+ position: relative;
+ span {
+ position: absolute;
+ height: 5px;
+ border-left: 1px solid #999;
+ font-size: 0;
+ }
+ ins {
+ font-size: 9px;
+ text-decoration: none;
+ position: absolute;
+ left: 0;
+ top: 5px;
+ color: #999;
+ line-height: 1;
+ }
+ }
+}
+.theme-green {
+ .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ .selected-bar {
+ border-radius: 2px;
+ #gradient > .vertical(#bdfade, #76fabc);
+ }
+ .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ cursor: col-resize;
+ }
+ .pointer-label {
+ color: #999;
+ }
+ .focused {
+ color: #333;
+ }
+ }
+ .scale {
+ span {
+ border-left: 1px solid #e5e5e5;
+ }
+ ins {
+ color: #999;
+ }
+ }
+}
+
+.theme-blue {
+ .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ .selected-bar {
+ border-radius: 2px;
+ #gradient > .vertical(#b1d1f9, #64a8f9);
+ }
+ .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ cursor: col-resize;
+ }
+ .pointer-label {
+ color: #999;
+ }
+ .focused {
+ color: #333;
+ }
+ }
+ .scale {
+ span {
+ border-left: 1px solid #e5e5e5;
+ }
+ ins {
+ color: #999;
+ }
+ }
+}
diff --git a/library/jgrowl/README b/library/jgrowl/README
index 3c94f7508..d0f1a62ad 100644
--- a/library/jgrowl/README
+++ b/library/jgrowl/README
@@ -1,3 +1,3 @@
-http://stanlemon.net/projects/jgrowl.html
+https://github.com/stanlemon/jGrowl
jGrowl is free and open source, it's distributed under the MIT and GPL licenses
diff --git a/library/jgrowl/jquery.jgrowl.css b/library/jgrowl/jquery.jgrowl.css
index b4deb978c..ea3948415 100644
--- a/library/jgrowl/jquery.jgrowl.css
+++ b/library/jgrowl/jquery.jgrowl.css
@@ -1,136 +1 @@
-
-div.jGrowl {
- z-index: 9999;
- color: #fff;
- font-size: 12px;
-}
-
-/** Special IE6 Style Positioning **/
-div.ie6 {
- position: absolute;
-}
-
-div.ie6.top-right {
- right: auto;
- bottom: auto;
- left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.top-left {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.bottom-right {
- left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.bottom-left {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.center {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
- width: 100%;
-}
-
-/** Normal Style Positions **/
-div.jGrowl {
- position: absolute;
-}
-
-body > div.jGrowl {
- position: fixed;
-}
-
-div.jGrowl.top-left {
- left: 0px;
- top: 0px;
-}
-
-div.jGrowl.top-right {
- right: 0px;
- top: 0px;
-}
-
-div.jGrowl.bottom-left {
- left: 0px;
- bottom: 0px;
-}
-
-div.jGrowl.bottom-right {
- right: 0px;
- bottom: 0px;
-}
-
-div.jGrowl.center {
- top: 0px;
- width: 50%;
- left: 25%;
-}
-
-/** Cross Browser Styling **/
-div.center div.jGrowl-notification, div.center div.jGrowl-closer {
- margin-left: auto;
- margin-right: auto;
-}
-
-div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
- background-color: #000;
- opacity: .85;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)";
- filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
- zoom: 1;
- width: 235px;
- padding: 10px;
- margin-top: 5px;
- margin-bottom: 5px;
- font-family: Tahoma, Arial, Helvetica, sans-serif;
- font-size: 1em;
- text-align: left;
- display: none;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-div.jGrowl div.jGrowl-notification {
- min-height: 40px;
-}
-
-div.jGrowl div.jGrowl-notification,
-div.jGrowl div.jGrowl-closer {
- margin: 10px;
-}
-
-div.jGrowl div.jGrowl-notification div.jGrowl-header {
- font-weight: bold;
- font-size: .85em;
-}
-
-div.jGrowl div.jGrowl-notification div.jGrowl-close {
- z-index: 99;
- float: right;
- font-weight: bold;
- font-size: 1em;
- cursor: pointer;
-}
-
-div.jGrowl div.jGrowl-closer {
- padding-top: 4px;
- padding-bottom: 4px;
- cursor: pointer;
- font-size: .9em;
- font-weight: bold;
- text-align: center;
-}
-
-/** Hide jGrowl when printing **/
-@media print {
- div.jGrowl {
- display: none;
- }
-}
+.jGrowl{z-index:9999;color:#fff;font-size:12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed}.jGrowl.top-left{left:0;top:0}.jGrowl.top-right{right:0;top:0}.jGrowl.bottom-left{left:0;bottom:0}.jGrowl.bottom-right{right:0;bottom:0}.jGrowl.center{top:0;width:50%;left:25%}.jGrowl.center .jGrowl-closer,.jGrowl.center .jGrowl-notification{margin-left:auto;margin-right:auto}.jGrowl-notification{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;text-align:left;display:none;border-radius:5px;min-height:40px}.jGrowl-notification .ui-state-highlight,.jGrowl-notification .ui-widget-content .ui-state-highlight,.jGrowl-notification .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}.jGrowl-notification .jGrowl-header{font-weight:700;font-size:.85em}.jGrowl-notification .jGrowl-close{background-color:transparent;color:inherit;border:none;z-index:99;float:right;font-weight:700;font-size:1em;cursor:pointer}.jGrowl-closer{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;display:none;border-radius:5px;padding-top:4px;padding-bottom:4px;cursor:pointer;font-size:.9em;font-weight:700;text-align:center}.jGrowl-closer .ui-state-highlight,.jGrowl-closer .ui-widget-content .ui-state-highlight,.jGrowl-closer .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}@media print{.jGrowl{display:none}} \ No newline at end of file
diff --git a/library/jgrowl/jquery.jgrowl_minimized.js b/library/jgrowl/jquery.jgrowl_minimized.js
index 782898098..7e8b6fb35 100644
--- a/library/jgrowl/jquery.jgrowl_minimized.js
+++ b/library/jgrowl/jquery.jgrowl_minimized.js
@@ -1,11 +1,2 @@
-(function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)
-$('<div id="jGrowl"></div>').addClass((o&&o.position)?o.position:$.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);}
-if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',themeState:'highlight',corners:'10px',check:250,life:3000,closeDuration:'normal',openDuration:'normal',easing:'swing',closer:true,closeTemplate:'&times;',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},afterOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);if(typeof o.speed!=='undefined'){o.openDuration=o.speed;o.closeDuration=o.speed;}
-this.notifications.push({message:message,options:o});o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification '+o.themeState+' ui-corner-all'+
-((o.group!=undefined&&o.group!='')?' '+o.group:'')+'">'+'<div class="jGrowl-close">'+o.closeTemplate+'</div>'+'<div class="jGrowl-header">'+o.header+'</div>'+'<div class="jGrowl-message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.jGrowl-close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();$(notification).bind("mouseover.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",true);}).bind("mouseout.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",false);}).bind('jGrowl.beforeOpen',function(){if(o.beforeOpen.apply(notification,[notification,message,o,self.element])!=false){$(this).trigger('jGrowl.open');}}).bind('jGrowl.open',function(){if(o.open.apply(notification,[notification,message,o,self.element])!=false){if(o.glue=='after'){$('div.jGrowl-notification:last',self.element).after(notification);}else{$('div.jGrowl-notification:first',self.element).before(notification);}
-$(this).animate(o.animateOpen,o.openDuration,o.easing,function(){if($.browser.msie&&(parseInt($(this).css('opacity'),10)===1||parseInt($(this).css('opacity'),10)===0))
-this.style.removeAttribute('filter');if($(this).data("jGrowl")!=null)
-$(this).data("jGrowl").created=new Date();$(this).trigger('jGrowl.afterOpen');});}}).bind('jGrowl.afterOpen',function(){o.afterOpen.apply(notification,[notification,message,o,self.element]);}).bind('jGrowl.beforeClose',function(){if(o.beforeClose.apply(notification,[notification,message,o,self.element])!=false)
-$(this).trigger('jGrowl.close');}).bind('jGrowl.close',function(){$(this).data('jGrowl.pause',true);$(this).animate(o.animateClose,o.closeDuration,o.easing,function(){if($.isFunction(o.close)){if(o.close.apply(notification,[notification,message,o,self.element])!==false)
-$(this).remove();}else{$(this).remove();}});}).trigger('jGrowl.beforeOpen');if(o.corners!=''&&$.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',self.element).size()>1&&$('div.jGrowl-closer',self.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme).appendTo(self.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().trigger("jGrowl.beforeClose");if($.isFunction(self.defaults.closer)){self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+parseInt($(this).data("jGrowl").life))<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl.pause")==undefined||$(this).data("jGrowl.pause")!=true)){$(this).trigger('jGrowl.beforeClose');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool))
-this.render(this.notifications.shift());if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},parseInt(this.defaults.check));if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass('ie6');}},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);},close:function(){$(this.element).find('div.jGrowl-notification').each(function(){$(this).trigger('jGrowl.beforeClose');});}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery); \ No newline at end of file
+!function(a){a.jGrowl=function(b,c){0===a("#jGrowl").length&&a('<div id="jGrowl"></div>').addClass(c&&c.position?c.position:a.jGrowl.defaults.position).appendTo(c&&c.appendTo?c.appendTo:a.jGrowl.defaults.appendTo),a("#jGrowl").jGrowl(b,c)},a.fn.jGrowl=function(b,c){if(void 0===c&&a.isPlainObject(b)&&(c=b,b=c.message),a.isFunction(this.each)){var d=arguments;return this.each(function(){void 0===a(this).data("jGrowl.instance")&&(a(this).data("jGrowl.instance",a.extend(new a.fn.jGrowl,{notifications:[],element:null,interval:null})),a(this).data("jGrowl.instance").startup(this)),a.isFunction(a(this).data("jGrowl.instance")[b])?a(this).data("jGrowl.instance")[b].apply(a(this).data("jGrowl.instance"),a.makeArray(d).slice(1)):a(this).data("jGrowl.instance").create(b,c)})}},a.extend(a.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:!1,position:"top-right",appendTo:"body",glue:"after",theme:"default",themeState:"highlight",corners:"10px",check:250,life:3e3,closeDuration:"normal",openDuration:"normal",easing:"swing",closer:!0,closeTemplate:"&times;",closerTemplate:"<div>[ close all ]</div>",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},click:function(){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(b,c){var d=a.extend({},this.defaults,c);"undefined"!=typeof d.speed&&(d.openDuration=d.speed,d.closeDuration=d.speed),this.notifications.push({message:b,options:d}),d.log.apply(this.element,[this.element,b,d])},render:function(b){var c=this,d=b.message,e=b.options;e.themeState=""===e.themeState?"":"ui-state-"+e.themeState;var f=a("<div/>").addClass("jGrowl-notification alert "+e.themeState+" ui-corner-all"+(void 0!==e.group&&""!==e.group?" "+e.group:"")).append(a("<button/>").addClass("jGrowl-close").html(e.closeTemplate)).append(a("<div/>").addClass("jGrowl-header").html(e.header)).append(a("<div/>").addClass("jGrowl-message").html(d)).data("jGrowl",e).addClass(e.theme).children(".jGrowl-close").bind("click.jGrowl",function(){return a(this).parent().trigger("jGrowl.beforeClose"),!1}).parent();a(f).bind("mouseover.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!0)}).bind("mouseout.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!1)}).bind("jGrowl.beforeOpen",function(){e.beforeOpen.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.open")}).bind("jGrowl.open",function(){e.open.apply(f,[f,d,e,c.element])!==!1&&("after"==e.glue?a(".jGrowl-notification:last",c.element).after(f):a(".jGrowl-notification:first",c.element).before(f),a(this).animate(e.animateOpen,e.openDuration,e.easing,function(){a.support.opacity===!1&&this.style.removeAttribute("filter"),null!==a(this).data("jGrowl")&&"undefined"!=typeof a(this).data("jGrowl")&&(a(this).data("jGrowl").created=new Date),a(this).trigger("jGrowl.afterOpen")}))}).bind("jGrowl.afterOpen",function(){e.afterOpen.apply(f,[f,d,e,c.element])}).bind("click",function(){e.click.apply(f,[f.message,e,c.element])}).bind("jGrowl.beforeClose",function(){e.beforeClose.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.close")}).bind("jGrowl.close",function(){a(this).data("jGrowl.pause",!0),a(this).animate(e.animateClose,e.closeDuration,e.easing,function(){a.isFunction(e.close)?e.close.apply(f,[f,d,e,c.element])!==!1&&a(this).remove():a(this).remove()})}).trigger("jGrowl.beforeOpen"),""!==e.corners&&void 0!==a.fn.corner&&a(f).corner(e.corners),a(".jGrowl-notification:parent",c.element).length>1&&0===a(".jGrowl-closer",c.element).length&&this.defaults.closer!==!1&&a(this.defaults.closerTemplate).addClass("jGrowl-closer "+this.defaults.themeState+" ui-corner-all").addClass(this.defaults.theme).appendTo(c.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){a(this).siblings().trigger("jGrowl.beforeClose"),a.isFunction(c.defaults.closer)&&c.defaults.closer.apply(a(this).parent()[0],[a(this).parent()[0]])})},update:function(){a(this.element).find(".jGrowl-notification:parent").each(function(){void 0!==a(this).data("jGrowl")&&void 0!==a(this).data("jGrowl").created&&a(this).data("jGrowl").created.getTime()+parseInt(a(this).data("jGrowl").life,10)<(new Date).getTime()&&a(this).data("jGrowl").sticky!==!0&&(void 0===a(this).data("jGrowl.pause")||a(this).data("jGrowl.pause")!==!0)&&a(this).trigger("jGrowl.beforeClose")}),this.notifications.length>0&&(0===this.defaults.pool||a(this.element).find(".jGrowl-notification:parent").length<this.defaults.pool)&&this.render(this.notifications.shift()),a(this.element).find(".jGrowl-notification:parent").length<2&&a(this.element).find(".jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){a(this).remove()})},startup:function(b){this.element=a(b).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),this.interval=setInterval(function(){a(b).data("jGrowl.instance").update()},parseInt(this.defaults.check,10))},shutdown:function(){a(this.element).removeClass("jGrowl").find(".jGrowl-notification").trigger("jGrowl.close").parent().empty(),clearInterval(this.interval)},close:function(){a(this.element).find(".jGrowl-notification").each(function(){a(this).trigger("jGrowl.beforeClose")})}}),a.jGrowl.defaults=a.fn.jGrowl.prototype.defaults}(jQuery);
+//# sourceMappingURL=jquery.jgrowl.map \ No newline at end of file
diff --git a/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js
index 1e61683ea..c8303eaa0 100644
--- a/library/jquery-textcomplete/jquery.textcomplete.js
+++ b/library/jquery-textcomplete/jquery.textcomplete.js
@@ -124,8 +124,9 @@ if (typeof jQuery === 'undefined') {
this.views = [];
this.option = $.extend({}, Completer._getDefaults(), option);
- if (!this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') {
- throw new Error('textcomplete must be called on a Textarea or a ContentEditable.');
+
+ if (!this.$el.is('input[type=text]') && !this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') {
+ throw new Error('textcomplete must be called on a input[type=text], Textarea or a ContentEditable.');
}
if (element === document.activeElement) {
@@ -171,7 +172,7 @@ if (typeof jQuery === 'undefined') {
if (this.option.adapter) {
Adapter = this.option.adapter;
} else {
- if (this.$el.is('textarea')) {
+ if (this.$el.is('textarea') || this.$el.is('input[type=text]')) {
viewName = typeof element.selectionEnd === 'number' ? 'Textarea' : 'IETextarea';
} else {
viewName = 'ContentEditable';
diff --git a/library/jquery.AreYouSure/.gitignore b/library/jquery.AreYouSure/.gitignore
new file mode 100644
index 000000000..345f0dbeb
--- /dev/null
+++ b/library/jquery.AreYouSure/.gitignore
@@ -0,0 +1,166 @@
+#################
+## Eclipse
+#################
+
+*.pydevproject
+.project
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.classpath
+.settings/
+.loadpath
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# CDT-specific
+.cproject
+
+# PDT-specific
+.buildpath
+
+
+#################
+## Visual Studio
+#################
+
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Rr]elease/
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.vspscc
+.builds
+*.dotCover
+
+## TODO: If you have NuGet Package Restore enabled, uncomment this
+#packages/
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+
+# Visual Studio profiler
+*.psess
+*.vsp
+
+# ReSharper is a .NET coding add-in
+_ReSharper*
+
+# Installshield output folder
+[Ee]xpress
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish
+
+# Others
+[Bb]in
+[Oo]bj
+sql
+TestResults
+*.Cache
+ClientBin
+stylecop.*
+~$*
+*.dbmdl
+Generated_Code #added for RIA/Silverlight projects
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+
+
+
+############
+## Windows
+############
+
+# Windows image file caches
+Thumbs.db
+
+# Folder config file
+Desktop.ini
+
+
+#############
+## Python
+#############
+
+*.py[co]
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+
+#Translations
+*.mo
+
+#Mr Developer
+.mr.developer.cfg
+
+# Mac crap
+.DS_Store
+
+bower_components/
+node_modules/
diff --git a/library/jquery.AreYouSure/Gruntfile.js b/library/jquery.AreYouSure/Gruntfile.js
new file mode 100644
index 000000000..efca34c0a
--- /dev/null
+++ b/library/jquery.AreYouSure/Gruntfile.js
@@ -0,0 +1,26 @@
+module.exports = function(grunt) {
+ grunt.config.init({
+ karma: {
+ options: {
+ browsers: [ 'Chrome', 'Firefox', 'Safari', 'IE' ],
+ frameworks: [ 'jasmine' ],
+ reportSlowerThan: 500,
+ singleRun: true
+ },
+ unit: {
+ files: [
+ { pattern: 'bower_components/jquery/dist/jquery.min.js' },
+ { pattern: 'bower_components/jasmine-jquery/lib/jasmine-jquery.js' },
+ { pattern: 'jquery.are-you-sure.js' },
+ { pattern: 'spec/javascripts/*.js' },
+ { pattern: 'spec/javascripts/fixtures/**/*.html', included: false }
+ ]
+ }
+ }
+ });
+
+ grunt.registerTask('test', 'Run tests.', [ 'karma' ]);
+ grunt.registerTask('default', [ 'test' ]);
+
+ grunt.loadNpmTasks('grunt-karma');
+};
diff --git a/library/jquery.AreYouSure/README.md b/library/jquery.AreYouSure/README.md
new file mode 100644
index 000000000..6a538648a
--- /dev/null
+++ b/library/jquery.AreYouSure/README.md
@@ -0,0 +1,297 @@
+Are You Sure? - A light "dirty forms" JQuery Plugin
+======
+**Version:** 1.9
+
+*Are-you-sure* (```jquery.are-you-sure.js```) is simple light-weight "dirty
+form" JQuery Plugin for modern browsers. It helps prevent users from losing
+unsaved HTML Form changes by promoting the user to save/submit.
+
+It's simple to use. Just add the following line to your page's ready
+function:
+
+```javascript
+$('form').areYouSure();
+```
+
+*Are-you-sure* is a minimal plugin for modern browsers. There are plenty of
+"dirty forms" implementations out there, however they all seemed very
+heavyweight and over-engineered...! Most were written some time back and
+contain many 'hacks' to support legacy browsers, and/or rely on other fat
+dependencies such as FaceBox or jQueryUI. *Are-you-sure* solves this by
+doing this simple task in the simplest possible way.
+
+*Are-you-sure* is as simple as it gets:
+
+ * 100% JS with zero dependencies and no external CSS.
+ * Leverages `onBeforeUnload` to detect all page/browser exit events.
+ * Works on forms of any size.
+ * Correct state management - if a user edits then restores a value, the form
+ is not considered dirty.
+ * Easy to understand - less than a "terminal screen" of code!
+ * Graceful degradation on legacy browsers (i.e. if you're running an old
+ browser... remember to save :-)
+
+###Basic Usage
+
+```javascript
+
+$(function() {
+
+ // Enable on all forms
+ $('form').areYouSure();
+
+ // Enable on selected forms
+ $('form.dirty-check').areYouSure();
+
+ // With a custom message
+ $('form').areYouSure( {'message':'Your profile details are not saved!'} );
+
+}
+```
+To ignore selected fields from the dirtyness check:
+
+```html
+ <form id="myForm" name="myform" action="/post" method="post">
+
+ Field 1: (checked) <input type="text" name="field1"> <br />
+ Field 2: (ignored): <input type="text" name="field2" data-ays-ignore="true"> <br />
+ Field 3: (ignored): <input type="text" name="field3" class="ays-ignore"> <br />
+
+ <input type="submit" value="Submit">
+
+ </form>
+```
+
+###Advanced Usage
+
+```javascript
+
+$(function() {
+
+ /*
+ * Make Are-You-Sure "silent" by disabling the warning message
+ * (tracking/monitoring only mode). This option is useful when you wish to
+ * use the dirty/save events and/or use the dirtyness tracking in your own
+ * beforeunload handler.
+ */
+ $('form').areYouSure( {'silent':true} );
+
+ /*
+ * Dirtyness Change Events
+ * Are-You-Sure fires off "dirty" and "clean" events when the form's state
+ * changes. You can bind() or on(), these events to implement your own form
+ * state logic. A good example is enabling/disabling a Save button.
+ *
+ * "this" refers to the form that fired the event.
+ */
+ $('form').on('dirty.areYouSure', function() {
+ // Enable save button only as the form is dirty.
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ });
+ $('form').on('clean.areYouSure', function() {
+ // Form is clean so nothing to save - disable the save button.
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ });
+
+ /*
+ * It's easy to test if a form is dirty in your own code - just check
+ * to see if it has a "dirty" CSS class.
+ */
+ if ($('#my-form').hasClass('dirty')) {
+ // Do something
+ }
+
+ /*
+ * If you're dynamically adding new fields/inputs, and would like to track
+ * their state, trigger Are-You-Sure to rescan the form like this:
+ */
+ $('#my-form').trigger('rescan.areYouSure');
+
+ /*
+ * If you'd like to reset/reinitialize the form's state as clean and
+ * start tracking again from this new point onwards, trigger the
+ * reinitalize as follows. This is handy if say you've managing your
+ * own form save/submit via asyc AJAX.
+ */
+ $('#my-form').trigger('reinitialize.areYouSure');
+
+ /*
+ * In some situations it may be desirable to look for other form
+ * changes such as adding/removing fields. This is useful for forms that
+ * can change their field count, such as address/phone contact forms.
+ * Form example, you might remove a phone number from a contact form
+ * but update nothing else. This should mark the form as dirty.
+ */
+ $('form').areYouSure( {'addRemoveFieldsMarksDirty':true} );
+
+ /*
+ * Sometimes you may have advanced forms that change their state via
+ * custom JavaScript or 3rd-party component JavaScript. Are-You-Sure may
+ * not automatically detect these state changes. Examples include:
+ * - Updating a hidden input field via background JS.
+ * - Using a [rich WYSIWYG edit control](https://github.com/codedance/jquery.AreYouSure/issues/17).
+ * One solution is to manually trigger a form check as follows:
+ */
+ $('#my-form').trigger('checkform.areYouSure');
+
+ /*
+ * As an alternative to using events, you can pass in a custom change
+ * function.
+ */
+ $('#my-adv-form').areYouSure({
+ change: function() {
+ // Enable save button only if the form is dirty. i.e. something to save.
+ if ($(this).hasClass('dirty')) {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ } else {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ }
+ }
+ });
+
+ /*
+ * Mixing in your own logic into the warning.
+ */
+ $('#my-form').areYouSure( {'silent':true} );
+ $(window).on('beforeunload', function() {
+ isSunday = (0 == (new Date()).getDay());
+ if ($('#my-form').hasClass('dirty') && isSunday) {
+ return "Because it's Sunday, I'll be nice and let you know you forgot to save!";
+ }
+ }
+
+}
+```
+The [demo page](http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html)
+shows the advanced usage options in more detail.
+
+
+###Install
+Are-You-Sure is a light-weight jQuery plugin - it's a single standalone
+JavaScript file. You can download the
+[jquery.are-you-sure.js](https://raw.github.com/codedance/jquery.AreYouSure/master/jquery.are-you-sure.js)
+file and include it in your page. Because it's so simple it seems a shame
+to add an extra browser round trip. It's recommended that you consider
+concatenating it with other common JS lib files, and/or even cut-n-pasting
+the code (and license header) into one of your existing JS files.
+
+For experimental Mobile Safari support, also include ```ays-beforeunload-shim.js```
+(see Known Issues below).
+
+*Are-you-sure* may also be installed with [Bower](http://twitter.github.com/bower/):
+
+```bash
+$ bower install jquery.are-you-sure
+```
+
+If you're using, or like, *Are-you-sure* make sure you **star/watch** this project
+so you can stay up-to-date with updates.
+
+###Demo
+This [demo page](http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html)
+hosts a number of example forms.
+
+###Supported Browsers
+*Are-you-sure* has been tested on and fully supports the following browsers:
+
+* IE 9 through 11
+* Google Chrome (versions since 2012)
+* Firefox (versions since 2012)
+* Safari (versions since 2012)
+
+Experimental support is available on iOS and Opera via the *beforeunload* shim (see below).
+
+###Known Issues & Limitations
+
+####Mobile Safari and Opera
+The ```windows.beforeunload``` event is not supported on iOS (iPhone, iPad, and iPod). An
+experimental shim offering partial *beforeunload* emulation is provided to help plug this gap.
+It works by scanning the page for anchor links and augments the default behaviour to first
+check with *Are-you-sure* before navigating away. To use, simply include
+```ays-beforeunload-shim.js``` in your page.
+
+####Firefox
+The custom message option may not work on Firefox ([Firefox bug 588292](https://bugzilla.mozilla.org/show_bug.cgi?id=588292)).
+
+###Development
+The aim is to keep *Are-you-sure* simple and light. If you think you have
+a good idea which is aligned with this objective, please voice your thoughts
+in the issues list.
+
+####Pull Requests
+If possible, please submit your pull request against the most recent ```dev-*``` branch rather than master. This will make it easier to merge your code into the next planned release.
+
+####Running tests
+```bash
+$ npm install
+$ npm test
+```
+
+###Release History
+
+**2014-08-13** (1.9) - This is a minor bugfix release:
+
+* Addressed issue [#45](https://github.com/codedance/jquery.AreYouSure/issues/55) seen with empty select fields.
+* Thanks [valgen](https://github.com/valgen) and [tus124](https://github.com/tus124) for the contribution.
+
+**2014-06-22** (1.8) - This is a minor bugfix release:
+
+* Fixed NPE that may occur when using a 'multiple' option field.
+* Minor timing tweak to help mitigate bypass issue raised in [#45](https://github.com/codedance/jquery.AreYouSure/issues/45)
+* Thanks [apassant](https://github.com/apassant) and [amatenkov](https://github.com/amatenkov) for the contribution.
+
+**2014-05-28** (1.7)
+
+* Fixed multiple warning dialogs that may appear on IE and recent versions of Chrome
+* Experimental support for iOS Mobile Safari (via a *beforeunload* shim)
+* Various minor fixes (e.g. support input fields with no type=)
+* Minor performance improvements on pages with multiple forms
+* Improved documentation and examples
+* Thanks to [lfjeff](https://github.com/lfjeff) and [aqlong](https://github.com/aqlong) for the contribution and ideas!
+
+**2014-02-07** (1.6)
+
+* Add field count tracking (```addRemoveFieldsMarksDirty```) (contrib *jonegerton*)
+* Added event to manually trigger a form check/recheck (contrib *jonegerton*)
+* Thanks to [jonegerton](https://github.com/jonegerton) for the contribution!
+
+**2013-11-15** (1.5)
+
+* Added support for HTML5 input field types. (contrib *albinsunnanbo*)
+* New option to reinitialize/reset the dirty state. This is handy if you're managing your own async submit/save using AJAX. (contrib *albinsunnanbo*)
+* Thanks to [albinsunnanbo](https://github.com/albinsunnanbo) for the contribution!
+
+**2013-10-2** (1.4)
+
+* Added dirty and clean "events"
+* Added an option to disable the message (dirty tracking only)
+* Added an option to rescan a form to look/detect any new fields
+
+**2013-07-24** - Minor fix - don't fail if form elements have no "name" attribute.
+
+**2013-05-14** - Added support for form reset buttons (contributed by codev).
+
+**2013-05-01** - Added support for hidden and disabled form fields.
+
+**2013-02-03** - Add demo page.
+
+**2013-01-28** - Add ```change``` event support and a demo page.
+
+**2012-10-26** - Use dashes in class names rather than camel case.
+
+**2012-10-24** - Initial public release.
+
+
+###Prerequisites
+jQuery version 1.4.2 or higher. 2.0+ or 1.10+ recommended.
+
+
+###License
+The same as JQuery...
+
+ jQuery Plugin: Are-You-Sure (Dirty Form Detection)
+ https://github.com/codedance/jquery.AreYouSure/
+
+ Copyright (c) 2012-2014, Chris Dance - PaperCut Software http://www.papercut.com/
+ Dual licensed under the MIT or GPL Version 2 licenses.
+ http://jquery.org/license
diff --git a/library/jquery.AreYouSure/are-you-sure.jquery.json b/library/jquery.AreYouSure/are-you-sure.jquery.json
new file mode 100644
index 000000000..9c699b72b
--- /dev/null
+++ b/library/jquery.AreYouSure/are-you-sure.jquery.json
@@ -0,0 +1,39 @@
+{
+ "name": "are-you-sure",
+ "title": "Are You Sure? - a dirty forms check plugin",
+ "description": "Are-you-sure is simple light-weight dirty forms JQuery Plugin for modern browsers. It helps prevent users from loosing unsaved form changes by prompting the user to save/submit. It's dependency free and designed for modern browsers... just the features you need and nothing more! See the project page and demo for usage and examples.",
+ "keywords": [
+ "form",
+ "dirty",
+ "field",
+ "change",
+ "save",
+ "save-check",
+ "save-warning"
+ ],
+ "version": "1.9.0",
+ "author": {
+ "name": "Chris Dance (codedance) at PaperCut Software",
+ "url": "https://github.com/codedance"
+ },
+ "maintainers": [
+ {
+ "name": "Chris Dance",
+ "email": "chris.dance@papercut.com",
+ "url": "http://www.papercut.com/"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/codedance/jquery.AreYouSure/blob/master/README.md"
+ }
+ ],
+ "bugs": "https://github.com/codedance/jquery.AreYouSure/issues",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "docs": "https://github.com/codedance/jquery.AreYouSure",
+ "demo": "http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html",
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ }
+}
diff --git a/library/jquery.AreYouSure/ays-beforeunload-shim.js b/library/jquery.AreYouSure/ays-beforeunload-shim.js
new file mode 100644
index 000000000..cb864cdeb
--- /dev/null
+++ b/library/jquery.AreYouSure/ays-beforeunload-shim.js
@@ -0,0 +1,31 @@
+/*!
+ * An experimental shim to partially emulate onBeforeUnload on iOS.
+ * Part of https://github.com/codedance/jquery.AreYouSure/
+ *
+ * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Author: chris.dance@papercut.com
+ * Date: 19th May 2014
+ */
+$(function() {
+ if (!navigator.userAgent.toLowerCase().match(/iphone|ipad|ipod|opera/)) {
+ return;
+ }
+ $('a').bind('click', function(evt) {
+ var href = $(evt.target).closest('a').attr('href');
+ if (href !== undefined && !(href.match(/^#/) || href.trim() == '')) {
+ var response = $(window).triggerHandler('beforeunload', response);
+ if (response && response != "") {
+ var msg = response + "\n\n"
+ + "Press OK to leave this page or Cancel to stay.";
+ if (!confirm(msg)) {
+ return false;
+ }
+ }
+ window.location.href = href;
+ return false;
+ }
+ });
+});
diff --git a/library/jquery.AreYouSure/bower.json b/library/jquery.AreYouSure/bower.json
new file mode 100644
index 000000000..8591dc0d0
--- /dev/null
+++ b/library/jquery.AreYouSure/bower.json
@@ -0,0 +1,30 @@
+{
+ "name": "jquery.are-you-sure",
+ "version": "1.9.0",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "authors": [
+ "CodeDance <chris.dance@papercut.com>"
+ ],
+ "description": "A light-weight jQuery 'dirty forms' Plugin - it monitors html forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)",
+ "main": "jquery.are-you-sure.js",
+ "keywords": [
+ "form",
+ "dirty",
+ "field",
+ "change",
+ "save-check",
+ "are-you-sure",
+ "save-warning"
+ ],
+ "license": "MIT/GPLv2",
+ "ignore": [
+ "**/.*",
+ "demo"
+ ],
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ },
+ "devDependencies": {
+ "jasmine-jquery": "~2.0.3"
+ }
+}
diff --git a/library/jquery.AreYouSure/demo/are-you-sure-demo.html b/library/jquery.AreYouSure/demo/are-you-sure-demo.html
new file mode 100644
index 000000000..3f0327b2e
--- /dev/null
+++ b/library/jquery.AreYouSure/demo/are-you-sure-demo.html
@@ -0,0 +1,576 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Demo: Are You Sure? - a dirty forms jQuery Plugin</title>
+
+ <!--
+
+ We'll use an old version of jQuery to show we're backwards compatible. In
+ production we recommend using a later version. e.g.
+
+ <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
+ <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
+
+ -->
+
+ <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
+ <script src="../jquery.are-you-sure.js"></script>
+ <script src="../ays-beforeunload-shim.js"></script>
+ <script>
+
+ $(function() {
+
+ // Example 1 - ... in one line of code
+ $('#example-1-form').areYouSure();
+
+
+ // Example 2 - ignore a dynamic field
+ $('#example-2-form').areYouSure();
+
+ var defaultPickup15min = new Date((new Date()).getTime() + 15 * 60000);
+ $('#pickup').val(defaultPickup15min.getHours()
+ + ':' + defaultPickup15min.getMinutes());
+
+
+ // Example 3 - custom message and hooking the dirty change events
+ $('#example-3-form').areYouSure(
+ {
+ message: "Did you forget to save your standard coffee order?"
+ }
+ );
+ // Enable save button only if the form is dirty - using events.
+ $('#example-3-form').bind('dirty.areYouSure', function() {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ });
+ $('#example-3-form').bind('clean.areYouSure', function() {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ });
+
+
+ // Example 4 - dynamically change and add form fields.
+ $('#example-4-form').areYouSure(
+ {
+ message: "Did you forget to submit your coffee order?"
+ }
+ );
+
+ $('#example-4-lastorder').click(function() {
+ // ... set our saved coffee type.
+ $('#example-4-coffee').val('espresso');
+ // Because we've made a change from our own JavaScript, we need to fire
+ // off manual 'form check'.
+ $('#example-4-form').trigger('checkform.areYouSure');
+ });
+
+ // If it's warm enough, offer an iced coffee special.
+ $.getJSON("http://api.openweathermap.org/data/2.5/weather?q=Melbourne,AU&mode=json&units=metric&callback=?",
+ function(data) {
+ var temp = data.main.temp;
+ if (temp > 5) {
+ $('#example-4-special').append('<p>It\'s currently '
+ + temp + 'C in Melbourne. Ice it up!</p>');
+ $('#example-4-special').append('<input type="checkbox" name="make-it-iced" value="true" />'
+ + ' Make it an iced coffee<br />');
+
+ // Trigger rescan event on the form so we start tracking the new field.
+ $('#example-4-form').trigger('rescan.areYouSure');
+ }
+ }
+ );
+
+
+ /*
+ * Example 5
+ * - extra shots button to enable/disable shots options
+ * - like/unlike button (changing hidden form field value)
+ * - hook dirty change event to enable/disable submit (using method),
+ * to more easily demonstrate when the form is dirty
+ */
+ $('#example-5-extra-shots').click(function() {
+ // we trigger a change event on the fields so that the AreYouSure event handler is called
+ $('#example-5-form input[name=shots]').removeAttr('disabled').change();
+ $('#example-5-extra-shots').hide();
+ $('#example-5-shots-options').show();
+ return false;
+ });
+ $('#example-5-like-button').click(function() {
+ var currentLike = $('#example-5-like').val() == 'true';
+ var newLike = !currentLike;
+ // we trigger a change event on the fields so that the areYouSure event handler is called
+ $('#example-5-like').val(newLike).change();
+ $('#example-5-like-button').text(newLike ? 'Unlike' : 'Like');
+ return false;
+ });
+ $('#example-5-form').areYouSure({
+ change: function() {
+ // Enable save button only if the form is dirty.
+ if ($(this).hasClass('dirty')) {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ } else {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ }
+ }
+ });
+
+ // Example 6 - HTML5 input types
+ $('#example-6-form').areYouSure();
+
+ // Example 7 - ... in one line of code for the form and some more optional to toggle disabled state of the save button
+ $('#example-7-form').areYouSure();
+ $('#example-7-save-button').click(function () {
+ $('#example-7-form').trigger('reinitialize.areYouSure');
+ });
+ // code below is optional to handle disabled state of the save button
+ $('#example-7-form').bind('dirty.areYouSure', function () {
+ // Enable save button only as the form is dirty.
+ $('#example-7-save-button').attr({ 'disabled': false });
+ });
+ $('#example-7-form').bind('clean.areYouSure', function () {
+ // Form is clean so nothing to save - disable the save button.
+ $('#example-7-save-button').attr({ 'disabled': true });
+ });
+ });
+
+ </script>
+
+ <style type="text/css">
+ body {
+ font-family: myriad-pro-1, myriad-pro-2, 'Lucida Grande', 'Arial', sans-serif;
+ margin: 25px;
+ }
+
+ form {
+ width: 350px;
+ border: 1px solid #AA5303;
+ padding: 10px 20px;
+ background-image: -webkit-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -moz-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -ms-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -o-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ border-radius: 5px;
+ }
+
+ /* A bit of custom styling on example 3 */
+ #example-3-form.dirty, #example-4-form.dirty {
+ box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ -webkit-box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ -moz-box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ border:1px solid rgba(255,0,0, 0.8);
+ }
+
+ form h2 {
+ font-size: 22px;
+ }
+
+ form > div {
+ padding: 8px;
+ font-size: 12px;
+ }
+ form > div input[type="text"],
+ form > div input[type="color"],
+ form > div input[type="date"],
+ form > div input[type="datetime"],
+ form > div input[type="datetime-local"],
+ form > div input[type="email"],
+ form > div input[type="month"],
+ form > div input[type="number"],
+ form > div input[type="range"],
+ form > div input[type="search"],
+ form > div input[type="tel"],
+ form > div input[type="time"],
+ form > div input[type="url"],
+ form > div input[type="week"],
+ form > div input:not([type]),
+ form > div textarea,
+ form > div select,
+ form > div button {
+ float: right;
+ width: 200px;
+ }
+
+ form > div input[type="radio"],
+ form > div input[type="checkbox"] {
+ display: inline-block;
+ margin-left: 130px;
+ }
+
+ form > div input[type="submit"] {
+ float: right;
+ }
+ form > div.buttons {
+ clear: both;
+ padding-bottom: 20px;
+ }
+ </style>
+ </head>
+
+ <body>
+ <h1>jQuery Plugin Demo: Are You Sure?</h1>
+ <p>
+ This page hosts a demo of the <a href="https://github.com/codedance/jquery.AreYouSure">jQuery Are-You-Sure</a> plugin (<code>jquery.are-you-sure.js</code>).
+ </p>
+ <p>
+ <i>Are-you-sure</i> is simple light-weight "dirty forms" JQuery Plugin for modern browsers. It helps prevent users from loosing unsaved form changes.
+ </p>
+ <p>
+ <strong>Features:</strong>
+ <ul>
+ <li>Light weight - only the features you need!</li>
+ <li>Dependency free.</li>
+ <li>Correct state management - if a user edits then restores a value, the form is not considered dirty.</li>
+ <li>Easy to understand - less than a "terminal screen" of code!</li>
+ <li>... and <a href="https://github.com/codedance/jquery.AreYouSure">more</a>.</li>
+ </ul>
+ </p>
+
+ <h2>Example 1: It's simple!</h2>
+ <p>
+ This example shows how easy it is to add a dirty check to your form(s) with one line
+ of code. (View the page's source)
+ </p>
+
+ <form id="example-1-form" name="coffeeOrder1" method="post">
+ <h2>Enter Your Coffee Order</h2>
+ <div>
+ <label for="example-1-coffee">Coffee</label>
+ <select name="coffee" id="example-1-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" checked /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-1-sugar">Sugar</label> <input type="text" name="sugar" value="0" id="example-1-sugar" />
+ </div>
+ <div>
+ <label for="example-1-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-1-instructions"></textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="checkbox" name="remember" value="true" /> Remember my order<br />
+ <input type="submit" value="Submit">
+ <input type="reset" value="Reset">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 2: Ignore the unimportant!</h2>
+ <p>
+ This example highlights how to disregard a field from the dirty check. In this form
+ the first field is dynamically populated and hence a change on this field should <em>not</em>
+ mark the form as dirty.
+ </p>
+ <form id="example-2-form" name="coffeeOrder2" method="post">
+ <h2>Enter Your Coffee Order</h2>
+ <div>
+ <!-- The ays-ignore class means a change on this field is not considered "dirty" -->
+ <label for="pickup">Pickup Time</label>
+ <input class="ays-ignore" type="text" name="pickup" id="pickup" />
+ <!-- or you can use a data attribute like this:
+ <label for="pickup">Pickup Time</label> <input data-ays-ignore="true" type="text" name="pickup" id="pickup" />
+ -->
+ </div>
+ <div>
+ <label for="example-2-coffee">Coffee</label>
+ <select name="coffee" id="example-2-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" checked /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-2-sugar">Sugar</label> <input type="text" name="sugar" value="0" id="example-2-sugar" />
+ </div>
+ <div>
+ <label for="example-2-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-2-instructions"></textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="checkbox" name="remember" value="true" /> Remember my order<br />
+ <input type="submit" value="Submit">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+
+ <h2>Example 3: Lets be intelligent!</h2>
+ <p>
+ This is a more advanced example. The <code>dirty</code> and <code>clean</code> change events are
+ intercepted so the save button is only enabled if the form is dirty (i.e. something to save).
+ It also demonstrates how to customize the warning message and change the style of a dirty
+ form (CSS styling using the <code>.dirty</code> class).
+ </p>
+ <form id="example-3-form" name="coffeeOrder3" method="post">
+ <h2>Update My Standard Order</h2>
+ <div>
+ <label for="example-3-coffee">Coffee</label>
+ <select name="coffee" id="example-3-coffee">
+ <option value=""></option>
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" checked /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-3-sugar">Sugar</label>
+ <input type="text" name="sugar" value="1" id="example-3-sugar" />
+ </div>
+ <div>
+ <label for="example-3-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-3-instructions">No chocolate please</textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="submit" value="Save" disabled="disabled">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 4: Lets be dynamic!</h2>
+ <p>
+ In this example we'll dymaically add a field and fire off the <code>rescan</code> event. After
+ the rescan, Are-You-Sure will start looking for changes on the new fields as well.
+ </p>
+ <form id="example-4-form" name="coffeeOrder4" method="post">
+ <h2>Order Coffee For Pickup Now</h2>
+ <div>
+ <a id="example-4-lastorder" href="javascript:void(0);">Set my preferences from my last order</a><br />
+ </div>
+ <div>
+ <label for="example-4-coffee">Coffee</label>
+ <select name="coffee" id="example-4-coffee">
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ </select>
+ </div>
+ <div id="example-4-special"></div>
+ <div class="buttons">
+ <input type="submit" value="Place Order">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 5: Edge cases</h2>
+ <p>
+ This example demonstrates tracking of hidden and disabled form elements that are changed by non-input elements.
+ E.g.:
+ </p>
+ <ul>
+ <li>clicking a link or non-input button that changes the value of a hidden form field, or</li>
+ <li>
+ clicking a link or non-input button that enables or disables some form fields (which has an effect on whether
+ or not those fields will be submitted with the form, despite the values not changing).
+ </li>
+ </ul>
+ <form id="example-5-form" name="coffeeOrder5" method="post">
+ <h2>Update My Standard Order</h2>
+ <div>
+ <label for="example-5-coffee">Coffee</label>
+ <select name="coffee" id="example-3-coffee">
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label>
+ <!--
+ The visually hidden "shots" radio buttons are disabled and would not normally be submitted with the form.
+ Clicking the following button will visually show and enable these buttons, resulting in a form state change
+ (and hence the form is considered dirty) without the values having changed.
+ -->
+ <button id="example-5-extra-shots">I want extra shots</button>
+ <div id="example-5-shots-options" style="display: none;">
+ <input type="radio" name="shots" value="1" disabled /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" disabled /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" disabled /> 3 Shots - Overdrive!<br />
+ </div>
+ </div>
+ <div>
+ <label>Do you like us?</label>
+ <input type="hidden" name="like" value="false" id="example-5-like" />
+ <button id="example-5-like-button">Like</button>
+ </div>
+ <div class="buttons">
+ <input type="submit" value="Save" disabled="disabled">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 6: HTML5 inputs!</h2>
+ <p>
+ This example shows support for HTML5 input types. It's not a coffee order form,
+ but you need coffee if you're working with HTML5 :-)
+ </p>
+
+ <form id="example-6-form" name="coffeeOrder6" method="post">
+ <h2>Doing HTML5? You'll need coffee!</h2>
+ <div>
+ <label for="example-6-color">color</label>
+ <input type="color" name="example-6-color" />
+ </div>
+ <div>
+ <label for="example-6-date">date</label>
+ <input type="date" name="example-6-date" />
+ </div>
+ <div>
+ <label for="example-6-datetime">datetime</label>
+ <input type="datetime" name="example-6-datetime" />
+ </div>
+ <div>
+ <label for="example-6-datetime-local">datetime-local</label>
+ <input type="datetime-local" name="example-6-datetime-local" />
+ </div>
+ <div>
+ <label for="example-6-email">email</label>
+ <input type="email" name="example-6-email" />
+ </div>
+ <div>
+ <label for="example-6-month">month</label>
+ <input type="month" name="example-6-month" />
+ </div>
+ <div>
+ <label for="example-6-number">number</label>
+ <input type="number" name="example-6-number" />
+ </div>
+ <div>
+ <label for="example-6-range">range</label>
+ <input type="range" name="example-6-range" />
+ </div>
+ <div>
+ <label for="example-6-search">search</label>
+ <input type="search" name="example-6-search" />
+ </div>
+ <div>
+ <label for="example-6-tel">tel</label>
+ <input type="tel" name="example-6-tel" />
+ </div>
+ <div>
+ <label for="example-6-time">time</label>
+ <input type="time" name="example-6-time" />
+ </div>
+ <div>
+ <label for="example-6-url">url</label>
+ <input type="url" name="example-6-url" />
+ </div>
+ <div>
+ <label for="example-6-week">week</label>
+ <input type="week" name="example-6-week" />
+ </div>
+ <div>
+ <label for="example-6-select">select/optgroup</label>
+ <select>
+ <optgroup label="Beans">
+ <option value="india">India</option>
+ <option value="indonesia" selected="selected">Indonesia</option>
+ <option value="brazil">Brazil</option>
+ </optgroup>
+ <optgroup label="Roast">
+ <option value="l">Light</option>
+ <option value="m">Medium</option>
+ <option value="h">Heavy</option>
+ </optgroup>
+ </select>
+ </div>
+ <div>
+ <label for="example-6-mselect">multi select</label>
+ <select multiple>
+ <option value="arabica">Arabica</option>
+ <option value="arabica">Peaberry</option>
+ <option value="malabar " selected="selected">Malabar</option>
+ <option value="robusta ">Robusta</option>
+ </select>
+ </div>
+ <div style="clear:both;"></div>
+ <div>
+ <label for="example-6-plain">plain old field</label>
+ <input name="example-6-plain" />
+ </div>
+
+ <div class="buttons">
+ <input type="submit" value="Submit">
+ <input type="reset" value="Reset">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+ <h2>Example 7: Mark current state as not dirty!</h2>
+ <p>
+ This example shows how you can mark the current state as not dirty. Handy for AJAX forms
+ we're you're managing your own submits.
+ </p>
+
+ <form id="example-7-form" name="coffeeOrder7" method="post">
+ <h2>Tell us your default coffee</h2>
+ <div>
+ <label for="example-7-coffee">Default coffee</label>
+ <select name="coffee" id="example-7-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <button id="example-7-save-button" disabled="disabled">Save without submit</button>
+ </div>
+ <div class="buttons">
+ <input type="submit" value="Submit">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <p>
+ This jQuery plugin is developed by <a href="https://github.com/codedance">Chris Dance</a>
+ at <a href="http://www.papercut.com/">PaperCut Software</a> - Are-You-Sure is used in
+ PaperCut's printing management software and it has been open sourced with help of
+ Tom, Jack and Matt from PaperCut's dev team.
+ </p>
+
+ </body>
+</html>
diff --git a/library/jquery.AreYouSure/jquery.are-you-sure.js b/library/jquery.AreYouSure/jquery.are-you-sure.js
new file mode 100644
index 000000000..3c41e2fcc
--- /dev/null
+++ b/library/jquery.AreYouSure/jquery.are-you-sure.js
@@ -0,0 +1,192 @@
+/*!
+ * jQuery Plugin: Are-You-Sure (Dirty Form Detection)
+ * https://github.com/codedance/jquery.AreYouSure/
+ *
+ * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Author: chris.dance@papercut.com
+ * Version: 1.9.0
+ * Date: 13th August 2014
+ */
+(function($) {
+
+ $.fn.areYouSure = function(options) {
+
+ var settings = $.extend(
+ {
+ 'message' : 'You have unsaved changes!',
+ 'dirtyClass' : 'dirty',
+ 'change' : null,
+ 'silent' : false,
+ 'addRemoveFieldsMarksDirty' : false,
+ 'fieldEvents' : 'change keyup propertychange input',
+ 'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])"
+ }, options);
+
+ var getValue = function($field) {
+ if ($field.hasClass('ays-ignore')
+ || $field.hasClass('aysIgnore')
+ || $field.attr('data-ays-ignore')
+ || $field.attr('name') === undefined) {
+ return null;
+ }
+
+ if ($field.is(':disabled')) {
+ return 'ays-disabled';
+ }
+
+ var val;
+ var type = $field.attr('type');
+ if ($field.is('select')) {
+ type = 'select';
+ }
+
+ switch (type) {
+ case 'checkbox':
+ case 'radio':
+ val = $field.is(':checked');
+ break;
+ case 'select':
+ val = '';
+ $field.find('option').each(function(o) {
+ var $option = $(this);
+ if ($option.is(':selected')) {
+ val += $option.val();
+ }
+ });
+ break;
+ default:
+ val = $field.val();
+ }
+
+ return val;
+ };
+
+ var storeOrigValue = function($field) {
+ $field.data('ays-orig', getValue($field));
+ };
+
+ var checkForm = function(evt) {
+
+ var isFieldDirty = function($field) {
+ var origValue = $field.data('ays-orig');
+ if (undefined === origValue) {
+ return false;
+ }
+ return (getValue($field) != origValue);
+ };
+
+ var $form = ($(this).is('form'))
+ ? $(this)
+ : $(this).parents('form');
+
+ // Test on the target first as it's the most likely to be dirty
+ if (isFieldDirty($(evt.target))) {
+ setDirtyStatus($form, true);
+ return;
+ }
+
+ $fields = $form.find(settings.fieldSelector);
+
+ if (settings.addRemoveFieldsMarksDirty) {
+ // Check if field count has changed
+ var origCount = $form.data("ays-orig-field-count");
+ if (origCount != $fields.length) {
+ setDirtyStatus($form, true);
+ return;
+ }
+ }
+
+ // Brute force - check each field
+ var isDirty = false;
+ $fields.each(function() {
+ $field = $(this);
+ if (isFieldDirty($field)) {
+ isDirty = true;
+ return false; // break
+ }
+ });
+
+ setDirtyStatus($form, isDirty);
+ };
+
+ var initForm = function($form) {
+ var fields = $form.find(settings.fieldSelector);
+ $(fields).each(function() { storeOrigValue($(this)); });
+ $(fields).unbind(settings.fieldEvents, checkForm);
+ $(fields).bind(settings.fieldEvents, checkForm);
+ $form.data("ays-orig-field-count", $(fields).length);
+ setDirtyStatus($form, false);
+ };
+
+ var setDirtyStatus = function($form, isDirty) {
+ var changed = isDirty != $form.hasClass(settings.dirtyClass);
+ $form.toggleClass(settings.dirtyClass, isDirty);
+
+ // Fire change event if required
+ if (changed) {
+ if (settings.change) settings.change.call($form, $form);
+
+ if (isDirty) $form.trigger('dirty.areYouSure', [$form]);
+ if (!isDirty) $form.trigger('clean.areYouSure', [$form]);
+ $form.trigger('change.areYouSure', [$form]);
+ }
+ };
+
+ var rescan = function() {
+ var $form = $(this);
+ var fields = $form.find(settings.fieldSelector);
+ $(fields).each(function() {
+ var $field = $(this);
+ if (!$field.data('ays-orig')) {
+ storeOrigValue($field);
+ $field.bind(settings.fieldEvents, checkForm);
+ }
+ });
+ // Check for changes while we're here
+ $form.trigger('checkform.areYouSure');
+ };
+
+ var reinitialize = function() {
+ initForm($(this));
+ }
+
+ if (!settings.silent && !window.aysUnloadSet) {
+ window.aysUnloadSet = true;
+ $(window).bind('beforeunload', function() {
+ $dirtyForms = $("form").filter('.' + settings.dirtyClass);
+ if ($dirtyForms.length == 0) {
+ return;
+ }
+ // Prevent multiple prompts - seen on Chrome and IE
+ if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
+ if (window.aysHasPrompted) {
+ return;
+ }
+ window.aysHasPrompted = true;
+ window.setTimeout(function() {window.aysHasPrompted = false;}, 900);
+ }
+ return settings.message;
+ });
+ }
+
+ return this.each(function(elem) {
+ if (!$(this).is('form')) {
+ return;
+ }
+ var $form = $(this);
+
+ $form.submit(function() {
+ $form.removeClass(settings.dirtyClass);
+ });
+ $form.bind('reset', function() { setDirtyStatus($form, false); });
+ // Add a custom events
+ $form.bind('rescan.areYouSure', rescan);
+ $form.bind('reinitialize.areYouSure', reinitialize);
+ $form.bind('checkform.areYouSure', checkForm);
+ initForm($form);
+ });
+ };
+})(jQuery);
diff --git a/library/jquery.AreYouSure/package.json b/library/jquery.AreYouSure/package.json
new file mode 100644
index 000000000..0b4c38dde
--- /dev/null
+++ b/library/jquery.AreYouSure/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "jquery.AreYouSure",
+ "description": "A light-weight jQuery \"dirty forms\" Plugin - it monitors HTML forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "author": "Chris Dance <chris.dance@papercut.com> (https://github.com/codedance)",
+ "contributors": [
+ "Tom Clift <tom.clift@papercut.com> (https://github.com/tclift)",
+ "Jon Egerton <jon@ja2.co.uk> (http://www.jonegerton.com/)",
+ "Scadoodles (https://github.com/Scadoodles)",
+ "Albin Sunnanbo (https://github.com/albinsunnanbo)",
+ "Marc Sutton <ashre@iname.com> (http://www.codev.co.uk)"
+ ],
+ "version": "1.9.0",
+ "license": "MIT/GPLv2",
+ "keywords": [ "dirty", "form", "onbeforeunload", "save", "check" ],
+ "main": "jquery.are-you-sure.js",
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/codedance/jquery.AreYouSure"
+ },
+ "bugs": {
+ "url": "https://github.com/codedance/jquery.AreYouSure/issues"
+ },
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ },
+ "devDependencies": {
+ "bower": "^1.3.1",
+ "grunt": "^0.4.5",
+ "grunt-cli": "^0.1.13",
+ "grunt-karma": "^0.8.3",
+ "karma-chrome-launcher": "^0.1.4",
+ "karma-jasmine": "^0.2.2",
+ "karma-ie-launcher": "^0.1.5",
+ "karma-firefox-launcher": "^0.1.3",
+ "karma-safari-launcher": "^0.1.1"
+ },
+ "scripts": {
+ "postinstall": "node_modules/.bin/bower install",
+ "test": "node_modules/.bin/grunt test"
+ }
+}
diff --git a/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html b/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html
new file mode 100644
index 000000000..1b2850759
--- /dev/null
+++ b/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html
@@ -0,0 +1,4 @@
+<form>
+ <input type="text" name="a">
+ <input type="submit">
+</form>
diff --git a/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js b/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js
new file mode 100644
index 000000000..5e02f7cb0
--- /dev/null
+++ b/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js
@@ -0,0 +1,28 @@
+'use strict';
+
+// Karma adds 'base/' to the default path
+jasmine.getFixtures().fixturesPath = 'base/spec/javascripts/fixtures';
+
+describe("A form's", function() {
+ var $form = undefined;
+
+ describe('text input', function() {
+ var $textInput = undefined;
+
+ beforeEach(function() {
+ loadFixtures('input-text.html');
+ $form = $('form');
+ $textInput = $('input[type=text]');
+ $form.areYouSure();
+ });
+
+ it('should cause dirtyness after its value changes', function(done) {
+ expect($form.hasClass('dirty')).toBe(false);
+ $textInput.val('new').change();
+ setTimeout(function() {
+ expect($form.hasClass('dirty')).toBe(true);
+ done();
+ }, 0);
+ });
+ });
+});
diff --git a/library/jquery.divgrow/divGrow-1.3.1.zip b/library/jquery.divgrow/divGrow-1.3.1.zip
deleted file mode 100644
index 8f1deacf1..000000000
--- a/library/jquery.divgrow/divGrow-1.3.1.zip
+++ /dev/null
Binary files differ
diff --git a/library/jquery.divgrow/howto b/library/jquery.divgrow/howto
deleted file mode 100644
index c2fdd66f9..000000000
--- a/library/jquery.divgrow/howto
+++ /dev/null
@@ -1,46 +0,0 @@
-1) Inlcude the JS file into your page (after jQuery):
-
-<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
-
-<script src="JS/jquery.divgrow.js" type="text/javascript"></script>
-
-
-2) Call the divgrow function to any div element you want to grow. initialHeight sets the height of the containers before they are expanded.
-
-<script type="text/javascript">
- $().ready(function() {
- $('div.more-block').divgrow({ initialHeight: 147 });
- });
-
-
-3) Create you container and give it a reference, i.e. by classname "more-block"
-
- <div class="more-block">
- <h2>Corns and Callus (Hyperkeratosis)</h2>
- <p>
- These occur in areas of the foot that are experiencing excess pressure and/or friction. The body seeks to defend itself by producing extra layers of skin as a form of protection. However as the process continues the accumulation of extra skin exceeds that which is lost naturally so the skin in these vulnerable areas builds up and becomes compacted as the original cause of the process continues. The protective mechanism becomes the problem if left untreated and the cause not addressed.<br />
- Callus denotes a general area of hard dead skin and a corn is a much more concentrated collection which often goes deep rather than wide. Corns can produce pain completely out of proportion to their size often because of impingement upon nerves or sometimes infection.<br />
- Treatment of the symptoms is the first step to stopping the pain and discomfort and this is usually addressed without much discomfort by a foot health professional. Treating the cause can be as simple as discarding an ill fitting pair of shoes or may entail a more detailed assessment of individual foot function.<br />
- Callus is not always caused by mechanical factors but can be a symptom of a systemic disease such as Psoriasis.<br />
- There are some useful devices to assist in protecting vulnerable areas from corns and callus ? see our recommended <a href="Products.aspx">products page</a>.
- </p>
- </div>
-
-
-
------------------------------------------------------
-
-Thats it.
-
-Optional arguments:
-
-initialHeight: 100 - (default)
-moreText: "+ Show More" - (default)
-lessText: "- Show Less" - (default)
-showBrackets: true - (default)
-
-e.g.
-
-$('div.more-block').divgrow({ initialHeight: 147, moreText: "give me more", lessText: "thats enough", showBrackets: false });
-
-
diff --git a/library/jquery.divgrow/jquery.divgrow-1.3.1.js b/library/jquery.divgrow/jquery.divgrow-1.3.1.js
deleted file mode 100644
index 49788f802..000000000
--- a/library/jquery.divgrow/jquery.divgrow-1.3.1.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2010 Simon Hibbard
-*
-* Permission is hereby granted, free of charge, to any person
-* obtaining a copy of this software and associated documentation
-* files (the "Software"), to deal in the Software without
-* restriction, including without limitation the rights to use,
-* copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following
-* conditions:
-
-* The above copyright notice and this permission notice shall be
-* included in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-* OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-/*
-* Version: V1.3.1
-* Release: 22-12-2010
-* Based on jQuery 1.4.2
-*/
-
-(function ($) {
- var divgrowid = 0;
- $.fn.divgrow = function (options) {
- var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 400, showBrackets: true }, options);
-
- return this.each(function () {
- divgrowid++;
-
- obj = $(this);
-
- var fullHeight = obj.height() + 10;
-
- obj.css('height', options.initialHeight).css('overflow', 'hidden');
- if (options.showBrackets) {
- obj.after('<p class="divgrow-brackets">[&hellip;]</p><div href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></div>');
- }
- else {
- obj.after('<div class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></div>');
- }
- $("div.divgrow-showmore").html(options.moreText);
-
- $("." + "divgrow-obj-" + divgrowid).toggle(function () {
- //alert(obj.attr('class'));
- // Set the height from the elements rel value
- //var height = $(this).prevAll("div:first").attr('rel');
-
- $(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { // Animation complete.
-
- // Hide the overlay text when expanded, change the link text
- if (options.showBrackets) {
- $(this).nextAll("p.divgrow-brackets:first").fadeOut();
- }
- $(this).nextAll("div.divgrow-showmore:first").html(options.lessText);
-
- });
-
-
- }, function () {
-
- $(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { // Animation complete.
-
- // show the overlay text while closed, change the link text
- if (options.showBrackets) {
- $(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn();
- }
- $(this).nextAll("div.divgrow-showmore:first").stop(true, false).html(options.moreText);
-
- });
- });
-
- });
- };
-})(jQuery);
-
-
-
-
-
diff --git a/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js b/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js
deleted file mode 100644
index fd08f7fa8..000000000
--- a/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function ($) { var divgrowid = 0; $.fn.divgrow = function (options) { var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 1000, showBrackets: true }, options); return this.each(function () { divgrowid++; obj = $(this); var fullHeight = obj.height() + 10; obj.css('height', options.initialHeight).css('overflow', 'hidden'); if (options.showBrackets) { obj.after('<p class="divgrow-brackets">[&hellip;]</p><a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>') } else { obj.after('<a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>') } $("a.divgrow-showmore").html(options.moreText); $("." + "divgrow-obj-" + divgrowid).toggle(function () { $(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { if (options.showBrackets) { $(this).nextAll("p.divgrow-brackets:first").fadeOut() } $(this).nextAll("a.divgrow-showmore:first").html(options.lessText) }) }, function () { $(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { if (options.showBrackets) { $(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn() } $(this).nextAll("a.divgrow-showmore:first").stop(true, false).html(options.moreText) }) }) }) } })(jQuery); \ No newline at end of file
diff --git a/library/jquery.timeago.js b/library/jquery.timeago.js
index f7a657e93..ef9327aac 100644
--- a/library/jquery.timeago.js
+++ b/library/jquery.timeago.js
@@ -3,7 +3,7 @@
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* @name timeago
- * @version 0.11.4
+ * @version 1.4.1
* @requires jQuery v1.2.3+
* @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php
@@ -11,142 +11,211 @@
* For usage and examples, visit:
* http://timeago.yarp.com/
*
- * Copyright (c) 2008-2012, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
+ * Copyright (c) 2008-2013, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/
-(function($) {
- $.timeago = function(timestamp) {
- if (timestamp instanceof Date) {
- return inWords(timestamp);
- } else if (typeof timestamp === "string") {
- return inWords($.timeago.parse(timestamp));
- } else if (typeof timestamp === "number") {
- return inWords(new Date(timestamp));
- } else {
- return inWords($.timeago.datetime(timestamp));
- }
- };
- var $t = $.timeago;
-
- $.extend($.timeago, {
- settings: {
- refreshMillis: 60000,
- allowFuture: false,
- strings: {
- prefixAgo: null,
- prefixFromNow: null,
- suffixAgo: "ago",
- suffixFromNow: "from now",
- seconds: "less than a minute",
- minute: "about a minute",
- minutes: "%d minutes",
- hour: "about an hour",
- hours: "about %d hours",
- day: "a day",
- days: "%d days",
- month: "about a month",
- months: "%d months",
- year: "about a year",
- years: "%d years",
- wordSeparator: " ",
- numbers: []
- }
- },
- inWords: function(distanceMillis) {
- var $l = this.settings.strings;
- var prefix = $l.prefixAgo;
- var suffix = $l.suffixAgo;
- if (this.settings.allowFuture) {
- if (distanceMillis < 0) {
- prefix = $l.prefixFromNow;
- suffix = $l.suffixFromNow;
- }
- }
-
- var seconds = Math.abs(distanceMillis) / 1000;
- var minutes = seconds / 60;
- var hours = minutes / 60;
- var days = hours / 24;
- var years = days / 365;
-
- function substitute(stringOrFunction, number) {
- var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
- var value = ($l.numbers && $l.numbers[number]) || number;
- return string.replace(/%d/i, value);
- }
-
- var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
- seconds < 90 && substitute($l.minute, 1) ||
- minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
- minutes < 90 && substitute($l.hour, 1) ||
- hours < 24 && substitute($l.hours, Math.round(hours)) ||
- hours < 42 && substitute($l.day, 1) ||
- days < 30 && substitute($l.days, Math.round(days)) ||
- days < 45 && substitute($l.month, 1) ||
- days < 365 && substitute($l.months, Math.round(days / 30)) ||
- years < 1.5 && substitute($l.year, 1) ||
- substitute($l.years, Math.round(years));
-
- var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator;
- return $.trim([prefix, words, suffix].join(separator));
- },
- parse: function(iso8601) {
- var s = $.trim(iso8601);
- s = s.replace(/\.\d+/,""); // remove milliseconds
- s = s.replace(/-/,"/").replace(/-/,"/");
- s = s.replace(/T/," ").replace(/Z/," UTC");
- s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
- return new Date(s);
- },
- datetime: function(elem) {
- var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
- return $t.parse(iso8601);
- },
- isTime: function(elem) {
- // jQuery's `is()` doesn't play well with HTML5 in IE
- return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
- }
- });
-
- $.fn.timeago = function() {
- var self = this;
- self.each(refresh);
-
- var $s = $t.settings;
- if ($s.refreshMillis > 0) {
- setInterval(function() { self.each(refresh); }, $s.refreshMillis);
- }
- return self;
- };
-
- function refresh() {
- var data = prepareData(this);
- if (!isNaN(data.datetime)) {
- $(this).text(inWords(data.datetime));
- }
- return this;
- }
-
- function prepareData(element) {
- element = $(element);
- if (!element.data("timeago")) {
- element.data("timeago", { datetime: $t.datetime(element) });
- var text = $.trim(element.text());
- if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
- element.attr("title", text);
- }
- }
- return element.data("timeago");
- }
-
- function inWords(date) {
- return $t.inWords(distance(date));
- }
-
- function distance(date) {
- return (new Date().getTime() - date.getTime());
- }
-
- // fix for IE6 suckage
- document.createElement("abbr");
- document.createElement("time");
-}(jQuery));
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], factory);
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function ($) {
+ $.timeago = function(timestamp) {
+ if (timestamp instanceof Date) {
+ return inWords(timestamp);
+ } else if (typeof timestamp === "string") {
+ return inWords($.timeago.parse(timestamp));
+ } else if (typeof timestamp === "number") {
+ return inWords(new Date(timestamp));
+ } else {
+ return inWords($.timeago.datetime(timestamp));
+ }
+ };
+ var $t = $.timeago;
+
+ $.extend($.timeago, {
+ settings: {
+ refreshMillis: 60000,
+ allowPast: true,
+ allowFuture: false,
+ localeTitle: false,
+ cutoff: 0,
+ strings: {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: "ago",
+ suffixFromNow: "from now",
+ inPast: 'any moment now',
+ seconds: "less than a minute",
+ minute: "about a minute",
+ minutes: "%d minutes",
+ hour: "about an hour",
+ hours: "about %d hours",
+ day: "a day",
+ days: "%d days",
+ month: "about a month",
+ months: "%d months",
+ year: "about a year",
+ years: "%d years",
+ wordSeparator: " ",
+ numbers: []
+ }
+ },
+
+ inWords: function(distanceMillis) {
+ if(!this.settings.allowPast && ! this.settings.allowFuture) {
+ throw 'timeago allowPast and allowFuture settings can not both be set to false.';
+ }
+
+ var $l = this.settings.strings;
+ var prefix = $l.prefixAgo;
+ var suffix = $l.suffixAgo;
+ if (this.settings.allowFuture) {
+ if (distanceMillis < 0) {
+ prefix = $l.prefixFromNow;
+ suffix = $l.suffixFromNow;
+ }
+ }
+
+ if(!this.settings.allowPast && distanceMillis >= 0) {
+ return this.settings.strings.inPast;
+ }
+
+ var seconds = Math.abs(distanceMillis) / 1000;
+ var minutes = seconds / 60;
+ var hours = minutes / 60;
+ var days = hours / 24;
+ var years = days / 365;
+
+ function substitute(stringOrFunction, number) {
+ var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
+ var value = ($l.numbers && $l.numbers[number]) || number;
+ return string.replace(/%d/i, value);
+ }
+
+ var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
+ seconds < 90 && substitute($l.minute, 1) ||
+ minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
+ minutes < 90 && substitute($l.hour, 1) ||
+ hours < 24 && substitute($l.hours, Math.round(hours)) ||
+ hours < 42 && substitute($l.day, 1) ||
+ days < 30 && substitute($l.days, Math.round(days)) ||
+ days < 45 && substitute($l.month, 1) ||
+ days < 365 && substitute($l.months, Math.round(days / 30)) ||
+ years < 1.5 && substitute($l.year, 1) ||
+ substitute($l.years, Math.round(years));
+
+ var separator = $l.wordSeparator || "";
+ if ($l.wordSeparator === undefined) { separator = " "; }
+ return $.trim([prefix, words, suffix].join(separator));
+ },
+
+ parse: function(iso8601) {
+ var s = $.trim(iso8601);
+ s = s.replace(/\.\d+/,""); // remove milliseconds
+ s = s.replace(/-/,"/").replace(/-/,"/");
+ s = s.replace(/T/," ").replace(/Z/," UTC");
+ s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
+ s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900
+ return new Date(s);
+ },
+ datetime: function(elem) {
+ var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
+ return $t.parse(iso8601);
+ },
+ isTime: function(elem) {
+ // jQuery's `is()` doesn't play well with HTML5 in IE
+ return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
+ }
+ });
+
+ // functions that can be called via $(el).timeago('action')
+ // init is default when no action is given
+ // functions are called with context of a single element
+ var functions = {
+ init: function(){
+ var refresh_el = $.proxy(refresh, this);
+ refresh_el();
+ var $s = $t.settings;
+ if ($s.refreshMillis > 0) {
+ this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
+ }
+ },
+ update: function(time){
+ var parsedTime = $t.parse(time);
+ $(this).data('timeago', { datetime: parsedTime });
+ if($t.settings.localeTitle) $(this).attr("title", parsedTime.toLocaleString());
+ refresh.apply(this);
+ },
+ updateFromDOM: function(){
+ $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
+ refresh.apply(this);
+ },
+ dispose: function () {
+ if (this._timeagoInterval) {
+ window.clearInterval(this._timeagoInterval);
+ this._timeagoInterval = null;
+ }
+ }
+ };
+
+ $.fn.timeago = function(action, options) {
+ var fn = action ? functions[action] : functions.init;
+ if(!fn){
+ throw new Error("Unknown function name '"+ action +"' for timeago");
+ }
+ // each over objects here and call the requested function
+ this.each(function(){
+ fn.call(this, options);
+ });
+ return this;
+ };
+
+ function refresh() {
+ //check if it's still visible
+ if(!$.contains(document.documentElement,this)){
+ //stop if it has been removed
+ $(this).timeago("dispose");
+ return this;
+ }
+
+ var data = prepareData(this);
+ var $s = $t.settings;
+
+ if (!isNaN(data.datetime)) {
+ if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
+ $(this).text(inWords(data.datetime));
+ }
+ }
+ return this;
+ }
+
+ function prepareData(element) {
+ element = $(element);
+ if (!element.data("timeago")) {
+ element.data("timeago", { datetime: $t.datetime(element) });
+ var text = $.trim(element.text());
+ if ($t.settings.localeTitle) {
+ element.attr("title", element.data('timeago').datetime.toLocaleString());
+ } else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
+ element.attr("title", text);
+ }
+ }
+ return element.data("timeago");
+ }
+
+ function inWords(date) {
+ return $t.inWords(distance(date));
+ }
+
+ function distance(date) {
+ return (new Date().getTime() - date.getTime());
+ }
+
+ // fix for IE6 suckage
+ document.createElement("abbr");
+ document.createElement("time");
+}));
diff --git a/library/jslider/.gitignore b/library/jslider/.gitignore
deleted file mode 100644
index 1e0fc5a99..000000000
--- a/library/jslider/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*/.DS_Store
-.DS_Store
diff --git a/library/jslider/Makefile b/library/jslider/Makefile
deleted file mode 100644
index 0559b48e5..000000000
--- a/library/jslider/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-
-css_compiler: js_compiler
- mkdir -p bin
- cat css/jslider.css css/jslider.blue.css css/jslider.plastic.css css/jslider.round.css css/jslider.round.plastic.css > bin/jquery.slider.all.css
- java -jar tools/yuicompressor-2.4.7.jar --type=css bin/jquery.slider.all.css > bin/jquery.slider.min.css
- rm -f bin/jquery.slider.all.css
-
-js_compiler:
- mkdir -p bin
- rm -f bin/jquery.slider.all.js bin/jquery.slider.min.js
- cat js/jshashtable-2.1_src.js js/jquery.numberformatter-1.2.3.js js/tmpl.js js/jquery.dependClass-0.1.js js/draggable-0.1.js js/jquery.slider.js > bin/jquery.slider.all.js
- uglifyjs -nc bin/jquery.slider.all.js > bin/jquery.slider.min.js
- rm -f bin/jquery.slider.all.js
-
-
diff --git a/library/jslider/README.md b/library/jslider/README.md
deleted file mode 100644
index 0d4c61347..000000000
--- a/library/jslider/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# jQuery Slider plugin
-
-jQuery Slider is easy to use and multifunctional jQuery plugin.
-
-[Check out demos and documentations here](http://egorkhmelev.github.com/jslider/)
-
-## License
-
-(MIT License) — Copyright &copy; 2012 Egor Khmelev \ No newline at end of file
diff --git a/library/jslider/bin/jquery.slider.min.css b/library/jslider/bin/jquery.slider.min.css
deleted file mode 100644
index 14b3f2210..000000000
--- a/library/jslider/bin/jquery.slider.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.jslider .jslider-bg i,.jslider .jslider-pointer{background:url(../img/jslider.png) no-repeat 0 0}.jslider{display:block;width:100%;height:1em;position:relative;top:.6em;font-family:Arial,sans-serif}.jslider table{width:100%;border-collapse:collapse;border:0}.jslider td,.jslider th{padding:0;vertical-align:top;text-align:left;border:0}.jslider table,.jslider table tr,.jslider table tr td{width:100%;vertical-align:top}.jslider .jslider-bg{position:relative}.jslider .jslider-bg i{height:5px;position:absolute;font-size:0;top:0}.jslider .jslider-bg .l{width:50%;background-position:0 0;left:0}.jslider .jslider-bg .r{width:50%;left:50%;background-position:right 0}.jslider .jslider-bg .v{position:absolute;width:60%;left:20%;top:0;height:5px;background-position:0 -20px}.jslider .jslider-pointer{width:13px;height:15px;background-position:0 -40px;position:absolute;left:20%;top:-4px;margin-left:-6px;cursor:pointer;cursor:hand}.jslider .jslider-pointer-hover{background-position:-20px -40px}.jslider .jslider-pointer-to{left:80%}.jslider .jslider-label{font-size:9px;line-height:12px;color:black;opacity:.4;white-space:nowrap;padding:0 2px;position:absolute;top:-18px;left:0}.jslider .jslider-label-to{left:auto;right:0}.jslider .jslider-value{font-size:9px;white-space:nowrap;padding:1px 2px 0;position:absolute;top:-19px;left:20%;background:white;line-height:12px;-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;border-radius:2px}.jslider .jslider-value-to{left:80%}.jslider .jslider-label small,.jslider .jslider-value small{position:relative;top:-0.4em}.jslider .jslider-scale{position:relative;top:9px}.jslider .jslider-scale span{position:absolute;height:5px;border-left:1px solid #999;font-size:0}.jslider .jslider-scale ins{font-size:9px;text-decoration:none;position:absolute;left:0;top:5px;color:#999}.jslider-single .jslider-pointer-to,.jslider-single .jslider-value-to,.jslider-single .jslider-bg .v,.jslider-limitless .jslider-label{display:none}.jslider_blue .jslider-bg i,.jslider_blue .jslider-pointer{background-image:url(../img/jslider.blue.png)}.jslider_plastic .jslider-bg i,.jslider_plastic .jslider-pointer{background-image:url(../img/jslider.plastic.png)}.jslider_round .jslider-bg i,.jslider_round .jslider-pointer{background-image:url(../img/jslider.round.png)}.jslider_round .jslider-pointer{width:17px;height:17px;top:-6px;margin-left:-8px}.jslider_round_plastic .jslider-bg i,.jslider_round_plastic .jslider-pointer{background-image:url(../img/jslider.round.plastic.png)}.jslider_round_plastic .jslider-pointer{width:18px;height:18px;top:-7px;margin-left:-8px} \ No newline at end of file
diff --git a/library/jslider/bin/jquery.slider.min.js b/library/jslider/bin/jquery.slider.min.js
deleted file mode 100644
index 562c5af80..000000000
--- a/library/jslider/bin/jquery.slider.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var Hashtable=function(){function c(b){var d;if(typeof b=="string")return b;if(typeof b.hashCode==a)return d=b.hashCode(),typeof d=="string"?d:c(d);if(typeof b.toString==a)return b.toString();try{return String(b)}catch(e){return Object.prototype.toString.call(b)}}function d(a,b){return a.equals(b)}function e(b,c){return typeof c.equals==a?c.equals(b):b===c}function f(a){return function(b){if(b===null)throw new Error("null is not a valid "+a);if(typeof b=="undefined")throw new Error(a+" must not be undefined")}}function i(a,b,c,d){this[0]=a,this.entries=[],this.addEntry(b,c),d!==null&&(this.getEqualityFunction=function(){return d})}function m(a){return function(b){var c=this.entries.length,d,e=this.getEqualityFunction(b);while(c--){d=this.entries[c];if(e(b,d[0]))switch(a){case j:return!0;case k:return d;case l:return[c,d[1]]}}return!1}}function n(a){return function(b){var c=b.length;for(var d=0,e=this.entries.length;d<e;++d)b[c+d]=this.entries[d][a]}}function o(a,b){var c=a.length,d;while(c--){d=a[c];if(b===d[0])return c}return null}function p(a,b){var c=a[b];return c&&c instanceof i?c:null}function q(d,e){var f=this,j=[],k={},l=typeof d==a?d:c,m=typeof e==a?e:null;this.put=function(a,b){g(a),h(b);var c=l(a),d,e,f=null;return d=p(k,c),d?(e=d.getEntryForKey(a),e?(f=e[1],e[1]=b):d.addEntry(a,b)):(d=new i(c,a,b,m),j[j.length]=d,k[c]=d),f},this.get=function(a){g(a);var b=l(a),c=p(k,b);if(c){var d=c.getEntryForKey(a);if(d)return d[1]}return null},this.containsKey=function(a){g(a);var b=l(a),c=p(k,b);return c?c.containsKey(a):!1},this.containsValue=function(a){h(a);var b=j.length;while(b--)if(j[b].containsValue(a))return!0;return!1},this.clear=function(){j.length=0,k={}},this.isEmpty=function(){return!j.length};var n=function(a){return function(){var b=[],c=j.length;while(c--)j[c][a](b);return b}};this.keys=n("keys"),this.values=n("values"),this.entries=n("getEntries"),this.remove=function(a){g(a);var c=l(a),d,e=null,f=p(k,c);return f&&(e=f.removeEntryForKey(a),e!==null&&(f.entries.length||(d=o(j,c),b(j,d),delete k[c]))),e},this.size=function(){var a=0,b=j.length;while(b--)a+=j[b].entries.length;return a},this.each=function(a){var b=f.entries(),c=b.length,d;while(c--)d=b[c],a(d[0],d[1])},this.putAll=function(b,c){var d=b.entries(),e,g,h,i,j=d.length,k=typeof c==a;while(j--)e=d[j],g=e[0],h=e[1],k&&(i=f.get(g))&&(h=c(g,i,h)),f.put(g,h)},this.clone=function(){var a=new q(d,e);return a.putAll(f),a}}var a="function",b=typeof Array.prototype.splice==a?function(a,b){a.splice(b,1)}:function(a,b){var c,d,e;if(b===a.length-1)a.length=b;else{c=a.slice(b+1),a.length=b;for(d=0,e=c.length;d<e;++d)a[b+d]=c[d]}},g=f("key"),h=f("value"),j=0,k=1,l=2;return i.prototype={getEqualityFunction:function(b){return typeof b.equals==a?d:e},getEntryForKey:m(k),getEntryAndIndexForKey:m(l),removeEntryForKey:function(a){var c=this.getEntryAndIndexForKey(a);return c?(b(this.entries,c[0]),c[1]):null},addEntry:function(a,b){this.entries[this.entries.length]=[a,b]},keys:n(0),values:n(1),getEntries:function(a){var b=a.length;for(var c=0,d=this.entries.length;c<d;++c)a[b+c]=this.entries[c].slice(0)},containsKey:m(j),containsValue:function(a){var b=this.entries.length;while(b--)if(a===this.entries[b][1])return!0;return!1}},q}();(function(a){function i(a,b,c){this.dec=a,this.group=b,this.neg=c}function j(){for(var a=0;a<h.length;a++){localeGroup=h[a];for(var c=0;c<localeGroup.length;c++)b.put(localeGroup[c],a)}}function k(a,c){b.size()==0&&j();var d=".",e=",",f="-";c==0&&(a.indexOf("_")!=-1?a=a.split("_")[1].toLowerCase():a.indexOf("-")!=-1&&(a=a.split("-")[1].toLowerCase()));var h=b.get(a);if(h){var k=g[h];k&&(d=k[0],e=k[1])}return new i(d,e,f)}var b=new Hashtable,c=["ae","au","ca","cn","eg","gb","hk","il","in","jp","sk","th","tw","us"],d=["at","br","de","dk","es","gr","it","nl","pt","tr","vn"],e=["cz","fi","fr","ru","se","pl"],f=["ch"],g=[[".",","],[",","."],[","," "],[".","'"]],h=[c,d,e,f];a.fn.formatNumber=function(b,c,d){return this.each(function(){c==null&&(c=!0),d==null&&(d=!0);var e;a(this).is(":input")?e=new String(a(this).val()):e=new String(a(this).text());var f=a.formatNumber(e,b);c&&(a(this).is(":input")?a(this).val(f):a(this).text(f));if(d)return f})},a.formatNumber=function(b,c){var c=a.extend({},a.fn.formatNumber.defaults,c),d=k(c.locale.toLowerCase(),c.isFullLocale),e=d.dec,f=d.group,g=d.neg,h="0#-,.",i="",j=!1;for(var l=0;l<c.format.length;l++){if(h.indexOf(c.format.charAt(l))!=-1){if(l==0&&c.format.charAt(l)=="-"){j=!0;continue}break}i+=c.format.charAt(l)}var m="";for(var l=c.format.length-1;l>=0;l--){if(h.indexOf(c.format.charAt(l))!=-1)break;m=c.format.charAt(l)+m}c.format=c.format.substring(i.length),c.format=c.format.substring(0,c.format.length-m.length);var n=new Number(b);return a._formatNumber(n,c,m,i,j)},a._formatNumber=function(b,c,d,e,f){var c=a.extend({},a.fn.formatNumber.defaults,c),g=k(c.locale.toLowerCase(),c.isFullLocale),h=g.dec,i=g.group,j=g.neg,l=!1;if(isNaN(b)){if(c.nanForceZero!=1)return null;b=0,l=!0}d=="%"&&(b*=100);var m="";if(c.format.indexOf(".")>-1){var n=h,o=c.format.substring(c.format.lastIndexOf(".")+1);if(c.round==1)b=new Number(b.toFixed(o.length));else{var p=b.toString();p=p.substring(0,p.lastIndexOf(".")+o.length+1),b=new Number(p)}var q=b%1,r=new String(q.toFixed(o.length));r=r.substring(r.lastIndexOf(".")+1);for(var s=0;s<o.length;s++){if(o.charAt(s)=="#"&&r.charAt(s)!="0"){n+=r.charAt(s);continue}if(o.charAt(s)=="#"&&r.charAt(s)=="0"){var t=r.substring(s);if(t.match("[1-9]")){n+=r.charAt(s);continue}break}o.charAt(s)=="0"&&(n+=r.charAt(s))}m+=n}else b=Math.round(b);var u=Math.floor(b);b<0&&(u=Math.ceil(b));var v="";c.format.indexOf(".")==-1?v=c.format:v=c.format.substring(0,c.format.indexOf("."));var w="";if(u!=0||v.substr(v.length-1)!="#"||l){var x=new String(Math.abs(u)),y=9999;v.lastIndexOf(",")!=-1&&(y=v.length-v.lastIndexOf(",")-1);var z=0;for(var s=x.length-1;s>-1;s--)w=x.charAt(s)+w,z++,z==y&&s!=0&&(w=i+w,z=0);if(v.length>w.length){var A=v.indexOf("0");if(A!=-1){var B=v.length-A,C=v.length-w.length-1;while(w.length<B){var D=v.charAt(C);D==","&&(D=i),w=D+w,C--}}}}return!w&&v.indexOf("0",v.length-1)!==-1&&(w="0"),m=w+m,b<0&&f&&e.length>0?e=j+e:b<0&&(m=j+m),c.decimalSeparatorAlwaysShown||m.lastIndexOf(h)==m.length-1&&(m=m.substring(0,m.length-1)),m=e+m+d,m},a.fn.parseNumber=function(b,c,d){c==null&&(c=!0),d==null&&(d=!0);var e;a(this).is(":input")?e=new String(a(this).val()):e=new String(a(this).text());var f=a.parseNumber(e,b);if(f){c&&(a(this).is(":input")?a(this).val(f.toString()):a(this).text(f.toString()));if(d)return f}},a.parseNumber=function(b,c){var c=a.extend({},a.fn.parseNumber.defaults,c),d=k(c.locale.toLowerCase(),c.isFullLocale),e=d.dec,f=d.group,g=d.neg,h="1234567890.-";while(b.indexOf(f)>-1)b=b.replace(f,"");b=b.replace(e,".").replace(g,"-");var i="",j=!1;if(b.charAt(b.length-1)=="%"||c.isPercentage==1)j=!0;for(var l=0;l<b.length;l++)h.indexOf(b.charAt(l))>-1&&(i+=b.charAt(l));var m=new Number(i);if(j){m/=100;var n=i.indexOf(".");if(n!=-1){var o=i.length-n-1;m=m.toFixed(o+2)}else m=m.toFixed(i.length-1)}return m},a.fn.parseNumber.defaults={locale:"us",decimalSeparatorAlwaysShown:!1,isPercentage:!1,isFullLocale:!1},a.fn.formatNumber.defaults={format:"#,###.00",locale:"us",decimalSeparatorAlwaysShown:!1,nanForceZero:!0,round:!0,isFullLocale:!1},Number.prototype.toFixed=function(b){return a._roundNumber(this,b)},a._roundNumber=function(a,b){var c=Math.pow(10,b||0),d=String(Math.round(a*c)/c);if(b>0){var e=d.indexOf(".");e==-1?(d+=".",e=0):e=d.length-(e+1);while(e<b)d+="0",e++}return d}})(jQuery),function(){var a={};this.tmpl=function b(c,d){var e=/\W/.test(c)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+c.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):a[c]=a[c]||b(document.getElementById(c).innerHTML);return d?e(d):e}}(),function(a){a.baseClass=function(b){return b=a(b),b.get(0).className.match(/([^ ]+)/)[1]},a.fn.addDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&a(this).addClass(c+d.delimiter+b)})},a.fn.removeDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&a(this).removeClass(c+d.delimiter+b)})},a.fn.toggleDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&(a(this).is("."+c+d.delimiter+b)?a(this).removeClass(c+d.delimiter+b):a(this).addClass(c+d.delimiter+b))})}}(jQuery),function(a){function b(){this._init.apply(this,arguments)}b.prototype.oninit=function(){},b.prototype.events=function(){},b.prototype.onmousedown=function(){this.ptr.css({position:"absolute"})},b.prototype.onmousemove=function(a,b,c){this.ptr.css({left:b,top:c})},b.prototype.onmouseup=function(){},b.prototype.isDefault={drag:!1,clicked:!1,toclick:!0,mouseup:!1},b.prototype._init=function(){if(arguments.length>0){this.ptr=a(arguments[0]),this.outer=a(".draggable-outer"),this.is={},a.extend(this.is,this.isDefault);var b=this.ptr.offset();this.d={left:b.left,top:b.top,width:this.ptr.width(),height:this.ptr.height()},this.oninit.apply(this,arguments),this._events()}},b.prototype._getPageCoords=function(a){return a.targetTouches&&a.targetTouches[0]?{x:a.targetTouches[0].pageX,y:a.targetTouches[0].pageY}:{x:a.pageX,y:a.pageY}},b.prototype._bindEvent=function(a,b,c){var d=this;this.supportTouches_?a.get(0).addEventListener(this.events_[b],c,!1):a.bind(this.events_[b],c)},b.prototype._events=function(){var b=this;this.supportTouches_=a.browser.webkit&&navigator.userAgent.indexOf("Mobile")!=-1,this.events_={click:this.supportTouches_?"touchstart":"click",down:this.supportTouches_?"touchstart":"mousedown",move:this.supportTouches_?"touchmove":"mousemove",up:this.supportTouches_?"touchend":"mouseup"},this._bindEvent(a(document),"move",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault(),b._mousemove(a))}),this._bindEvent(a(document),"down",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault())}),this._bindEvent(a(document),"up",function(a){b._mouseup(a)}),this._bindEvent(this.ptr,"down",function(a){return b._mousedown(a),!1}),this._bindEvent(this.ptr,"up",function(a){b._mouseup(a)}),this.ptr.find("a").click(function(){b.is.clicked=!0;if(!b.is.toclick)return b.is.toclick=!0,!1}).mousedown(function(a){return b._mousedown(a),!1}),this.events()},b.prototype._mousedown=function(b){this.is.drag=!0,this.is.clicked=!1,this.is.mouseup=!1;var c=this.ptr.offset(),d=this._getPageCoords(b);this.cx=d.x-c.left,this.cy=d.y-c.top,a.extend(this.d,{left:c.left,top:c.top,width:this.ptr.width(),height:this.ptr.height()}),this.outer&&this.outer.get(0)&&this.outer.css({height:Math.max(this.outer.height(),a(document.body).height()),overflow:"hidden"}),this.onmousedown(b)},b.prototype._mousemove=function(a){this.is.toclick=!1;var b=this._getPageCoords(a);this.onmousemove(a,b.x-this.cx,b.y-this.cy)},b.prototype._mouseup=function(b){var c=this;this.is.drag&&(this.is.drag=!1,this.outer&&this.outer.get(0)&&(a.browser.mozilla?this.outer.css({overflow:"hidden"}):this.outer.css({overflow:"visible"}),a.browser.msie&&a.browser.version=="6.0"?this.outer.css({height:"100%"}):this.outer.css({height:"auto"})),this.onmouseup(b))},window.Draggable=b}(jQuery),function(a){function b(a){return typeof a=="undefined"?!1:a instanceof Array||!(a instanceof Object)&&Object.prototype.toString.call(a)=="[object Array]"||typeof a.length=="number"&&typeof a.splice!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("splice")?!0:!1}function d(){return this.init.apply(this,arguments)}function e(){Draggable.apply(this,arguments)}a.slider=function(b,c){var e=a(b);return e.data("jslider")||e.data("jslider",new d(b,c)),e.data("jslider")},a.fn.slider=function(c,d){function g(a){return a!==undefined}function h(a){return a!=null}var e,f=arguments;return this.each(function(){var i=a.slider(this,c);if(typeof c=="string")switch(c){case"value":if(g(f[1])&&g(f[2])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0].set(f[1]),j[0].setIndexOver()),h(j[1])&&h(f[2])&&(j[1].set(f[2]),j[1].setIndexOver())}else if(g(f[1])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0].set(f[1]),j[0].setIndexOver())}else e=i.getValue();break;case"prc":if(g(f[1])&&g(f[2])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0]._set(f[1]),j[0].setIndexOver()),h(j[1])&&h(f[2])&&(j[1]._set(f[2]),j[1].setIndexOver())}else if(g(f[1])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0]._set(f[1]),j[0].setIndexOver())}else e=i.getPrcValue();break;case"calculatedValue":var k=i.getValue().split(";");e="";for(var l=0;l<k.length;l++)e+=(l>0?";":"")+i.nice(k[l]);break;case"skin":i.setSkin(f[1])}else!c&&!d&&(b(e)||(e=[]),e.push(i))}),b(e)&&e.length==1&&(e=e[0]),e||this};var c={settings:{from:1,to:10,step:1,smooth:!0,limits:!0,round:0,format:{format:"#,##0.##"},value:"5;7",dimension:""},className:"jslider",selector:".jslider-",template:tmpl('<span class="<%=className%>"><table><tr><td><div class="<%=className%>-bg"><i class="l"></i><i class="r"></i><i class="v"></i></div><div class="<%=className%>-pointer"></div><div class="<%=className%>-pointer <%=className%>-pointer-to"></div><div class="<%=className%>-label"><span><%=settings.from%></span></div><div class="<%=className%>-label <%=className%>-label-to"><span><%=settings.to%></span><%=settings.dimension%></div><div class="<%=className%>-value"><span></span><%=settings.dimension%></div><div class="<%=className%>-value <%=className%>-value-to"><span></span><%=settings.dimension%></div><div class="<%=className%>-scale"><%=scale%></div></td></tr></table></span>')};d.prototype.init=function(b,d){this.settings=a.extend(!0,{},c.settings,d?d:{}),this.inputNode=a(b).hide(),this.settings.interval=this.settings.to-this.settings.from,this.settings.value=this.inputNode.attr("value"),this.settings.calculate&&a.isFunction(this.settings.calculate)&&(this.nice=this.settings.calculate),this.settings.onstatechange&&a.isFunction(this.settings.onstatechange)&&(this.onstatechange=this.settings.onstatechange),this.is={init:!1},this.o={},this.create()},d.prototype.onstatechange=function(){},d.prototype.create=function(){var b=this;this.domNode=a(c.template({className:c.className,settings:{from:this.nice(this.settings.from),to:this.nice(this.settings.to),dimension:this.settings.dimension},scale:this.generateScale()})),this.inputNode.after(this.domNode),this.drawScale(),this.settings.skin&&this.settings.skin.length>0&&this.setSkin(this.settings.skin),this.sizes={domWidth:this.domNode.width(),domOffset:this.domNode.offset()},a.extend(this.o,{pointers:{},labels:{0:{o:this.domNode.find(c.selector+"value").not(c.selector+"value-to")},1:{o:this.domNode.find(c.selector+"value").filter(c.selector+"value-to")}},limits:{0:this.domNode.find(c.selector+"label").not(c.selector+"label-to"),1:this.domNode.find(c.selector+"label").filter(c.selector+"label-to")}}),a.extend(this.o.labels[0],{value:this.o.labels[0].o.find("span")}),a.extend(this.o.labels[1],{value:this.o.labels[1].o.find("span")}),b.settings.value.split(";")[1]||(this.settings.single=!0,this.domNode.addDependClass("single")),b.settings.limits||this.domNode.addDependClass("limitless"),this.domNode.find(c.selector+"pointer").each(function(a){var c=b.settings.value.split(";")[a];if(c){b.o.pointers[a]=new e(this,a,b);var d=b.settings.value.split(";")[a-1];d&&new Number(c)<new Number(d)&&(c=d),c=c<b.settings.from?b.settings.from:c,c=c>b.settings.to?b.settings.to:c,b.o.pointers[a].set(c,!0)}}),this.o.value=this.domNode.find(".v"),this.is.init=!0,a.each(this.o.pointers,function(a){b.redraw(this)}),function(b){a(window).resize(function(){b.onresize()})}(this)},d.prototype.setSkin=function(a){this.skin_&&this.domNode.removeDependClass(this.skin_,"_"),this.domNode.addDependClass(this.skin_=a,"_")},d.prototype.setPointersIndex=function(b){a.each(this.getPointers(),function(a){this.index(a)})},d.prototype.getPointers=function(){return this.o.pointers},d.prototype.generateScale=function(){if(this.settings.scale&&this.settings.scale.length>0){var a="",b=this.settings.scale,c=Math.round(100/(b.length-1)*10)/10;for(var d=0;d<b.length;d++)a+='<span style="left: '+d*c+'%">'+(b[d]!="|"?"<ins>"+b[d]+"</ins>":"")+"</span>";return a}return""},d.prototype.drawScale=function(){this.domNode.find(c.selector+"scale span ins").each(function(){a(this).css({marginLeft:-a(this).outerWidth()/2})})},d.prototype.onresize=function(){var b=this;this.sizes={domWidth:this.domNode.width(),domOffset:this.domNode.offset()},a.each(this.o.pointers,function(a){b.redraw(this)})},d.prototype.update=function(){this.onresize(),this.drawScale()},d.prototype.limits=function(a,b){if(!this.settings.smooth){var c=this.settings.step*100/this.settings.interval;a=Math.round(a/c)*c}var d=this.o.pointers[1-b.uid];return d&&b.uid&&a<d.value.prc&&(a=d.value.prc),d&&!b.uid&&a>d.value.prc&&(a=d.value.prc),a<0&&(a=0),a>100&&(a=100),Math.round(a*10)/10},d.prototype.redraw=function(a){if(!this.is.init)return!1;this.setValue(),this.o.pointers[0]&&this.o.pointers[1]&&this.o.value.css({left:this.o.pointers[0].value.prc+"%",width:this.o.pointers[1].value.prc-this.o.pointers[0].value.prc+"%"}),this.o.labels[a.uid].value.html(this.nice(a.value.origin)),this.redrawLabels(a)},d.prototype.redrawLabels=function(a){function b(a,b,d){return b.margin=-b.label/2,label_left=b.border+b.margin,label_left<0&&(b.margin-=label_left),b.border+b.label/2>c.sizes.domWidth?(b.margin=0,b.right=!0):b.right=!1,a.o.css({left:d+"%",marginLeft:b.margin,right:"auto"}),b.right&&a.o.css({left:"auto",right:0}),b}var c=this,d=this.o.labels[a.uid],e=a.value.prc,f={label:d.o.outerWidth(),right:!1,border:e*this.sizes.domWidth/100};if(!this.settings.single){var g=this.o.pointers[1-a.uid],h=this.o.labels[g.uid];switch(a.uid){case 0:f.border+f.label/2>h.o.offset().left-this.sizes.domOffset.left?(h.o.css({visibility:"hidden"}),h.value.html(this.nice(g.value.origin)),d.o.css({visibility:"visible"}),e=(g.value.prc-e)/2+e,g.value.prc!=a.value.prc&&(d.value.html(this.nice(a.value.origin)+"&nbsp;&ndash;&nbsp;"+this.nice(g.value.origin)),f.label=d.o.outerWidth(),f.border=e*this.sizes.domWidth/100)):h.o.css({visibility:"visible"});break;case 1:f.border-f.label/2<h.o.offset().left-this.sizes.domOffset.left+h.o.outerWidth()?(h.o.css({visibility:"hidden"}),h.value.html(this.nice(g.value.origin)),d.o.css({visibility:"visible"}),e=(e-g.value.prc)/2+g.value.prc,g.value.prc!=a.value.prc&&(d.value.html(this.nice(g.value.origin)+"&nbsp;&ndash;&nbsp;"+this.nice(a.value.origin)),f.label=d.o.outerWidth(),f.border=e*this.sizes.domWidth/100)):h.o.css({visibility:"visible"})}}f=b(d,f,e);if(h){var f={label:h.o.outerWidth(),right:!1,border:g.value.prc*this.sizes.domWidth/100};f=b(h,f,g.value.prc)}this.redrawLimits()},d.prototype.redrawLimits=function(){if(this.settings.limits){var a=[!0,!0];for(key in this.o.pointers)if(!this.settings.single||key==0){var b=this.o.pointers[key],c=this.o.labels[b.uid],d=c.o.offset().left-this.sizes.domOffset.left,e=this.o.limits[0];d<e.outerWidth()&&(a[0]=!1);var e=this.o.limits[1];d+c.o.outerWidth()>this.sizes.domWidth-e.outerWidth()&&(a[1]=!1)}for(var f=0;f<a.length;f++)a[f]?this.o.limits[f].fadeIn("fast"):this.o.limits[f].fadeOut("fast")}},d.prototype.setValue=function(){var a=this.getValue();this.inputNode.attr("value",a),this.onstatechange.call(this,a)},d.prototype.getValue=function(){if(!this.is.init)return!1;var b=this,c="";return a.each(this.o.pointers,function(a){this.value.prc!=undefined&&!isNaN(this.value.prc)&&(c+=(a>0?";":"")+b.prcToValue(this.value.prc))}),c},d.prototype.getPrcValue=function(){if(!this.is.init)return!1;var b=this,c="";return a.each(this.o.pointers,function(a){this.value.prc!=undefined&&!isNaN(this.value.prc)&&(c+=(a>0?";":"")+this.value.prc)}),c},d.prototype.prcToValue=function(a){if(this.settings.heterogeneity&&this.settings.heterogeneity.length>0){var b=this.settings.heterogeneity,c=0,d=this.settings.from;for(var e=0;e<=b.length;e++){if(b[e])var f=b[e].split("/");else var f=[100,this.settings.to];f[0]=new Number(f[0]),f[1]=new Number(f[1]);if(a>=c&&a<=f[0])var g=d+(a-c)*(f[1]-d)/(f[0]-c);c=f[0],d=f[1]}}else var g=this.settings.from+a*this.settings.interval/100;return this.round(g)},d.prototype.valueToPrc=function(a,b){if(this.settings.heterogeneity&&this.settings.heterogeneity.length>0){var c=this.settings.heterogeneity,d=0,e=this.settings.from;for(var f=0;f<=c.length;f++){if(c[f])var g=c[f].split("/");else var g=[100,this.settings.to];g[0]=new Number(g[0]),g[1]=new Number(g[1]);if(a>=e&&a<=g[1])var h=b.limits(d+(a-e)*(g[0]-d)/(g[1]-e));d=g[0],e=g[1]}}else var h=b.limits((a-this.settings.from)*100/this.settings.interval);return h},d.prototype.round=function(a){return a=Math.round(a/this.settings.step)*this.settings.step,this.settings.round?a=Math.round(a*Math.pow(10,this.settings.round))/Math.pow(10,this.settings.round):a=Math.round(a),a},d.prototype.nice=function(b){return b=b.toString().replace(/,/gi,".").replace(/ /gi,""),a.formatNumber?a.formatNumber(new Number(b),this.settings.format||{}).replace(/-/gi,"&minus;"):new Number(b)},e.prototype=new Draggable,e.prototype.oninit=function(a,b,c){this.uid=b,this.parent=c,this.value={},this.settings=this.parent.settings},e.prototype.onmousedown=function(a){this._parent={offset:this.parent.domNode.offset(),width:this.parent.domNode.width()},this.ptr.addDependClass("hover"),this.setIndexOver()},e.prototype.onmousemove=function(a,b){var c=this._getPageCoords(a);this._set(this.calc(c.x))},e.prototype.onmouseup=function(b){this.parent.settings.callback&&a.isFunction(this.parent.settings.callback)&&this.parent.settings.callback.call(this.parent,this.parent.getValue()),this.ptr.removeDependClass("hover")},e.prototype.setIndexOver=function(){this.parent.setPointersIndex(1),this.index(2)},e.prototype.index=function(a){this.ptr.css({zIndex:a})},e.prototype.limits=function(a){return this.parent.limits(a,this)},e.prototype.calc=function(a){var b=this.limits((a-this._parent.offset.left)*100/this._parent.width);return b},e.prototype.set=function(a,b){this.value.origin=this.parent.round(a),this._set(this.parent.valueToPrc(a,this),b)},e.prototype._set=function(a,b){b||(this.value.origin=this.parent.prcToValue(a)),this.value.prc=a,this.ptr.css({left:a+"%"}),this.parent.redraw(this)}}(jQuery); \ No newline at end of file
diff --git a/library/jslider/css/jslider.blue.css b/library/jslider/css/jslider.blue.css
deleted file mode 100644
index ae378433c..000000000
--- a/library/jslider/css/jslider.blue.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
- .jslider_blue .jslider-bg i,
- .jslider_blue .jslider-pointer { background-image: url(../img/jslider.blue.png); }
- \ No newline at end of file
diff --git a/library/jslider/css/jslider.css b/library/jslider/css/jslider.css
deleted file mode 100644
index fe943dc0a..000000000
--- a/library/jslider/css/jslider.css
+++ /dev/null
@@ -1,39 +0,0 @@
-
- .jslider .jslider-bg i,
- .jslider .jslider-pointer { background: url(../img/jslider.png) no-repeat 0 0; }
-
- .jslider { display: block; width: 100%; height: 1em; position: relative; top: 0.6em; font-family: Arial, sans-serif; }
- .jslider table { width: 100%; border-collapse: collapse; border: 0; }
- .jslider td, .jslider th { padding: 0; vertical-align: top; text-align: left; border: 0; }
-
- .jslider table,
- .jslider table tr,
- .jslider table tr td { width: 100%; vertical-align: top; }
-
- .jslider .jslider-bg { position: relative; }
- .jslider .jslider-bg i { height: 5px; position: absolute; font-size: 0; top: 0; }
- .jslider .jslider-bg .l { width: 50%; background-position: 0 0; left: 0; background: #888; }
- .jslider .jslider-bg .r { width: 50%; left: 50%; background-position: right 0; background: #888;}
- .jslider .jslider-bg .v { position: absolute; background: url(../img/jslider.png) repeat-x 0 0; width: 60%; left: 20%; top: 0; height: 5px; background-position: 0 -20px; }
-
- .jslider .jslider-pointer { width: 13px; height: 15px; background-position: 0 -40px; position: absolute; left: 20%; top: -4px; margin-left: -6px; cursor: pointer; cursor: hand; }
- .jslider .jslider-pointer-hover { background-position: -20px -40px; }
- .jslider .jslider-pointer-to { left: 80%; }
-
- .jslider .jslider-label { font-size: 9px; line-height: 12px; color: black; opacity: 0.4; white-space: nowrap; padding: 0px 2px; position: absolute; top: -18px; left: 0px; }
- .jslider .jslider-label-to { left: auto; right: 0; }
-
- .jslider .jslider-value { font-size: 9px; white-space: nowrap; padding: 1px 2px 0; position: absolute; top: -19px; left: 20%; line-height: 12px; }
- .jslider .jslider-value-to { left: 80%; }
-
- .jslider .jslider-label small,
- .jslider .jslider-value small { position: relative; top: -0.4em; }
-
- .jslider .jslider-scale { position: relative; top: 9px; }
- .jslider .jslider-scale span { position: absolute; height: 5px; border-left: 1px solid #999; font-size: 0; }
- .jslider .jslider-scale ins { font-size: 9px; text-decoration: none; position: absolute; left: 0px; top: 5px; color: #999; }
-
- .jslider-single .jslider-pointer-to,
- .jslider-single .jslider-value-to,
- .jslider-single .jslider-bg .v,
- .jslider-limitless .jslider-label { display: none; }
diff --git a/library/jslider/css/jslider.plastic.css b/library/jslider/css/jslider.plastic.css
deleted file mode 100644
index 32b54676b..000000000
--- a/library/jslider/css/jslider.plastic.css
+++ /dev/null
@@ -1,3 +0,0 @@
-
- .jslider_plastic .jslider-bg i,
- .jslider_plastic .jslider-pointer { background-image: url(../img/jslider.plastic.png); }
diff --git a/library/jslider/css/jslider.round.css b/library/jslider/css/jslider.round.css
deleted file mode 100644
index 00ad952e6..000000000
--- a/library/jslider/css/jslider.round.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
- .jslider_round .jslider-bg i,
- .jslider_round .jslider-pointer { background-image: url(../img/jslider.round.png); }
-
- .jslider_round .jslider-pointer { width: 17px; height: 17px; top: -6px; margin-left: -8px; }
diff --git a/library/jslider/css/jslider.round.plastic.css b/library/jslider/css/jslider.round.plastic.css
deleted file mode 100644
index 4272e1fb0..000000000
--- a/library/jslider/css/jslider.round.plastic.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
- .jslider_round_plastic .jslider-bg i,
- .jslider_round_plastic .jslider-pointer { background-image: url(../img/jslider.round.plastic.png); }
-
- .jslider_round_plastic .jslider-pointer { width: 18px; height: 18px; top: -7px; margin-left: -8px; }
diff --git a/library/jslider/img/jslider.blue.png b/library/jslider/img/jslider.blue.png
deleted file mode 100644
index e3d573c12..000000000
--- a/library/jslider/img/jslider.blue.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.plastic.png b/library/jslider/img/jslider.plastic.png
deleted file mode 100644
index 39c6d6527..000000000
--- a/library/jslider/img/jslider.plastic.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.png b/library/jslider/img/jslider.png
deleted file mode 100644
index 280eb7188..000000000
--- a/library/jslider/img/jslider.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.round.plastic.png b/library/jslider/img/jslider.round.plastic.png
deleted file mode 100644
index 3604d76bd..000000000
--- a/library/jslider/img/jslider.round.plastic.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.round.png b/library/jslider/img/jslider.round.png
deleted file mode 100644
index 24153eaa3..000000000
--- a/library/jslider/img/jslider.round.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/index.html b/library/jslider/index.html
deleted file mode 100644
index 994b0783f..000000000
--- a/library/jslider/index.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="css/jslider.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.blue.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.plastic.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.round.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.round.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="js/tmpl.js"></script>
- <script type="text/javascript" src="js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="js/draggable-0.1.js"></script>
- <script type="text/javascript" src="js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; }
- .layout-slider-settings { font-size: 12px; padding-bottom: 10px; }
- .layout-slider-settings pre { font-family: Courier; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider1" type="slider" name="price" value="30000.5;60000" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider1").slider({ from: 1000, to: 100000, step: 500, smooth: true, round: 0, dimension: "&nbsp;$", skin: "plastic" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 5,
- to: 50,
- step: 2.5,
- round: 1,
- format: { format: '##.0', locale: 'de' },
- dimension: '&amp;nbsp;€'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="SliderSingle" type="slider" name="price" value="20" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#SliderSingle").slider({ from: 5, to: 50, step: 2.5, round: 1, format: { format: '##.0', locale: 'de' }, dimension: '&nbsp;€', skin: "round" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 5000,
- to: 150000,
- heterogeneity: ['50/50000'],
- step: 1000,
- dimension: '&amp;nbsp;$'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider2" type="slider" name="price" value="5000;50000" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider2").slider({ from: 5000, to: 150000, heterogeneity: ['50/50000'], step: 1000, dimension: '&nbsp;$' });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 0,
- to: 500,
- heterogeneity: ['50/100', '75/250'],
- scale: [0, '|', 50, '|' , '100', '|', 250, '|', 500],
- limits: false,
- step: 1,
- dimension: '&amp;nbsp;m&lt;small&gt;2&lt;/small&gt;'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider3" type="slider" name="area" value="25;75" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider3").slider({ from: 0, to: 500, heterogeneity: ['50/100', '75/250'], scale: [0, '|', 50, '|', '100', '|', 250, '|', 500], limits: false, step: 1, dimension: '&nbsp;m<small>2</small>', skin: "round_plastic" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 1,
- to: 30,
- heterogeneity: ['50/5', '75/15'],
- scale: [1, '|', 3, '|', '5', '|', 15, '|', 30],
- limits: false,
- step: 1,
- dimension: '',
- skin: "blue"
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider4" type="slider" name="area" value="2;10" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider4").slider({ from: 1, to: 30, heterogeneity: ['50/5', '75/15'], scale: [1, '|', 3, '|', '5', '|', 15, '|', 30], limits: false, step: 1, dimension: '', skin: "blue", callback: function( value ){ console.dir( this ); } });
- </script>
-
-
- <div class="layout-slider-settings">
-<pre>{
- from: 480,
- to: 1020,
- step: 15,
- dimension: '',
- scale: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00'],
- limits: false,
- calculate: function( value ){
- var hours = Math.floor( value / 60 );
- var mins = ( value - hours*60 );
- return (hours &lt; 10 ? "0"+hours : hours) + ":" + ( mins == 0 ? "00" : mins );
- },
- onstatechange: function( value ){
- console.dir( this );
- }
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider5" type="slider" name="area" value="600;720" />
- </div>
- <script type="text/javascript" charset="utf-8">
-
- jQuery("#Slider5").slider({ from: 480, to: 1020, step: 15, dimension: '', scale: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00'], limits: false, calculate: function( value ){
- var hours = Math.floor( value / 60 );
- var mins = ( value - hours*60 );
- return (hours < 10 ? "0"+hours : hours) + ":" + ( mins == 0 ? "00" : mins );
- }})
-
- </script>
-
- </div>
-
-
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/js/draggable-0.1.js b/library/jslider/js/draggable-0.1.js
deleted file mode 100644
index dd2688da5..000000000
--- a/library/jslider/js/draggable-0.1.js
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * draggable - Class allows to make any element draggable
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 0.1.0-BETA ($Id$)
- *
- **/
-
-(function( $ ){
-
- function Draggable(){
- this._init.apply( this, arguments );
- };
-
- Draggable.prototype.oninit = function(){
-
- };
-
- Draggable.prototype.events = function(){
-
- };
-
- Draggable.prototype.onmousedown = function(){
- this.ptr.css({ position: "absolute" });
- };
-
- Draggable.prototype.onmousemove = function( evt, x, y ){
- this.ptr.css({ left: x, top: y });
- };
-
- Draggable.prototype.onmouseup = function(){
-
- };
-
- Draggable.prototype.isDefault = {
- drag: false,
- clicked: false,
- toclick: true,
- mouseup: false
- };
-
- Draggable.prototype._init = function(){
- if( arguments.length > 0 ){
- this.ptr = $(arguments[0]);
- this.outer = $(".draggable-outer");
-
- this.is = {};
- $.extend( this.is, this.isDefault );
-
- var _offset = this.ptr.offset();
- this.d = {
- left: _offset.left,
- top: _offset.top,
- width: this.ptr.width(),
- height: this.ptr.height()
- };
-
- this.oninit.apply( this, arguments );
-
- this._events();
- }
- };
-
- Draggable.prototype._getPageCoords = function( event ){
- if( event.targetTouches && event.targetTouches[0] ){
- return { x: event.targetTouches[0].pageX, y: event.targetTouches[0].pageY };
- } else
- return { x: event.pageX, y: event.pageY };
- };
-
- Draggable.prototype._bindEvent = function( ptr, eventType, handler ){
- var self = this;
-
- if( this.supportTouches_ )
- ptr.get(0).addEventListener( this.events_[ eventType ], handler, false );
-
- else
- ptr.bind( this.events_[ eventType ], handler );
- };
-
- Draggable.prototype._events = function(){
- var self = this;
-
- this.supportTouches_ = ( $.browser.webkit && navigator.userAgent.indexOf("Mobile") != -1 );
- this.events_ = {
- "click": this.supportTouches_ ? "touchstart" : "click",
- "down": this.supportTouches_ ? "touchstart" : "mousedown",
- "move": this.supportTouches_ ? "touchmove" : "mousemove",
- "up" : this.supportTouches_ ? "touchend" : "mouseup"
- };
-
- this._bindEvent( $( document ), "move", function( event ){
- if( self.is.drag ){
- event.stopPropagation();
- event.preventDefault();
- self._mousemove( event );
- }
- });
- this._bindEvent( $( document ), "down", function( event ){
- if( self.is.drag ){
- event.stopPropagation();
- event.preventDefault();
- }
- });
- this._bindEvent( $( document ), "up", function( event ){
- self._mouseup( event );
- });
-
- this._bindEvent( this.ptr, "down", function( event ){
- self._mousedown( event );
- return false;
- });
- this._bindEvent( this.ptr, "up", function( event ){
- self._mouseup( event );
- });
-
- this.ptr.find("a")
- .click(function(){
- self.is.clicked = true;
-
- if( !self.is.toclick ){
- self.is.toclick = true;
- return false;
- }
- })
- .mousedown(function( event ){
- self._mousedown( event );
- return false;
- });
-
- this.events();
- };
-
- Draggable.prototype._mousedown = function( evt ){
- this.is.drag = true;
- this.is.clicked = false;
- this.is.mouseup = false;
-
- var _offset = this.ptr.offset();
- var coords = this._getPageCoords( evt );
- this.cx = coords.x - _offset.left;
- this.cy = coords.y - _offset.top;
-
- $.extend(this.d, {
- left: _offset.left,
- top: _offset.top,
- width: this.ptr.width(),
- height: this.ptr.height()
- });
-
- if( this.outer && this.outer.get(0) ){
- this.outer.css({ height: Math.max(this.outer.height(), $(document.body).height()), overflow: "hidden" });
- }
-
- this.onmousedown( evt );
- };
-
- Draggable.prototype._mousemove = function( evt ){
- this.is.toclick = false;
- var coords = this._getPageCoords( evt );
- this.onmousemove( evt, coords.x - this.cx, coords.y - this.cy );
- };
-
- Draggable.prototype._mouseup = function( evt ){
- var oThis = this;
-
- if( this.is.drag ){
- this.is.drag = false;
-
- if( this.outer && this.outer.get(0) ){
-
- if( $.browser.mozilla ){
- this.outer.css({ overflow: "hidden" });
- } else {
- this.outer.css({ overflow: "visible" });
- }
-
- if( $.browser.msie && $.browser.version == '6.0' ){
- this.outer.css({ height: "100%" });
- } else {
- this.outer.css({ height: "auto" });
- }
- }
-
- this.onmouseup( evt );
- }
- };
-
- window.Draggable = Draggable;
-
-})( jQuery );
diff --git a/library/jslider/js/jquery-1.7.1.js b/library/jslider/js/jquery-1.7.1.js
deleted file mode 100644
index 8ccd0ea78..000000000
--- a/library/jslider/js/jquery-1.7.1.js
+++ /dev/null
@@ -1,9266 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
- navigator = window.navigator,
- location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // A simple way to check for HTML strings or ID strings
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
-
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
- // Matches dashed string for camelizing
- rdashAlpha = /-([a-z]|[0-9])/ig,
- rmsPrefix = /^-ms-/,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return ( letter + "" ).toUpperCase();
- },
-
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // The deferred used on DOM ready
- readyList,
-
- // The ready event handler
- DOMContentLoaded,
-
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
-
- // [[Class]] -> type pairs
- class2type = {};
-
-jQuery.fn = jQuery.prototype = {
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = selector;
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = quickExpr.exec( selector );
- }
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
- doc = ( context ? context.ownerDocument || context : document );
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
-
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
-
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || rootjQuery ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.7.1",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return slice.call( this, 0 );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
-
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
- // Add the callback
- readyList.add( fn );
-
- return this;
- },
-
- eq: function( i ) {
- i = +i;
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
- // Either a released hold or an DOMready/load event and not yet ready
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.fireWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger( "ready" ).off( "ready" );
- }
- }
- },
-
- bindReady: function() {
- if ( readyList ) {
- return;
- }
-
- readyList = jQuery.Callbacks( "once memory" );
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
-
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
-
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- // A crude way of determining if an object is a window
- isWindow: function( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
- },
-
- isNumeric: function( obj ) {
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
- },
-
- type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- try {
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
- } catch ( e ) {
- // IE8,9 Will throw exceptions on certain host objects #9897
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return ( new Function( "return " + data ) )();
-
- }
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- parseXML: function( data ) {
- var xml, tmp;
- try {
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
- } catch( e ) {
- xml = undefined;
- }
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && rnotwhite.test( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction( object );
-
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
- break;
- }
- }
- }
- }
-
- return object;
- },
-
- // Use native String.trim function wherever possible
- trim: trim ?
- function( text ) {
- return text == null ?
- "" :
- trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
- },
-
- // results is for internal usage only
- makeArray: function( array, results ) {
- var ret = results || [];
-
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type( array );
-
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, array, i ) {
- var len;
-
- if ( array ) {
- if ( indexOf ) {
- return indexOf.call( array, elem, i );
- }
-
- len = array.length;
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
- for ( ; i < len; i++ ) {
- // Skip accessing in sparse arrays
- if ( i in array && array[ i ] === elem ) {
- return i;
- }
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var i = first.length,
- j = 0;
-
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [], retVal;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value, key, ret = [],
- i = 0,
- length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- if ( typeof context === "string" ) {
- var tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- var args = slice.call( arguments, 2 ),
- proxy = function() {
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Mutifunctional method to get and set values to a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
- },
-
- now: function() {
- return ( new Date() ).getTime();
- },
-
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
-
- return { browser: match[1] || "", version: match[2] || "0" };
- },
-
- sub: function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
- },
-
- browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
- var object = flagsCache[ flags ] = {},
- i, length;
- flags = flags.split( /\s+/ );
- for ( i = 0, length = flags.length; i < length; i++ ) {
- object[ flags[i] ] = true;
- }
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * flags: an optional list of space-separated flags that will change how
- * the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
- // Convert flags from String-formatted to Object-formatted
- // (we check in cache first)
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
- var // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = [],
- // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list is currently firing
- firing,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // Add one or several callbacks to the list
- add = function( args ) {
- var i,
- length,
- elem,
- type,
- actual;
- for ( i = 0, length = args.length; i < length; i++ ) {
- elem = args[ i ];
- type = jQuery.type( elem );
- if ( type === "array" ) {
- // Inspect recursively
- add( elem );
- } else if ( type === "function" ) {
- // Add if not in unique mode and callback is not in
- if ( !flags.unique || !self.has( elem ) ) {
- list.push( elem );
- }
- }
- }
- },
- // Fire callbacks
- fire = function( context, args ) {
- args = args || [];
- memory = !flags.memory || [ context, args ];
- firing = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
- memory = true; // Mark as halted
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( !flags.once ) {
- if ( stack && stack.length ) {
- memory = stack.shift();
- self.fireWith( memory[ 0 ], memory[ 1 ] );
- }
- } else if ( memory === true ) {
- self.disable();
- } else {
- list = [];
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- var length = list.length;
- add( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away, unless previous
- // firing was halted (stopOnFalse)
- } else if ( memory && memory !== true ) {
- firingStart = length;
- fire( memory[ 0 ], memory[ 1 ] );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- var args = arguments,
- argIndex = 0,
- argLength = args.length;
- for ( ; argIndex < argLength ; argIndex++ ) {
- for ( var i = 0; i < list.length; i++ ) {
- if ( args[ argIndex ] === list[ i ] ) {
- // Handle firingIndex and firingLength
- if ( firing ) {
- if ( i <= firingLength ) {
- firingLength--;
- if ( i <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- // Remove the element
- list.splice( i--, 1 );
- // If we have some unicity property then
- // we only need to do this once
- if ( flags.unique ) {
- break;
- }
- }
- }
- }
- }
- return this;
- },
- // Control if a given callback is in the list
- has: function( fn ) {
- if ( list ) {
- var i = 0,
- length = list.length;
- for ( ; i < length; i++ ) {
- if ( fn === list[ i ] ) {
- return true;
- }
- }
- }
- return false;
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory || memory === true ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( stack ) {
- if ( firing ) {
- if ( !flags.once ) {
- stack.push( [ context, args ] );
- }
- } else if ( !( flags.once && memory ) ) {
- fire( context, args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!memory;
- }
- };
-
- return self;
-};
-
-
-
-
-var // Static reference to slice
- sliceDeferred = [].slice;
-
-jQuery.extend({
-
- Deferred: function( func ) {
- var doneList = jQuery.Callbacks( "once memory" ),
- failList = jQuery.Callbacks( "once memory" ),
- progressList = jQuery.Callbacks( "memory" ),
- state = "pending",
- lists = {
- resolve: doneList,
- reject: failList,
- notify: progressList
- },
- promise = {
- done: doneList.add,
- fail: failList.add,
- progress: progressList.add,
-
- state: function() {
- return state;
- },
-
- // Deprecated
- isResolved: doneList.fired,
- isRejected: failList.fired,
-
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
- return this;
- },
- always: function() {
- deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
- return this;
- },
- pipe: function( fnDone, fnFail, fnProgress ) {
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( {
- done: [ fnDone, "resolve" ],
- fail: [ fnFail, "reject" ],
- progress: [ fnProgress, "notify" ]
- }, function( handler, data ) {
- var fn = data[ 0 ],
- action = data[ 1 ],
- returned;
- if ( jQuery.isFunction( fn ) ) {
- deferred[ handler ](function() {
- returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
- }
- });
- } else {
- deferred[ handler ]( newDefer[ action ] );
- }
- });
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- if ( obj == null ) {
- obj = promise;
- } else {
- for ( var key in promise ) {
- obj[ key ] = promise[ key ];
- }
- }
- return obj;
- }
- },
- deferred = promise.promise({}),
- key;
-
- for ( key in lists ) {
- deferred[ key ] = lists[ key ].fire;
- deferred[ key + "With" ] = lists[ key ].fireWith;
- }
-
- // Handle state
- deferred.done( function() {
- state = "resolved";
- }, failList.disable, progressList.lock ).fail( function() {
- state = "rejected";
- }, doneList.disable, progressList.lock );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( firstParam ) {
- var args = sliceDeferred.call( arguments, 0 ),
- i = 0,
- length = args.length,
- pValues = new Array( length ),
- count = length,
- pCount = length,
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
- firstParam :
- jQuery.Deferred(),
- promise = deferred.promise();
- function resolveFunc( i ) {
- return function( value ) {
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- if ( !( --count ) ) {
- deferred.resolveWith( deferred, args );
- }
- };
- }
- function progressFunc( i ) {
- return function( value ) {
- pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- deferred.notifyWith( promise, pValues );
- };
- }
- if ( length > 1 ) {
- for ( ; i < length; i++ ) {
- if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
- } else {
- --count;
- }
- }
- if ( !count ) {
- deferred.resolveWith( deferred, args );
- }
- } else if ( deferred !== firstParam ) {
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
- }
- return promise;
- }
-});
-
-
-
-
-jQuery.support = (function() {
-
- var support,
- all,
- a,
- select,
- opt,
- input,
- marginDiv,
- fragment,
- tds,
- events,
- eventName,
- i,
- isSupported,
- div = document.createElement( "div" ),
- documentElement = document.documentElement;
-
- // Preliminary tests
- div.setAttribute("className", "t");
- div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
- all = div.getElementsByTagName( "*" );
- a = div.getElementsByTagName( "a" )[ 0 ];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return {};
- }
-
- // First batch of supports tests
- select = document.createElement( "select" );
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName( "input" )[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Tests for enctype support on a form(#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
- });
- div.cloneNode( true ).fireEvent( "onclick" );
- }
-
- // Check if a radio maintains its value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute("type", "radio");
- support.radioValue = input.value === "t";
-
- input.setAttribute("checked", "checked");
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.lastChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- fragment.removeChild( input );
- fragment.appendChild( div );
-
- div.innerHTML = "";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( window.getComputedStyle ) {
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.style.width = "2px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
-
- // Technique from Juriy Zaytsev
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for( i in {
- submit: 1,
- change: 1,
- focusin: 1
- }) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
- }
- support[ i + "Bubbles" ] = isSupported;
- }
- }
-
- fragment.removeChild( div );
-
- // Null elements to avoid leaks in IE
- fragment = select = opt = marginDiv = div = input = null;
-
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, outer, inner, table, td, offsetSupport,
- conMarginTop, ptlm, vb, style, html,
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- conMarginTop = 1;
- ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
- vb = "visibility:hidden;border:0;";
- style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
- html = "<div " + style + "><div></div></div>" +
- "<table " + style + " cellpadding='0' cellspacing='0'>" +
- "<tr><td></td></tr></table>";
-
- container = document.createElement("div");
- container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
- body.insertBefore( container, body.firstChild );
-
- // Construct the test element
- div = document.createElement("div");
- container.appendChild( div );
-
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
- tds = div.getElementsByTagName( "td" );
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Check if empty table cells still have offsetWidth/Height
- // (IE <= 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- // Figure out if the W3C box model works as expected
- div.innerHTML = "";
- div.style.width = div.style.paddingLeft = "1px";
- jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
-
- if ( typeof div.style.zoom !== "undefined" ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.style.display = "inline";
- div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
-
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "<div style='width:4px;'></div>";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
- }
-
- div.style.cssText = ptlm + vb;
- div.innerHTML = html;
-
- outer = div.firstChild;
- inner = outer.firstChild;
- td = outer.nextSibling.firstChild.firstChild;
-
- offsetSupport = {
- doesNotAddBorder: ( inner.offsetTop !== 5 ),
- doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
- };
-
- inner.style.position = "fixed";
- inner.style.top = "20px";
-
- // safari subtracts parent border width here which is 5px
- offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
- inner.style.position = inner.style.top = "";
-
- outer.style.overflow = "hidden";
- outer.style.position = "relative";
-
- offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
- offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
- body.removeChild( container );
- div = container = null;
-
- jQuery.extend( support, offsetSupport );
- });
-
- return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
- rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
- cache: {},
-
- // Please use with caution
- uuid: 0,
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var privateCache, thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
- isEvents = name === "events";
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = ++jQuery.uuid;
- } else {
- id = internalKey;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
- }
- }
-
- privateCache = thisCache = cache[ id ];
-
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
-
- thisCache = thisCache.data;
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // Users should not attempt to inspect the internal events object using jQuery.data,
- // it is undocumented and subject to change. But does anyone listen? No.
- if ( isEvents && !thisCache[ name ] ) {
- return privateCache.events;
- }
-
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
-
- // First Try to find as-is property data
- ret = thisCache[ name ];
-
- // Test for null|undefined property data
- if ( ret == null ) {
-
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
- }
- } else {
- ret = thisCache;
- }
-
- return ret;
- },
-
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, i, l,
-
- // Reference to internal data cache key
- internalKey = jQuery.expando,
-
- isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
-
- // See jQuery.data for more information
- id = isNode ? elem[ internalKey ] : internalKey;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
-
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
- if ( thisCache ) {
-
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
-
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
-
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split( " " );
- }
- }
- }
-
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
- }
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject(cache[ id ]) ) {
- return;
- }
- }
-
- // Browsers that fail expando deletion also refuse to delete expandos on
- // the window, but it will allow it on all other JS objects; other browsers
- // don't care
- // Ensure that `cache` is not a window object #10080
- if ( jQuery.support.deleteExpando || !cache.setInterval ) {
- delete cache[ id ];
- } else {
- cache[ id ] = null;
- }
-
- // We destroyed the cache and need to eliminate the expando on the node to avoid
- // false lookups in the cache for entries that no longer exist
- if ( isNode ) {
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( jQuery.support.deleteExpando ) {
- delete elem[ internalKey ];
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( internalKey );
- } else {
- elem[ internalKey ] = null;
- }
- }
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- if ( elem.nodeName ) {
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- if ( match ) {
- return !(match === true || elem.getAttribute("classid") !== match);
- }
- }
-
- return true;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var parts, attr, name,
- data = null;
-
- if ( typeof key === "undefined" ) {
- if ( this.length ) {
- data = jQuery.data( this[0] );
-
- if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
- attr = this[0].attributes;
- for ( var i = 0, l = attr.length; i < l; i++ ) {
- name = attr[i].name;
-
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
-
- dataAttr( this[0], name, data[ name ] );
- }
- }
- jQuery._data( this[0], "parsedAttrs", true );
- }
- }
-
- return data;
-
- } else if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- // Try to fetch any internally stored data first
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- data = dataAttr( this[0], key, data );
- }
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
-
- } else {
- return this.each(function() {
- var self = jQuery( this ),
- args = [ parts[0], value ];
-
- self.triggerHandler( "setData" + parts[1] + "!", args );
- jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + parts[1] + "!", args );
- });
- }
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
-
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- jQuery.isNumeric( data ) ? parseFloat( data ) :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- for ( var name in obj ) {
-
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
- }
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
- var deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- defer = jQuery._data( elem, deferDataKey );
- if ( defer &&
- ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
- ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
- // Give room for hard-coded callbacks to fire first
- // and eventually mark/queue something else on the element
- setTimeout( function() {
- if ( !jQuery._data( elem, queueDataKey ) &&
- !jQuery._data( elem, markDataKey ) ) {
- jQuery.removeData( elem, deferDataKey, true );
- defer.fire();
- }
- }, 0 );
- }
-}
-
-jQuery.extend({
-
- _mark: function( elem, type ) {
- if ( elem ) {
- type = ( type || "fx" ) + "mark";
- jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
- }
- },
-
- _unmark: function( force, elem, type ) {
- if ( force !== true ) {
- type = elem;
- elem = force;
- force = false;
- }
- if ( elem ) {
- type = type || "fx";
- var key = type + "mark",
- count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
- if ( count ) {
- jQuery._data( elem, key, count );
- } else {
- jQuery.removeData( elem, key, true );
- handleQueueMarkDefer( elem, type, "mark" );
- }
- }
- },
-
- queue: function( elem, type, data ) {
- var q;
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- q = jQuery._data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- q.push( data );
- }
- }
- return q || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift(),
- hooks = {};
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
-
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- jQuery._data( elem, type + ".run", hooks );
- fn.call( elem, function() {
- jQuery.dequeue( elem, type );
- }, hooks );
- }
-
- if ( !queue.length ) {
- jQuery.removeData( elem, type + "queue " + type + ".run", true );
- handleQueueMarkDefer( elem, type, "queue" );
- }
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined ) {
- return jQuery.queue( this[0], type );
- }
- return this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, object ) {
- if ( typeof type !== "string" ) {
- object = type;
- type = undefined;
- }
- type = type || "fx";
- var defer = jQuery.Deferred(),
- elements = this,
- i = elements.length,
- count = 1,
- deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- tmp;
- function resolve() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- }
- while( i-- ) {
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
- jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
- count++;
- tmp.add( resolve );
- }
- }
- resolve();
- return defer.promise();
- }
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute,
- nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.attr );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.prop );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- classNames = value.split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
-
- } else {
- setClass = " " + elem.className + " ";
-
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classNames, i, l, elem, className, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
-
- if ( (value && typeof value === "string") || value === undefined ) {
- classNames = ( value || "" ).split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- className = (" " + elem.className + " ").replace( rclass, " " );
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[ c ] + " ", " ");
- }
- elem.className = jQuery.trim( className );
-
- } else {
- elem.className = "";
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var self = jQuery(this), val;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
- },
-
- attr: function( elem, name, value, pass ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- if ( pass && name in jQuery.attrFn ) {
- return jQuery( elem )[ name ]( value );
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
-
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, "" + value );
- return value;
- }
-
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- ret = elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, value ) {
- var propName, attrNames, name, l,
- i = 0;
-
- if ( value && elem.nodeType === 1 ) {
- attrNames = value.toLowerCase().split( rspace );
- l = attrNames.length;
-
- for ( ; i < l; i++ ) {
- name = attrNames[ i ];
-
- if ( name ) {
- propName = jQuery.propFix[ name ] || name;
-
- // See #9699 for explanation of this approach (setting first, then removal)
- jQuery.attr( elem, name, "" );
- elem.removeAttribute( getSetAttribute ? name : propName );
-
- // Set corresponding property to false for boolean attributes
- if ( rboolean.test( name ) && propName in elem ) {
- elem[ propName ] = false;
- }
- }
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- // Use the value property for back compat
- // Use the nodeHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return ( elem[ name ] = value );
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
- fixSpecified = {
- name: true,
- id: true
- };
-
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
- ret.nodeValue :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- ret = document.createAttribute( name );
- elem.setAttributeNode( ret );
- }
- return ( ret.nodeValue = value + "" );
- }
- };
-
- // Apply the nodeHook to tabindex
- jQuery.attrHooks.tabindex.set = nodeHook.set;
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- if ( value === "" ) {
- value = "false";
- }
- nodeHook.set( elem, value, name );
- }
- };
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
- });
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = "" + value );
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- return null;
- }
- });
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
- });
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
- rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
- rhoverHack = /\bhover(\.\S+)?\b/,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
- quickParse = function( selector ) {
- var quick = rquickIs.exec( selector );
- if ( quick ) {
- // 0 1 2 3
- // [ _, tag, id, class ]
- quick[1] = ( quick[1] || "" ).toLowerCase();
- quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
- }
- return quick;
- },
- quickIs = function( elem, m ) {
- var attrs = elem.attributes || {};
- return (
- (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
- (!m[2] || (attrs.id || {}).value === m[2]) &&
- (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
- );
- },
- hoverHack = function( events ) {
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- add: function( elem, types, handler, data, selector ) {
-
- var elemData, eventHandle, events,
- t, tns, type, namespaces, handleObj,
- handleObjIn, quick, handlers, special;
-
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- events = elemData.events;
- if ( !events ) {
- elemData.events = events = {};
- }
- eventHandle = elemData.handle;
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = jQuery.trim( hoverHack(types) ).split( " " );
- for ( t = 0; t < types.length; t++ ) {
-
- tns = rtypenamespace.exec( types[t] ) || [];
- type = tns[1];
- namespaces = ( tns[2] || "" ).split( "." ).sort();
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: tns[1],
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- quick: quickParse( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- handlers = events[ type ];
- if ( !handlers ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
- t, tns, type, origType, namespaces, origCount,
- j, events, special, handle, eventType, handleObj;
-
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
- for ( t = 0; t < types.length; t++ ) {
- tns = rtypenamespace.exec( types[t] ) || [];
- type = origType = tns[1];
- namespaces = tns[2];
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector? special.delegateType : special.bindType ) || type;
- eventType = events[ type ] || [];
- origCount = eventType.length;
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
- // Remove matching events
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- eventType.splice( j--, 1 );
-
- if ( handleObj.selector ) {
- eventType.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( eventType.length === 0 && origCount !== eventType.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
-
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery.removeData( elem, [ "events", "handle" ], true );
- }
- },
-
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- // Don't do events on text and comment nodes
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
- return;
- }
-
- // Event object or event type
- var type = event.type || event,
- namespaces = [],
- cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf( "!" ) >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
-
- if ( type.indexOf( "." ) >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
-
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
-
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
-
- event.type = type;
- event.isTrigger = true;
- event.exclusive = exclusive;
- event.namespace = namespaces.join( "." );
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
- // Handle a global trigger
- if ( !elem ) {
-
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- cache = jQuery.cache;
- for ( i in cache ) {
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
- }
- }
- return;
- }
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- eventPath = [[ elem, special.bindType || type ]];
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
- old = null;
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push([ cur, bubbleType ]);
- old = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( old && old === elem.ownerDocument ) {
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
- }
- }
-
- // Fire handlers on the event path
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
-
- cur = eventPath[i][0];
- event.type = eventPath[i][1];
-
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
- // Note that this is a bare JS function and not a jQuery handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- // IE<9 dies on focus/blur to hidden element (#1486)
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
-
- if ( old ) {
- elem[ ontype ] = old;
- }
- }
- }
- }
-
- return event.result;
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event || window.event );
-
- var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
- delegateCount = handlers.delegateCount,
- args = [].slice.call( arguments, 0 ),
- run_all = !event.exclusive && !event.namespace,
- handlerQueue = [],
- i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
-
- // Determine handlers that should run if there are delegated events
- // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
-
- // Pregenerate a single jQuery object for reuse with .is()
- jqcur = jQuery(this);
- jqcur.context = this.ownerDocument || this;
-
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
- selMatch = {};
- matches = [];
- jqcur[0] = cur;
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
-
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = (
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
- );
- }
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( handlers.length > delegateCount ) {
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
- }
-
- // Run delegates first; they may want to stop propagation beneath us
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
- matched = handlerQueue[ i ];
- event.currentTarget = matched.elem;
-
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
- handleObj = matched.matches[ j ];
-
- // Triggered event must either 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
-
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- return event.result;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button,
- fromElement = original.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop,
- originalEvent = event,
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = jQuery.Event( originalEvent );
-
- for ( i = copy.length; i; ) {
- prop = copy[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
- }
-
- // Target should not be a text node (#504, Safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
- if ( event.metaKey === undefined ) {
- event.metaKey = event.ctrlKey;
- }
-
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
- },
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady
- },
-
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
-
- focus: {
- delegateType: "focusin"
- },
- blur: {
- delegateType: "focusout"
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
- }
- },
-
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- },
-
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
- }
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-};
-
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
-// The 1.7 special event interface should provide all the hooks needed now.
-jQuery.event.handle = jQuery.event.dispatch;
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- if ( elem.detachEvent ) {
- elem.detachEvent( "on" + type, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj,
- selector = handleObj.selector,
- ret;
-
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !form._submit_attached ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- });
- form._submit_attached = true;
- }
- });
- // return undefined since we don't need an event listener
- },
-
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
- }
- };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
- jQuery.event.special.change = {
-
- setup: function() {
-
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- jQuery.event.simulate( "change", this, event, true );
- }
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- elem._change_attached = true;
- }
- });
- },
-
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
- }
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return rformElems.test( this.nodeName );
- }
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
- });
-}
-
-jQuery.fn.extend({
-
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
- // ( types-Object, data )
- data = selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
- }
-
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on.call( this, types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- var handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( var type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- live: function( types, data, fn ) {
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
- },
- die: function( types, fn ) {
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
- }
-
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-
- if ( rkeyEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
- }
-
- if ( rmouseEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
- }
-});
-
-
-
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache" + (Math.random() + '').replace('.', ''),
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set, seed );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
-
- if ( !expr ) {
- return [];
- }
-
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Utility function for retreiving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
- }
- }
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- first = match[2];
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- doneName = match[0];
- parent = elem.parentNode;
-
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent[ expando ] = doneName;
- }
-
- diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-Sizzle.selectors.attrMap = {};
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})();
-
-
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- isSimple = /^.[^:#\[\.,]*$/,
- slice = Array.prototype.slice,
- POS = jQuery.expr.match.POS,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var self = this,
- i, l;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- var ret = this.pushStack( "", "find", selector ),
- length, n, r;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- POS.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var ret = [], i, l, cur = this[0];
-
- // Array (deprecated as of jQuery 1.7)
- if ( jQuery.isArray( selectors ) ) {
- var level = 1;
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( i = 0; i < selectors.length; i++ ) {
-
- if ( jQuery( cur ).is( selectors[ i ] ) ) {
- ret.push({ selector: selectors[ i ], elem: cur, level: level });
- }
- }
-
- cur = cur.parentNode;
- level++;
- }
-
- return ret;
- }
-
- // String
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- cur = this[i];
-
- while ( cur ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
-
- } else {
- cur = cur.parentNode;
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
- break;
- }
- }
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
- }
-
- // index in selector
- if ( typeof elem === "string" ) {
- return jQuery.inArray( this[0], jQuery( elem ) );
- }
-
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- }
-});
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
- },
- prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, slice.call( arguments ).join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return ( elem === qualifier ) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
- });
-}
-
-
-
-
-function createSafeFragment( document ) {
- var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( list.length ) {
- safeFrag.createElement(
- list.pop()
- );
- }
- }
- return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnoInnerhtml = /<(?:script|style)/i,
- rnocache = /<(?:script|object|embed|option|style)/i,
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /\/(java|ecma)script/i,
- rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- area: [ 1, "<map>", "</map>" ],
- _default: [ 0, "", "" ]
- },
- safeFragment = createSafeFragment( document );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE can't serialize <link> and <script> tags normally
-if ( !jQuery.support.htmlSerialize ) {
- wrapMap._default = [ 1, "div<div>", "</div>" ];
-}
-
-jQuery.fn.extend({
- text: function( text ) {
- if ( jQuery.isFunction(text) ) {
- return this.each(function(i) {
- var self = jQuery( this );
-
- self.text( text.call(this, i, self.text()) );
- });
- }
-
- if ( typeof text !== "object" && text !== undefined ) {
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
- }
-
- return jQuery.text( this );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
-
- return this.each(function(i) {
- jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this );
- });
- } else if ( arguments.length ) {
- var set = jQuery.clean( arguments );
- set.push.apply( set, this.toArray() );
- return this.pushStack( set, "before", arguments );
- }
- },
-
- after: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- } else if ( arguments.length ) {
- var set = this.pushStack( this, "after", arguments );
- set.push.apply( set, jQuery.clean(arguments) );
- return set;
- }
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- jQuery.cleanData( [ elem ] );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function () {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- });
- },
-
- html: function( value ) {
- if ( value === undefined ) {
- return this[0] && this[0].nodeType === 1 ?
- this[0].innerHTML.replace(rinlinejQuery, "") :
- null;
-
- // See if we can take a shortcut and just use innerHTML
- } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
-
- value = value.replace(rxhtmlTag, "<$1></$2>");
-
- try {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( this[i].nodeType === 1 ) {
- jQuery.cleanData( this[i].getElementsByTagName("*") );
- this[i].innerHTML = value;
- }
- }
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {
- this.empty().append( value );
- }
-
- } else if ( jQuery.isFunction( value ) ) {
- this.each(function(i){
- var self = jQuery( this );
-
- self.html( value.call(this, i, self.html()) );
- });
-
- } else {
- this.empty().append( value );
- }
-
- return this;
- },
-
- replaceWith: function( value ) {
- if ( this[0] && this[0].parentNode ) {
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this), old = self.html();
- self.replaceWith( value.call( this, i, old ) );
- });
- }
-
- if ( typeof value !== "string" ) {
- value = jQuery( value ).detach();
- }
-
- return this.each(function() {
- var next = this.nextSibling,
- parent = this.parentNode;
-
- jQuery( this ).remove();
-
- if ( next ) {
- jQuery(next).before( value );
- } else {
- jQuery(parent).append( value );
- }
- });
- } else {
- return this.length ?
- this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
- this;
- }
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
- var results, first, fragment, parent,
- value = args[0],
- scripts = [];
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
- return this.each(function() {
- jQuery(this).domManip( args, table, callback, true );
- });
- }
-
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- args[0] = value.call(this, i, table ? self.html() : undefined);
- self.domManip( args, table, callback );
- });
- }
-
- if ( this[0] ) {
- parent = value && value.parentNode;
-
- // If we're in a fragment, just use that instead of building a new one
- if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
- results = { fragment: parent };
-
- } else {
- results = jQuery.buildFragment( args, this, scripts );
- }
-
- fragment = results.fragment;
-
- if ( fragment.childNodes.length === 1 ) {
- first = fragment = fragment.firstChild;
- } else {
- first = fragment.firstChild;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
-
- for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
- callback.call(
- table ?
- root(this[i], first) :
- this[i],
- // Make sure that we do not leak memory by inadvertently discarding
- // the original fragment (which might have attached data) instead of
- // using it; in addition, use the original fragment object for the last
- // item instead of first because it can end up being emptied incorrectly
- // in certain situations (Bug #8070).
- // Fragments from the fragment cache must always be cloned and never used
- // in place.
- results.cacheable || ( l > 1 && i < lastIndex ) ?
- jQuery.clone( fragment, true, true ) :
- fragment
- );
- }
- }
-
- if ( scripts.length ) {
- jQuery.each( scripts, evalScript );
- }
- }
-
- return this;
- }
-});
-
-function root( elem, cur ) {
- return jQuery.nodeName(elem, "table") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
-}
-
-function cloneCopyEvent( src, dest ) {
-
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
- return;
- }
-
- var type, i, l,
- oldData = jQuery._data( src ),
- curData = jQuery._data( dest, oldData ),
- events = oldData.events;
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( type in events ) {
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
- }
- }
- }
-
- // make the cloned public data object a copy from the original
- if ( curData.data ) {
- curData.data = jQuery.extend( {}, curData.data );
- }
-}
-
-function cloneFixAttributes( src, dest ) {
- var nodeName;
-
- // We do not need to do anything for non-Elements
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- // clearAttributes removes the attributes, which we don't want,
- // but also removes the attachEvent events, which we *do* want
- if ( dest.clearAttributes ) {
- dest.clearAttributes();
- }
-
- // mergeAttributes, in contrast, only merges back on the
- // original attributes, not the events
- if ( dest.mergeAttributes ) {
- dest.mergeAttributes( src );
- }
-
- nodeName = dest.nodeName.toLowerCase();
-
- // IE6-8 fail to clone children inside object elements that use
- // the proprietary classid attribute value (rather than the type
- // attribute) to identify the type of content to display
- if ( nodeName === "object" ) {
- dest.outerHTML = src.outerHTML;
-
- } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
- // IE6-8 fails to persist the checked state of a cloned checkbox
- // or radio button. Worse, IE6-7 fail to give the cloned element
- // a checked appearance if the defaultChecked value isn't also set
- if ( src.checked ) {
- dest.defaultChecked = dest.checked = src.checked;
- }
-
- // IE6-7 get confused and end up setting the value of a cloned
- // checkbox/radio button to an empty string instead of "on"
- if ( dest.value !== src.value ) {
- dest.value = src.value;
- }
-
- // IE6-8 fails to return the selected option to the default selected
- // state when cloning options
- } else if ( nodeName === "option" ) {
- dest.selected = src.defaultSelected;
-
- // IE6-8 fails to set the defaultValue to the correct value when
- // cloning other types of input fields
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
- }
-
- // Event data gets referenced instead of copied if the expando
- // gets copied too
- dest.removeAttribute( jQuery.expando );
-}
-
-jQuery.buildFragment = function( args, nodes, scripts ) {
- var fragment, cacheable, cacheresults, doc,
- first = args[ 0 ];
-
- // nodes may contain either an explicit document object,
- // a jQuery collection or context object.
- // If nodes[0] contains a valid object to assign to doc
- if ( nodes && nodes[0] ) {
- doc = nodes[0].ownerDocument || nodes[0];
- }
-
- // Ensure that an attr object doesn't incorrectly stand in as a document object
- // Chrome and Firefox seem to allow this to occur and will throw exception
- // Fixes #8950
- if ( !doc.createDocumentFragment ) {
- doc = document;
- }
-
- // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
- // Cloning options loses the selected state, so don't cache them
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
- // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
- if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
- first.charAt(0) === "<" && !rnocache.test( first ) &&
- (jQuery.support.checkClone || !rchecked.test( first )) &&
- (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
-
- cacheable = true;
-
- cacheresults = jQuery.fragments[ first ];
- if ( cacheresults && cacheresults !== 1 ) {
- fragment = cacheresults;
- }
- }
-
- if ( !fragment ) {
- fragment = doc.createDocumentFragment();
- jQuery.clean( args, doc, fragment, scripts );
- }
-
- if ( cacheable ) {
- jQuery.fragments[ first ] = cacheresults ? fragment : 1;
- }
-
- return { fragment: fragment, cacheable: cacheable };
-};
-
-jQuery.fragments = {};
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var ret = [],
- insert = jQuery( selector ),
- parent = this.length === 1 && this[0].parentNode;
-
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
- insert[ original ]( this[0] );
- return this;
-
- } else {
- for ( var i = 0, l = insert.length; i < l; i++ ) {
- var elems = ( i > 0 ? this.clone(true) : this ).get();
- jQuery( insert[i] )[ original ]( elems );
- ret = ret.concat( elems );
- }
-
- return this.pushStack( ret, name, insert.selector );
- }
- };
-});
-
-function getAll( elem ) {
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
- return elem.getElementsByTagName( "*" );
-
- } else if ( typeof elem.querySelectorAll !== "undefined" ) {
- return elem.querySelectorAll( "*" );
-
- } else {
- return [];
- }
-}
-
-// Used in clean, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
- if ( elem.type === "checkbox" || elem.type === "radio" ) {
- elem.defaultChecked = elem.checked;
- }
-}
-// Finds all inputs and passes them to fixDefaultChecked
-function findInputs( elem ) {
- var nodeName = ( elem.nodeName || "" ).toLowerCase();
- if ( nodeName === "input" ) {
- fixDefaultChecked( elem );
- // Skip scripts, get other children
- } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
- jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
- }
-}
-
-// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
-function shimCloneNode( elem ) {
- var div = document.createElement( "div" );
- safeFragment.appendChild( div );
-
- div.innerHTML = elem.outerHTML;
- return div.firstChild;
-}
-
-jQuery.extend({
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var srcElements,
- destElements,
- i,
- // IE<=8 does not properly clone detached, unknown element nodes
- clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
- elem.cloneNode( true ) :
- shimCloneNode( elem );
-
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
- // IE copies events bound via attachEvent when using cloneNode.
- // Calling detachEvent on the clone will also remove the events
- // from the original. In order to get around this, we use some
- // proprietary methods to clear the events. Thanks to MooTools
- // guys for this hotness.
-
- cloneFixAttributes( elem, clone );
-
- // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- // Weird iteration because IE will replace the length property
- // with an element if you are cloning the body and one of the
- // elements on the page has a name or id of "length"
- for ( i = 0; srcElements[i]; ++i ) {
- // Ensure that the destination node is not null; Fixes #9587
- if ( destElements[i] ) {
- cloneFixAttributes( srcElements[i], destElements[i] );
- }
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- cloneCopyEvent( elem, clone );
-
- if ( deepDataAndEvents ) {
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- for ( i = 0; srcElements[i]; ++i ) {
- cloneCopyEvent( srcElements[i], destElements[i] );
- }
- }
- }
-
- srcElements = destElements = null;
-
- // Return the cloned set
- return clone;
- },
-
- clean: function( elems, context, fragment, scripts ) {
- var checkScriptType;
-
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" ) {
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
- }
-
- var ret = [], j;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( typeof elem === "number" ) {
- elem += "";
- }
-
- if ( !elem ) {
- continue;
- }
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- if ( !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
- } else {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, "<$1></$2>");
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
- wrap = wrapMap[ tag ] || wrapMap._default,
- depth = wrap[0],
- div = context.createElement("div");
-
- // Append wrapper element to unknown element safe doc fragment
- if ( context === document ) {
- // Use the fragment we've already created for this document
- safeFragment.appendChild( div );
- } else {
- // Use a fragment created with the owner document
- createSafeFragment( context ).appendChild( div );
- }
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = rtbody.test(elem),
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
-
- for ( j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
- }
- }
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
- }
-
- elem = div.childNodes;
- }
- }
-
- // Resets defaultChecked for any radios and checkboxes
- // about to be appended to the DOM in IE 6/7 (#8060)
- var len;
- if ( !jQuery.support.appendChecked ) {
- if ( elem[0] && typeof (len = elem.length) === "number" ) {
- for ( j = 0; j < len; j++ ) {
- findInputs( elem[j] );
- }
- } else {
- findInputs( elem );
- }
- }
-
- if ( elem.nodeType ) {
- ret.push( elem );
- } else {
- ret = jQuery.merge( ret, elem );
- }
- }
-
- if ( fragment ) {
- checkScriptType = function( elem ) {
- return !elem.type || rscriptType.test( elem.type );
- };
- for ( i = 0; ret[i]; i++ ) {
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-
- } else {
- if ( ret[i].nodeType === 1 ) {
- var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
-
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
- }
- fragment.appendChild( ret[i] );
- }
- }
- }
-
- return ret;
- },
-
- cleanData: function( elems ) {
- var data, id,
- cache = jQuery.cache,
- special = jQuery.event.special,
- deleteExpando = jQuery.support.deleteExpando;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
- continue;
- }
-
- id = elem[ jQuery.expando ];
-
- if ( id ) {
- data = cache[ id ];
-
- if ( data && data.events ) {
- for ( var type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
-
- // Null the DOM reference to avoid IE6/7/8 leak (#7054)
- if ( data.handle ) {
- data.handle.elem = null;
- }
- }
-
- if ( deleteExpando ) {
- delete elem[ jQuery.expando ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- }
-
- delete cache[ id ];
- }
- }
- }
-});
-
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
-
-
-
-
-var ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity=([^)]*)/,
- // fixed for IE9, see #8346
- rupper = /([A-Z]|^ms)/g,
- rnumpx = /^-?\d+(?:px)?$/i,
- rnum = /^-?\d/,
- rrelNum = /^([\-+])=([\-+.\de]+)/,
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssWidth = [ "Left", "Right" ],
- cssHeight = [ "Top", "Bottom" ],
- curCSS,
-
- getComputedStyle,
- currentStyle;
-
-jQuery.fn.css = function( name, value ) {
- // Setting 'undefined' is a no-op
- if ( arguments.length === 2 && value === undefined ) {
- return this;
- }
-
- return jQuery.access( this, name, value, true, function( elem, name, value ) {
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- });
-};
-
-jQuery.extend({
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity", "opacity" );
- return ret === "" ? "1" : ret;
-
- } else {
- return elem.style.opacity;
- }
- }
- }
- },
-
- // Exclude the following css properties to add px
- cssNumber: {
- "fillOpacity": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- // normalize float css property
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, origName = jQuery.camelCase( name ),
- style = elem.style, hooks = jQuery.cssHooks[ origName ];
-
- name = jQuery.cssProps[ origName ] || origName;
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // convert relative number strings (+= or -=) to relative numbers. #7345
- if ( type === "string" && (ret = rrelNum.exec( value )) ) {
- value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
- // Fixes bug #9237
- type = "number";
- }
-
- // Make sure that NaN and null values aren't set. See: #7116
- if ( value == null || type === "number" && isNaN( value ) ) {
- return;
- }
-
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
- value += "px";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
- }
-
- } else {
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, extra ) {
- var ret, hooks;
-
- // Make sure that we're working with the right name
- name = jQuery.camelCase( name );
- hooks = jQuery.cssHooks[ name ];
- name = jQuery.cssProps[ name ] || name;
-
- // cssFloat needs a special treatment
- if ( name === "cssFloat" ) {
- name = "float";
- }
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
- return ret;
-
- // Otherwise, if a way to get the computed value exists, use that
- } else if ( curCSS ) {
- return curCSS( elem, name );
- }
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
-
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
- }
-});
-
-// DEPRECATED, Use jQuery.css() instead
-jQuery.curCSS = jQuery.css;
-
-jQuery.each(["height", "width"], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- var val;
-
- if ( computed ) {
- if ( elem.offsetWidth !== 0 ) {
- return getWH( elem, name, extra );
- } else {
- jQuery.swap( elem, cssShow, function() {
- val = getWH( elem, name, extra );
- });
- }
-
- return val;
- }
- },
-
- set: function( elem, value ) {
- if ( rnumpx.test( value ) ) {
- // ignore negative width and height values #1599
- value = parseFloat( value );
-
- if ( value >= 0 ) {
- return value + "px";
- }
-
- } else {
- return value;
- }
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( parseFloat( RegExp.$1 ) / 100 ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle,
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
-
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
- // style.removeAttribute is IE Only, but so apparently is this code path...
- style.removeAttribute( "filter" );
-
- // if there there is no filter style applied in a css rule, we are done
- if ( currentStyle && !currentStyle.filter ) {
- return;
- }
- }
-
- // otherwise, set new filter values
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-jQuery(function() {
- // This hook cannot be added until DOM ready because the support test
- // for it is not run until after DOM ready
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- var ret;
- jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- ret = curCSS( elem, "margin-right", "marginRight" );
- } else {
- ret = elem.style.marginRight;
- }
- });
- return ret;
- }
- };
- }
-});
-
-if ( document.defaultView && document.defaultView.getComputedStyle ) {
- getComputedStyle = function( elem, name ) {
- var ret, defaultView, computedStyle;
-
- name = name.replace( rupper, "-$1" ).toLowerCase();
-
- if ( (defaultView = elem.ownerDocument.defaultView) &&
- (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
- ret = computedStyle.getPropertyValue( name );
- if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
- ret = jQuery.style( elem, name );
- }
- }
-
- return ret;
- };
-}
-
-if ( document.documentElement.currentStyle ) {
- currentStyle = function( elem, name ) {
- var left, rsLeft, uncomputed,
- ret = elem.currentStyle && elem.currentStyle[ name ],
- style = elem.style;
-
- // Avoid setting ret to empty string here
- // so we don't default to auto
- if ( ret === null && style && (uncomputed = style[ name ]) ) {
- ret = uncomputed;
- }
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
-
- // Remember the original values
- left = style.left;
- rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- elem.runtimeStyle.left = elem.currentStyle.left;
- }
- style.left = name === "fontSize" ? "1em" : ( ret || 0 );
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret === "" ? "auto" : ret;
- };
-}
-
-curCSS = getComputedStyle || currentStyle;
-
-function getWH( elem, name, extra ) {
-
- // Start with offset property
- var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- which = name === "width" ? cssWidth : cssHeight,
- i = 0,
- len = which.length;
-
- if ( val > 0 ) {
- if ( extra !== "border" ) {
- for ( ; i < len; i++ ) {
- if ( !extra ) {
- val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
- } else {
- val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
- }
- }
- }
-
- return val + "px";
- }
-
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, name );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ] || 0;
- }
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
-
- // Add padding, border, margin
- if ( extra ) {
- for ( ; i < len; i++ ) {
- val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
- if ( extra !== "padding" ) {
- val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
- }
- }
- }
-
- return val + "px";
-}
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- var width = elem.offsetWidth,
- height = elem.offsetHeight;
-
- return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-
-
-
-
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rhash = /#.*$/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
- rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
- rquery = /\?/,
- rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
- rselectTextarea = /^(?:select|textarea)/i,
- rspacesAjax = /\s+/,
- rts = /([?&])_=[^&]*/,
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Document location
- ajaxLocation,
-
- // Document location segments
- ajaxLocParts,
-
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
- allTypes = ["*/"] + ["*"];
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
- ajaxLocation = location.href;
-} catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement( "a" );
- ajaxLocation.href = "";
- ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- if ( jQuery.isFunction( func ) ) {
- var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
- i = 0,
- length = dataTypes.length,
- dataType,
- list,
- placeBefore;
-
- // For each dataType in the dataTypeExpression
- for ( ; i < length; i++ ) {
- dataType = dataTypes[ i ];
- // We control if we're asked to add before
- // any existing element
- placeBefore = /^\+/.test( dataType );
- if ( placeBefore ) {
- dataType = dataType.substr( 1 ) || "*";
- }
- list = structure[ dataType ] = structure[ dataType ] || [];
- // then we add to the structure accordingly
- list[ placeBefore ? "unshift" : "push" ]( func );
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
- dataType /* internal */, inspected /* internal */ ) {
-
- dataType = dataType || options.dataTypes[ 0 ];
- inspected = inspected || {};
-
- inspected[ dataType ] = true;
-
- var list = structure[ dataType ],
- i = 0,
- length = list ? list.length : 0,
- executeOnly = ( structure === prefilters ),
- selection;
-
- for ( ; i < length && ( executeOnly || !selection ); i++ ) {
- selection = list[ i ]( options, originalOptions, jqXHR );
- // If we got redirected to another dataType
- // we try there if executing only and not done already
- if ( typeof selection === "string" ) {
- if ( !executeOnly || inspected[ selection ] ) {
- selection = undefined;
- } else {
- options.dataTypes.unshift( selection );
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, selection, inspected );
- }
- }
- }
- // If we're only executing or nothing was selected
- // we try the catchall dataType if not done already
- if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, "*", inspected );
- }
- // unnecessary when only executing (prefilters)
- // but it'll be ignored by the caller in that case
- return selection;
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
- var key, deep,
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
- for ( key in src ) {
- if ( src[ key ] !== undefined ) {
- ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
- }
- }
- if ( deep ) {
- jQuery.extend( true, target, deep );
- }
-}
-
-jQuery.fn.extend({
- load: function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
-
- // Don't do a request if no elements are being requested
- } else if ( !this.length ) {
- return this;
- }
-
- var off = url.indexOf( " " );
- if ( off >= 0 ) {
- var selector = url.slice( off, url.length );
- url = url.slice( 0, off );
- }
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params ) {
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( typeof params === "object" ) {
- params = jQuery.param( params, jQuery.ajaxSettings.traditional );
- type = "POST";
- }
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- // Complete callback (responseText is used internally)
- complete: function( jqXHR, status, responseText ) {
- // Store the response as specified by the jqXHR object
- responseText = jqXHR.responseText;
- // If successful, inject the HTML into all the matched elements
- if ( jqXHR.isResolved() ) {
- // #4825: Get the actual response in case
- // a dataFilter is present in ajaxSettings
- jqXHR.done(function( r ) {
- responseText = r;
- });
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div>")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(responseText.replace(rscript, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- responseText );
- }
-
- if ( callback ) {
- self.each( callback, [ responseText, status, jqXHR ] );
- }
- }
- });
-
- return this;
- },
-
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
-
- serializeArray: function() {
- return this.map(function(){
- return this.elements ? jQuery.makeArray( this.elements ) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- ( this.checked || rselectTextarea.test( this.nodeName ) ||
- rinput.test( this.type ) );
- })
- .map(function( i, elem ){
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val, i ){
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
- jQuery.fn[ o ] = function( f ){
- return this.on( o, f );
- };
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
- // shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- return jQuery.ajax({
- type: method,
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- };
-});
-
-jQuery.extend({
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function( target, settings ) {
- if ( settings ) {
- // Building a settings object
- ajaxExtend( target, jQuery.ajaxSettings );
- } else {
- // Extending ajaxSettings
- settings = target;
- target = jQuery.ajaxSettings;
- }
- ajaxExtend( target, settings );
- return target;
- },
-
- ajaxSettings: {
- url: ajaxLocation,
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- text: "text/plain",
- json: "application/json, text/javascript",
- "*": allTypes
- },
-
- contents: {
- xml: /xml/,
- html: /html/,
- json: /json/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText"
- },
-
- // List of data converters
- // 1) key format is "source_type destination_type" (a single space in-between)
- // 2) the catchall symbol "*" can be used for source_type
- converters: {
-
- // Convert anything to text
- "* text": window.String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- },
-
- // For options that shouldn't be deep extended:
- // you can add your own custom options here if
- // and when you create one that shouldn't be
- // deep extended (see ajaxExtend)
- flatOptions: {
- context: true,
- url: true
- }
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
- // Callbacks context
- callbackContext = s.context || s,
- // Context for global events
- // It's the callbackContext if one was provided in the options
- // and if it's a DOM node or a jQuery collection
- globalEventContext = callbackContext !== s &&
- ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
- jQuery( callbackContext ) : jQuery.event,
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery.Callbacks( "once memory" ),
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
- // ifModified key
- ifModifiedKey,
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
- // Response headers
- responseHeadersString,
- responseHeaders,
- // transport
- transport,
- // timeout handle
- timeoutTimer,
- // Cross-domain detection vars
- parts,
- // The jqXHR state
- state = 0,
- // To know if global events are to be dispatched
- fireGlobals,
- // Loop variable
- i,
- // Fake xhr
- jqXHR = {
-
- readyState: 0,
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- if ( !state ) {
- var lname = name.toLowerCase();
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match === undefined ? null : match;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- statusText = statusText || "abort";
- if ( transport ) {
- transport.abort( statusText );
- }
- done( 0, statusText );
- return this;
- }
- };
-
- // Callback for when everything is done
- // It is defined here because jslint complains if it is declared
- // at the end of the function (which would be more logical and readable)
- function done( status, nativeStatusText, responses, headers ) {
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status > 0 ? 4 : 0;
-
- var isSuccess,
- success,
- error,
- statusText = nativeStatusText,
- response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
- lastModified,
- etag;
-
- // If successful, handle type chaining
- if ( status >= 200 && status < 300 || status === 304 ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
-
- if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
- jQuery.lastModified[ ifModifiedKey ] = lastModified;
- }
- if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
- jQuery.etag[ ifModifiedKey ] = etag;
- }
- }
-
- // If not modified
- if ( status === 304 ) {
-
- statusText = "notmodified";
- isSuccess = true;
-
- // If we have data
- } else {
-
- try {
- success = ajaxConvert( s, response );
- statusText = "success";
- isSuccess = true;
- } catch(e) {
- // We have a parsererror
- statusText = "parsererror";
- error = e;
- }
- }
- } else {
- // We extract error from statusText
- // then normalize statusText and status for non-aborts
- error = statusText;
- if ( !statusText || status ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = "" + ( nativeStatusText || statusText );
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
- }
-
- // Attach deferreds
- deferred.promise( jqXHR );
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
- jqXHR.complete = completeDeferred.add;
-
- // Status-dependent callbacks
- jqXHR.statusCode = function( map ) {
- if ( map ) {
- var tmp;
- if ( state < 2 ) {
- for ( tmp in map ) {
- statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
- }
- } else {
- tmp = map[ jqXHR.status ];
- jqXHR.then( tmp, tmp );
- }
- }
- return this;
- };
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
- // We also use the url parameter if available
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
-
- // Determine if a cross-domain request is in order
- if ( s.crossDomain == null ) {
- parts = rurl.exec( s.url.toLowerCase() );
- s.crossDomain = !!( parts &&
- ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
- ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
- );
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefiler, stop there
- if ( state === 2 ) {
- return false;
- }
-
- // We can fire global events as of now if asked to
- fireGlobals = s.global;
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
- // #9682: remove data so that it's not used in an eventual retry
- delete s.data;
- }
-
- // Get ifModifiedKey before adding the anti-cache parameter
- ifModifiedKey = s.url;
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
-
- var ts = jQuery.now(),
- // try replacing _= if it is there
- ret = s.url.replace( rts, "$1_=" + ts );
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- ifModifiedKey = ifModifiedKey || s.url;
- if ( jQuery.lastModified[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
- }
- if ( jQuery.etag[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
- }
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
- // Abort if not done already
- jqXHR.abort();
- return false;
-
- }
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = setTimeout( function(){
- jqXHR.abort( "timeout" );
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch (e) {
- // Propagate exception as error if not done
- if ( state < 2 ) {
- done( -1, e );
- // Simply rethrow otherwise
- } else {
- throw e;
- }
- }
- }
-
- return jqXHR;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a, traditional ) {
- var s = [],
- add = function( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : value;
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( var prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
- }
-});
-
-function buildParams( prefix, obj, traditional, add ) {
- if ( jQuery.isArray( obj ) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
- }
- });
-
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
- // Serialize object item.
- for ( var name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-
-// This is still on the jQuery object... for now
-// Want to move this to jQuery.ajax some day
-jQuery.extend({
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {}
-
-});
-
-/* Handles responses to an ajax request:
- * - sets all responseXXX fields accordingly
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
- var contents = s.contents,
- dataTypes = s.dataTypes,
- responseFields = s.responseFields,
- ct,
- type,
- finalDataType,
- firstDataType;
-
- // Fill responseXXX fields
- for ( type in responseFields ) {
- if ( type in responses ) {
- jqXHR[ responseFields[type] ] = responses[ type ];
- }
- }
-
- // Remove auto dataType and get content-type in the process
- while( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-// Chain conversions given the request and the original response
-function ajaxConvert( s, response ) {
-
- // Apply the dataFilter if provided
- if ( s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- var dataTypes = s.dataTypes,
- converters = {},
- i,
- key,
- length = dataTypes.length,
- tmp,
- // Current and previous dataTypes
- current = dataTypes[ 0 ],
- prev,
- // Conversion expression
- conversion,
- // Conversion function
- conv,
- // Conversion functions (transitive conversion)
- conv1,
- conv2;
-
- // For each dataType in the chain
- for ( i = 1; i < length; i++ ) {
-
- // Create converters map
- // with lowercased keys
- if ( i === 1 ) {
- for ( key in s.converters ) {
- if ( typeof key === "string" ) {
- converters[ key.toLowerCase() ] = s.converters[ key ];
- }
- }
- }
-
- // Get the dataTypes
- prev = current;
- current = dataTypes[ i ];
-
- // If current is auto dataType, update it to prev
- if ( current === "*" ) {
- current = prev;
- // If no auto and dataTypes are actually different
- } else if ( prev !== "*" && prev !== current ) {
-
- // Get the converter
- conversion = prev + " " + current;
- conv = converters[ conversion ] || converters[ "* " + current ];
-
- // If there is no direct converter, search transitively
- if ( !conv ) {
- conv2 = undefined;
- for ( conv1 in converters ) {
- tmp = conv1.split( " " );
- if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
- conv2 = converters[ tmp[1] + " " + current ];
- if ( conv2 ) {
- conv1 = converters[ conv1 ];
- if ( conv1 === true ) {
- conv = conv2;
- } else if ( conv2 === true ) {
- conv = conv1;
- }
- break;
- }
- }
- }
- }
- // If we found no converter, dispatch an error
- if ( !( conv || conv2 ) ) {
- jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
- }
- // If found converter is not an equivalence
- if ( conv !== true ) {
- // Convert with 1 or 2 converters accordingly
- response = conv ? conv( response ) : conv2( conv1(response) );
- }
- }
- }
- return response;
-}
-
-
-
-
-var jsc = jQuery.now(),
- jsre = /(\=)\?(&|$)|\?\?/i;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
- jsonp: "callback",
- jsonpCallback: function() {
- return jQuery.expando + "_" + ( jsc++ );
- }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
- ( typeof s.data === "string" );
-
- if ( s.dataTypes[ 0 ] === "jsonp" ||
- s.jsonp !== false && ( jsre.test( s.url ) ||
- inspectData && jsre.test( s.data ) ) ) {
-
- var responseContainer,
- jsonpCallback = s.jsonpCallback =
- jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
- previous = window[ jsonpCallback ],
- url = s.url,
- data = s.data,
- replace = "$1" + jsonpCallback + "$2";
-
- if ( s.jsonp !== false ) {
- url = url.replace( jsre, replace );
- if ( s.url === url ) {
- if ( inspectData ) {
- data = data.replace( jsre, replace );
- }
- if ( s.data === data ) {
- // Add callback manually
- url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
- }
- }
- }
-
- s.url = url;
- s.data = data;
-
- // Install callback
- window[ jsonpCallback ] = function( response ) {
- responseContainer = [ response ];
- };
-
- // Clean-up function
- jqXHR.always(function() {
- // Set callback back to previous value
- window[ jsonpCallback ] = previous;
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( previous ) ) {
- window[ jsonpCallback ]( responseContainer[ 0 ] );
- }
- });
-
- // Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
- if ( !responseContainer ) {
- jQuery.error( jsonpCallback + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Delegate to script
- return "script";
- }
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
- accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /javascript|ecmascript/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- s.global = false;
- }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
-
- var script,
- head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
-
- return {
-
- send: function( _, callback ) {
-
- script = document.createElement( "script" );
-
- script.async = "async";
-
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- script.src = s.url;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function( _, isAbort ) {
-
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
-
- // Remove the script
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
-
- // Dereference the script
- script = undefined;
-
- // Callback if not abort
- if ( !isAbort ) {
- callback( 200, "success" );
- }
- }
- };
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
- },
-
- abort: function() {
- if ( script ) {
- script.onload( 0, 1 );
- }
- }
- };
- }
-});
-
-
-
-
-var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
- xhrOnUnloadAbort = window.ActiveXObject ? function() {
- // Abort all pending requests
- for ( var key in xhrCallbacks ) {
- xhrCallbacks[ key ]( 0, 1 );
- }
- } : false,
- xhrId = 0,
- xhrCallbacks;
-
-// Functions to create xhrs
-function createStandardXHR() {
- try {
- return new window.XMLHttpRequest();
- } catch( e ) {}
-}
-
-function createActiveXHR() {
- try {
- return new window.ActiveXObject( "Microsoft.XMLHTTP" );
- } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
- /* Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
- function() {
- return !this.isLocal && createStandardXHR() || createActiveXHR();
- } :
- // For all other browsers, use the standard XMLHttpRequest object
- createStandardXHR;
-
-// Determine support properties
-(function( xhr ) {
- jQuery.extend( jQuery.support, {
- ajax: !!xhr,
- cors: !!xhr && ( "withCredentials" in xhr )
- });
-})( jQuery.ajaxSettings.xhr() );
-
-// Create transport if the browser can provide an xhr
-if ( jQuery.support.ajax ) {
-
- jQuery.ajaxTransport(function( s ) {
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( !s.crossDomain || jQuery.support.cors ) {
-
- var callback;
-
- return {
- send: function( headers, complete ) {
-
- // Get a new xhr
- var xhr = s.xhr(),
- handle,
- i;
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open( s.type, s.url, s.async, s.username, s.password );
- } else {
- xhr.open( s.type, s.url, s.async );
- }
-
- // Apply custom fields if provided
- if ( s.xhrFields ) {
- for ( i in s.xhrFields ) {
- xhr[ i ] = s.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( s.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( s.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
- } catch( _ ) {}
-
- // Do send the request
- // This may raise an exception which is actually
- // handled in jQuery.ajax (so no try/catch here)
- xhr.send( ( s.hasContent && s.data ) || null );
-
- // Listener
- callback = function( _, isAbort ) {
-
- var status,
- statusText,
- responseHeaders,
- responses,
- xml;
-
- // Firefox throws exceptions when accessing properties
- // of an xhr when a network error occured
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
- try {
-
- // Was never called and is aborted or complete
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
- // Only called once
- callback = undefined;
-
- // Do not keep as active anymore
- if ( handle ) {
- xhr.onreadystatechange = jQuery.noop;
- if ( xhrOnUnloadAbort ) {
- delete xhrCallbacks[ handle ];
- }
- }
-
- // If it's an abort
- if ( isAbort ) {
- // Abort it manually if needed
- if ( xhr.readyState !== 4 ) {
- xhr.abort();
- }
- } else {
- status = xhr.status;
- responseHeaders = xhr.getAllResponseHeaders();
- responses = {};
- xml = xhr.responseXML;
-
- // Construct response list
- if ( xml && xml.documentElement /* #4958 */ ) {
- responses.xml = xml;
- }
- responses.text = xhr.responseText;
-
- // Firefox throws an exception when accessing
- // statusText for faulty cross-domain requests
- try {
- statusText = xhr.statusText;
- } catch( e ) {
- // We normalize with Webkit giving an empty statusText
- statusText = "";
- }
-
- // Filter status for non standard behaviors
-
- // If the request is local and we have data: assume a success
- // (success with no data won't get notified, that's the best we
- // can do given current implementations)
- if ( !status && s.isLocal && !s.crossDomain ) {
- status = responses.text ? 200 : 404;
- // IE - #1450: sometimes returns 1223 when it should be 204
- } else if ( status === 1223 ) {
- status = 204;
- }
- }
- }
- } catch( firefoxAccessException ) {
- if ( !isAbort ) {
- complete( -1, firefoxAccessException );
- }
- }
-
- // Call complete if needed
- if ( responses ) {
- complete( status, statusText, responses, responseHeaders );
- }
- };
-
- // if we're in sync mode or it's in cache
- // and has been retrieved directly (IE6 & IE7)
- // we need to manually fire the callback
- if ( !s.async || xhr.readyState === 4 ) {
- callback();
- } else {
- handle = ++xhrId;
- if ( xhrOnUnloadAbort ) {
- // Create the active xhrs callbacks list if needed
- // and attach the unload handler
- if ( !xhrCallbacks ) {
- xhrCallbacks = {};
- jQuery( window ).unload( xhrOnUnloadAbort );
- }
- // Add to list of active xhrs callbacks
- xhrCallbacks[ handle ] = callback;
- }
- xhr.onreadystatechange = callback;
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback(0,1);
- }
- }
- };
- }
- });
-}
-
-
-
-
-var elemdisplay = {},
- iframe, iframeDoc,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
- timerId,
- fxAttrs = [
- // height animations
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
- // width animations
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
- // opacity animations
- [ "opacity" ]
- ],
- fxNow;
-
-jQuery.fn.extend({
- show: function( speed, easing, callback ) {
- var elem, display;
-
- if ( speed || speed === 0 ) {
- return this.animate( genFx("show", 3), speed, easing, callback );
-
- } else {
- for ( var i = 0, j = this.length; i < j; i++ ) {
- elem = this[ i ];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
- display = elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( display === "" && jQuery.css(elem, "display") === "none" ) {
- jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- elem = this[ i ];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- if ( display === "" || display === "none" ) {
- elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
- }
- }
- }
-
- return this;
- }
- },
-
- hide: function( speed, easing, callback ) {
- if ( speed || speed === 0 ) {
- return this.animate( genFx("hide", 3), speed, easing, callback);
-
- } else {
- var elem, display,
- i = 0,
- j = this.length;
-
- for ( ; i < j; i++ ) {
- elem = this[i];
- if ( elem.style ) {
- display = jQuery.css( elem, "display" );
-
- if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
- jQuery._data( elem, "olddisplay", display );
- }
- }
- }
-
- // Set the display of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- if ( this[i].style ) {
- this[i].style.display = "none";
- }
- }
-
- return this;
- }
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2, callback ) {
- var bool = typeof fn === "boolean";
-
- if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
- this._toggle.apply( this, arguments );
-
- } else if ( fn == null || bool ) {
- this.each(function() {
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- });
-
- } else {
- this.animate(genFx("toggle", 3), fn, fn2, callback);
- }
-
- return this;
- },
-
- fadeTo: function( speed, to, easing, callback ) {
- return this.filter(":hidden").css("opacity", 0).show().end()
- .animate({opacity: to}, speed, easing, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed( speed, easing, callback );
-
- if ( jQuery.isEmptyObject( prop ) ) {
- return this.each( optall.complete, [ false ] );
- }
-
- // Do not change referenced properties as per-property easing will be lost
- prop = jQuery.extend( {}, prop );
-
- function doAnimation() {
- // XXX 'this' does not always have a nodeName when running the
- // test suite
-
- if ( optall.queue === false ) {
- jQuery._mark( this );
- }
-
- var opt = jQuery.extend( {}, optall ),
- isElement = this.nodeType === 1,
- hidden = isElement && jQuery(this).is(":hidden"),
- name, val, p, e,
- parts, start, end, unit,
- method;
-
- // will store per property easing and be used to determine when an animation is complete
- opt.animatedProperties = {};
-
- for ( p in prop ) {
-
- // property name normalization
- name = jQuery.camelCase( p );
- if ( p !== name ) {
- prop[ name ] = prop[ p ];
- delete prop[ p ];
- }
-
- val = prop[ name ];
-
- // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
- if ( jQuery.isArray( val ) ) {
- opt.animatedProperties[ name ] = val[ 1 ];
- val = prop[ name ] = val[ 0 ];
- } else {
- opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
- }
-
- if ( val === "hide" && hidden || val === "show" && !hidden ) {
- return opt.complete.call( this );
- }
-
- if ( isElement && ( name === "height" || name === "width" ) ) {
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE does not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height animated
- if ( jQuery.css( this, "display" ) === "inline" &&
- jQuery.css( this, "float" ) === "none" ) {
-
- // inline-level elements accept inline-block;
- // block-level elements need to be inline with layout
- if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
- this.style.display = "inline-block";
-
- } else {
- this.style.zoom = 1;
- }
- }
- }
- }
-
- if ( opt.overflow != null ) {
- this.style.overflow = "hidden";
- }
-
- for ( p in prop ) {
- e = new jQuery.fx( this, opt, p );
- val = prop[ p ];
-
- if ( rfxtypes.test( val ) ) {
-
- // Tracks whether to show or hide based on private
- // data attached to the element
- method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
- if ( method ) {
- jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
- e[ method ]();
- } else {
- e[ val ]();
- }
-
- } else {
- parts = rfxnum.exec( val );
- start = e.cur();
-
- if ( parts ) {
- end = parseFloat( parts[2] );
- unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
-
- // We need to compute starting value
- if ( unit !== "px" ) {
- jQuery.style( this, p, (end || 1) + unit);
- start = ( (end || 1) / e.cur() ) * start;
- jQuery.style( this, p, start + unit);
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] ) {
- end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
- }
-
- e.custom( start, end, unit );
-
- } else {
- e.custom( start, val, "" );
- }
- }
- }
-
- // For JS strict compliance
- return true;
- }
-
- return optall.queue === false ?
- this.each( doAnimation ) :
- this.queue( optall.queue, doAnimation );
- },
-
- stop: function( type, clearQueue, gotoEnd ) {
- if ( typeof type !== "string" ) {
- gotoEnd = clearQueue;
- clearQueue = type;
- type = undefined;
- }
- if ( clearQueue && type !== false ) {
- this.queue( type || "fx", [] );
- }
-
- return this.each(function() {
- var index,
- hadTimers = false,
- timers = jQuery.timers,
- data = jQuery._data( this );
-
- // clear marker counters if we know they won't be
- if ( !gotoEnd ) {
- jQuery._unmark( true, this );
- }
-
- function stopQueue( elem, data, index ) {
- var hooks = data[ index ];
- jQuery.removeData( elem, index, true );
- hooks.stop( gotoEnd );
- }
-
- if ( type == null ) {
- for ( index in data ) {
- if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
- stopQueue( this, data, index );
- }
- }
- } else if ( data[ index = type + ".run" ] && data[ index ].stop ){
- stopQueue( this, data, index );
- }
-
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
- if ( gotoEnd ) {
-
- // force the next step to be the last
- timers[ index ]( true );
- } else {
- timers[ index ].saveState();
- }
- hadTimers = true;
- timers.splice( index, 1 );
- }
- }
-
- // start the next in the queue if the last step wasn't forced
- // timers currently will call their complete callbacks, which will dequeue
- // but only if they were gotoEnd
- if ( !( gotoEnd && hadTimers ) ) {
- jQuery.dequeue( this, type );
- }
- });
- }
-
-});
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- setTimeout( clearFxNow, 0 );
- return ( fxNow = jQuery.now() );
-}
-
-function clearFxNow() {
- fxNow = undefined;
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, num ) {
- var obj = {};
-
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
- obj[ this ] = type;
- });
-
- return obj;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx( "show", 1 ),
- slideUp: genFx( "hide", 1 ),
- slideToggle: genFx( "toggle", 1 ),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-});
-
-jQuery.extend({
- speed: function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
- // normalize opt.queue - true/undefined/null -> "fx"
- if ( opt.queue == null || opt.queue === true ) {
- opt.queue = "fx";
- }
-
- // Queueing
- opt.old = opt.complete;
-
- opt.complete = function( noUnmark ) {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue ) {
- jQuery.dequeue( this, opt.queue );
- } else if ( noUnmark !== false ) {
- jQuery._unmark( this );
- }
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
- }
- },
-
- timers: [],
-
- fx: function( elem, options, prop ) {
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- options.orig = options.orig || {};
- }
-
-});
-
-jQuery.fx.prototype = {
- // Simple function for setting a style value
- update: function() {
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- ( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
- },
-
- // Get the current size
- cur: function() {
- if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
- return this.elem[ this.prop ];
- }
-
- var parsed,
- r = jQuery.css( this.elem, this.prop );
- // Empty strings, null, undefined and "auto" are converted to 0,
- // complex values such as "rotate(1rad)" are returned as is,
- // simple values such as "10px" are parsed to Float.
- return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
- },
-
- // Start an animation from one number to another
- custom: function( from, to, unit ) {
- var self = this,
- fx = jQuery.fx;
-
- this.startTime = fxNow || createFxNow();
- this.end = to;
- this.now = this.start = from;
- this.pos = this.state = 0;
- this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
-
- function t( gotoEnd ) {
- return self.step( gotoEnd );
- }
-
- t.queue = this.options.queue;
- t.elem = this.elem;
- t.saveState = function() {
- if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
- jQuery._data( self.elem, "fxshow" + self.prop, self.start );
- }
- };
-
- if ( t() && jQuery.timers.push(t) && !timerId ) {
- timerId = setInterval( fx.tick, fx.interval );
- }
- },
-
- // Simple 'show' function
- show: function() {
- var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
-
- // Remember where we started, so that we can go back to it later
- this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
- this.options.show = true;
-
- // Begin the animation
- // Make sure that we start at a small width/height to avoid any flash of content
- if ( dataShow !== undefined ) {
- // This show is picking up where a previous hide or show left off
- this.custom( this.cur(), dataShow );
- } else {
- this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
- }
-
- // Start by showing the element
- jQuery( this.elem ).show();
- },
-
- // Simple 'hide' function
- hide: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom( this.cur(), 0 );
- },
-
- // Each step of an animation
- step: function( gotoEnd ) {
- var p, n, complete,
- t = fxNow || createFxNow(),
- done = true,
- elem = this.elem,
- options = this.options;
-
- if ( gotoEnd || t >= options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- options.animatedProperties[ this.prop ] = true;
-
- for ( p in options.animatedProperties ) {
- if ( options.animatedProperties[ p ] !== true ) {
- done = false;
- }
- }
-
- if ( done ) {
- // Reset the overflow
- if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
-
- jQuery.each( [ "", "X", "Y" ], function( index, value ) {
- elem.style[ "overflow" + value ] = options.overflow[ index ];
- });
- }
-
- // Hide the element if the "hide" operation was done
- if ( options.hide ) {
- jQuery( elem ).hide();
- }
-
- // Reset the properties, if the item has been hidden or shown
- if ( options.hide || options.show ) {
- for ( p in options.animatedProperties ) {
- jQuery.style( elem, p, options.orig[ p ] );
- jQuery.removeData( elem, "fxshow" + p, true );
- // Toggle data is no longer needed
- jQuery.removeData( elem, "toggle" + p, true );
- }
- }
-
- // Execute the complete function
- // in the event that the complete function throws an exception
- // we must ensure it won't be called twice. #5684
-
- complete = options.complete;
- if ( complete ) {
-
- options.complete = false;
- complete.call( elem );
- }
- }
-
- return false;
-
- } else {
- // classical easing cannot be used with an Infinity duration
- if ( options.duration == Infinity ) {
- this.now = t;
- } else {
- n = t - this.startTime;
- this.state = n / options.duration;
-
- // Perform the easing function, defaults to swing
- this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
- this.now = this.start + ( (this.end - this.start) * this.pos );
- }
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-};
-
-jQuery.extend( jQuery.fx, {
- tick: function() {
- var timer,
- timers = jQuery.timers,
- i = 0;
-
- for ( ; i < timers.length; i++ ) {
- timer = timers[ i ];
- // Checks the timer has not already been removed
- if ( !timer() && timers[ i ] === timer ) {
- timers.splice( i--, 1 );
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- },
-
- interval: 13,
-
- stop: function() {
- clearInterval( timerId );
- timerId = null;
- },
-
- speeds: {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
- },
-
- step: {
- opacity: function( fx ) {
- jQuery.style( fx.elem, "opacity", fx.now );
- },
-
- _default: function( fx ) {
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
- } else {
- fx.elem[ fx.prop ] = fx.now;
- }
- }
- }
-});
-
-// Adds width/height step functions
-// Do not set anything below 0
-jQuery.each([ "width", "height" ], function( i, prop ) {
- jQuery.fx.step[ prop ] = function( fx ) {
- jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
- };
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-
-// Try to restore the default display value of an element
-function defaultDisplay( nodeName ) {
-
- if ( !elemdisplay[ nodeName ] ) {
-
- var body = document.body,
- elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
- display = elem.css( "display" );
- elem.remove();
-
- // If the simple way fails,
- // get element's real default display by attaching it to a temp iframe
- if ( display === "none" || display === "" ) {
- // No iframe to use yet, so create it
- if ( !iframe ) {
- iframe = document.createElement( "iframe" );
- iframe.frameBorder = iframe.width = iframe.height = 0;
- }
-
- body.appendChild( iframe );
-
- // Create a cacheable copy of the iframe document on first call.
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
- // document to it; WebKit & Firefox won't allow reusing the iframe document.
- if ( !iframeDoc || !iframe.createElement ) {
- iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
- iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
- iframeDoc.close();
- }
-
- elem = iframeDoc.createElement( nodeName );
-
- iframeDoc.body.appendChild( elem );
-
- display = jQuery.css( elem, "display" );
- body.removeChild( iframe );
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
- }
-
- return elemdisplay[ nodeName ];
-}
-
-
-
-
-var rtable = /^t(?:able|d|h)$/i,
- rroot = /^(?:body|html)$/i;
-
-if ( "getBoundingClientRect" in document.documentElement ) {
- jQuery.fn.offset = function( options ) {
- var elem = this[0], box;
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- try {
- box = elem.getBoundingClientRect();
- } catch(e) {}
-
- var doc = elem.ownerDocument,
- docElem = doc.documentElement;
-
- // Make sure we're not dealing with a disconnected DOM node
- if ( !box || !jQuery.contains( docElem, elem ) ) {
- return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
- }
-
- var body = doc.body,
- win = getWindow(doc),
- clientTop = docElem.clientTop || body.clientTop || 0,
- clientLeft = docElem.clientLeft || body.clientLeft || 0,
- scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
- scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
- top = box.top + scrollTop - clientTop,
- left = box.left + scrollLeft - clientLeft;
-
- return { top: top, left: left };
- };
-
-} else {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- var computedStyle,
- offsetParent = elem.offsetParent,
- prevOffsetParent = elem,
- doc = elem.ownerDocument,
- docElem = doc.documentElement,
- body = doc.body,
- defaultView = doc.defaultView,
- prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
- top = elem.offsetTop,
- left = elem.offsetLeft;
-
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
- break;
- }
-
- computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
- top -= elem.scrollTop;
- left -= elem.scrollLeft;
-
- if ( elem === offsetParent ) {
- top += elem.offsetTop;
- left += elem.offsetLeft;
-
- if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevOffsetParent = offsetParent;
- offsetParent = elem.offsetParent;
- }
-
- if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevComputedStyle = computedStyle;
- }
-
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
- top += body.offsetTop;
- left += body.offsetLeft;
- }
-
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
- top += Math.max( docElem.scrollTop, body.scrollTop );
- left += Math.max( docElem.scrollLeft, body.scrollLeft );
- }
-
- return { top: top, left: left };
- };
-}
-
-jQuery.offset = {
-
- bodyOffset: function( body ) {
- var top = body.offsetTop,
- left = body.offsetLeft;
-
- if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
- left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
- }
-
- return { top: top, left: left };
- },
-
- setOffset: function( elem, options, i ) {
- var position = jQuery.css( elem, "position" );
-
- // set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curCSSTop = jQuery.css( elem, "top" ),
- curCSSLeft = jQuery.css( elem, "left" ),
- calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
- props = {}, curPosition = {}, curTop, curLeft;
-
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- if ( options.top != null ) {
- props.top = ( options.top - curOffset.top ) + curTop;
- }
- if ( options.left != null ) {
- props.left = ( options.left - curOffset.left ) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
-
- position: function() {
- if ( !this[0] ) {
- return null;
- }
-
- var elem = this[0],
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
- offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
-
- // Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
- parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
-
- // Subtract the two offsets
- return {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
-
- jQuery.fn[ method ] = function( val ) {
- var elem, win;
-
- if ( val === undefined ) {
- elem = this[ 0 ];
-
- if ( !elem ) {
- return null;
- }
-
- win = getWindow( elem );
-
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
-
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
-
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery( win ).scrollLeft(),
- i ? val : jQuery( win ).scrollTop()
- );
-
- } else {
- this[ method ] = val;
- }
- });
- };
-});
-
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-
-
-
-
-// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function( i, name ) {
-
- var type = name.toLowerCase();
-
- // innerHeight and innerWidth
- jQuery.fn[ "inner" + name ] = function() {
- var elem = this[0];
- return elem ?
- elem.style ?
- parseFloat( jQuery.css( elem, type, "padding" ) ) :
- this[ type ]() :
- null;
- };
-
- // outerHeight and outerWidth
- jQuery.fn[ "outer" + name ] = function( margin ) {
- var elem = this[0];
- return elem ?
- elem.style ?
- parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
- this[ type ]() :
- null;
- };
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- var elem = this[0];
- if ( !elem ) {
- return size == null ? null : this;
- }
-
- if ( jQuery.isFunction( size ) ) {
- return this.each(function( i ) {
- var self = jQuery( this );
- self[ type ]( size.call( this, i, self[ type ]() ) );
- });
- }
-
- if ( jQuery.isWindow( elem ) ) {
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
- var docElemProp = elem.document.documentElement[ "client" + name ],
- body = elem.document.body;
- return elem.document.compatMode === "CSS1Compat" && docElemProp ||
- body && body[ "client" + name ] || docElemProp;
-
- // Get document width or height
- } else if ( elem.nodeType === 9 ) {
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- return Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- );
-
- // Get or set width or height on the element
- } else if ( size === undefined ) {
- var orig = jQuery.css( elem, type ),
- ret = parseFloat( orig );
-
- return jQuery.isNumeric( ret ) ? ret : orig;
-
- // Set the width or height on the element (default to pixels if value is unitless)
- } else {
- return this.css( type, typeof size === "string" ? size : size + "px" );
- }
- };
-
-});
-
-
-
-
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-
-// Expose jQuery as an AMD module, but only for AMD loaders that
-// understand the issues with loading multiple versions of jQuery
-// in a page that all might call define(). The loader will indicate
-// they have special allowances for multiple jQuery versions by
-// specifying define.amd.jQuery = true. Register as a named module,
-// since jQuery can be concatenated with other files that may use define,
-// but not use a proper concatenation script that understands anonymous
-// AMD modules. A named AMD is safest and most robust way to register.
-// Lowercase jquery is used because AMD module names are derived from
-// file names, and jQuery is normally delivered in a lowercase file name.
-// Do this after creating the global so that if an AMD module wants to call
-// noConflict to hide this version of jQuery, it will work.
-if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
- define( "jquery", [], function () { return jQuery; } );
-}
-
-
-
-})( window );
diff --git a/library/jslider/js/jquery.dependClass-0.1.js b/library/jslider/js/jquery.dependClass-0.1.js
deleted file mode 100644
index 2636f6673..000000000
--- a/library/jslider/js/jquery.dependClass-0.1.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * jquery.dependClass - Attach class based on first class in list of current element
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 0.1.0-BETA ($Id$)
- *
- **/
-
-(function($) {
- $.baseClass = function(obj){
- obj = $(obj);
- return obj.get(0).className.match(/([^ ]+)/)[1];
- };
-
- $.fn.addDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- $(this).addClass(baseClass + options.delimiter + className);
- });
- };
-
- $.fn.removeDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- $(this).removeClass(baseClass + options.delimiter + className);
- });
- };
-
- $.fn.toggleDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- if($(this).is("." + baseClass + options.delimiter + className))
- $(this).removeClass(baseClass + options.delimiter + className);
- else
- $(this).addClass(baseClass + options.delimiter + className);
- });
- };
-
-})(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jquery.numberformatter-1.2.3.js b/library/jslider/js/jquery.numberformatter-1.2.3.js
deleted file mode 100644
index 213db297a..000000000
--- a/library/jslider/js/jquery.numberformatter-1.2.3.js
+++ /dev/null
@@ -1,510 +0,0 @@
-/**
- * jquery.numberformatter - Formatting/Parsing Numbers in jQuery
- *
- * Written by
- * Michael Abernethy (mike@abernethysoft.com),
- * Andrew Parry (aparry0@gmail.com)
- *
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * @author Michael Abernethy, Andrew Parry
- * @version 1.2.3-SNAPSHOT ($Id$)
- *
- * Dependencies
- *
- * jQuery (http://jquery.com)
- * jshashtable (http://www.timdown.co.uk/jshashtable)
- *
- * Notes & Thanks
- *
- * many thanks to advweb.nanasi.jp for his bug fixes
- * jsHashtable is now used also, so thanks to the author for that excellent little class.
- *
- * This plugin can be used to format numbers as text and parse text as Numbers
- * Because we live in an international world, we cannot assume that everyone
- * uses "," to divide thousands, and "." as a decimal point.
- *
- * As of 1.2 the way this plugin works has changed slightly, parsing text to a number
- * has 1 set of functions, formatting a number to text has it's own. Before things
- * were a little confusing, so I wanted to separate the 2 out more.
- *
- *
- * jQuery extension functions:
- *
- * formatNumber(options, writeBack, giveReturnValue) - Reads the value from the subject, parses to
- * a Javascript Number object, then formats back to text using the passed options and write back to
- * the subject.
- *
- * parseNumber(options) - Parses the value in the subject to a Number object using the passed options
- * to decipher the actual number from the text, then writes the value as text back to the subject.
- *
- *
- * Generic functions:
- *
- * formatNumber(numberString, options) - Takes a plain number as a string (e.g. '1002.0123') and returns
- * a string of the given format options.
- *
- * parseNumber(numberString, options) - Takes a number as text that is formatted the same as the given
- * options then and returns it as a plain Number object.
- *
- * To achieve the old way of combining parsing and formatting to keep say a input field always formatted
- * to a given format after it has lost focus you'd simply use a combination of the functions.
- *
- * e.g.
- * $("#salary").blur(function(){
- * $(this).parseNumber({format:"#,###.00", locale:"us"});
- * $(this).formatNumber({format:"#,###.00", locale:"us"});
- * });
- *
- * The syntax for the formatting is:
- * 0 = Digit
- * # = Digit, zero shows as absent
- * . = Decimal separator
- * - = Negative sign
- * , = Grouping Separator
- * % = Percent (multiplies the number by 100)
- *
- * For example, a format of "#,###.00" and text of 4500.20 will
- * display as "4.500,20" with a locale of "de", and "4,500.20" with a locale of "us"
- *
- *
- * As of now, the only acceptable locales are
- * Arab Emirates -> "ae"
- * Australia -> "au"
- * Austria -> "at"
- * Brazil -> "br"
- * Canada -> "ca"
- * China -> "cn"
- * Czech -> "cz"
- * Denmark -> "dk"
- * Egypt -> "eg"
- * Finland -> "fi"
- * France -> "fr"
- * Germany -> "de"
- * Greece -> "gr"
- * Great Britain -> "gb"
- * Hong Kong -> "hk"
- * India -> "in"
- * Israel -> "il"
- * Japan -> "jp"
- * Russia -> "ru"
- * South Korea -> "kr"
- * Spain -> "es"
- * Sweden -> "se"
- * Switzerland -> "ch"
- * Taiwan -> "tw"
- * Thailand -> "th"
- * United States -> "us"
- * Vietnam -> "vn"
- **/
-
-(function(jQuery) {
-
- var nfLocales = new Hashtable();
-
- var nfLocalesLikeUS = [ 'ae','au','ca','cn','eg','gb','hk','il','in','jp','sk','th','tw','us' ];
- var nfLocalesLikeDE = [ 'at','br','de','dk','es','gr','it','nl','pt','tr','vn' ];
- var nfLocalesLikeFR = [ 'cz','fi','fr','ru','se','pl' ];
- var nfLocalesLikeCH = [ 'ch' ];
-
- var nfLocaleFormatting = [ [".", ","], [",", "."], [",", " "], [".", "'"] ];
- var nfAllLocales = [ nfLocalesLikeUS, nfLocalesLikeDE, nfLocalesLikeFR, nfLocalesLikeCH ]
-
- function FormatData(dec, group, neg) {
- this.dec = dec;
- this.group = group;
- this.neg = neg;
- };
-
- function init() {
- // write the arrays into the hashtable
- for (var localeGroupIdx = 0; localeGroupIdx < nfAllLocales.length; localeGroupIdx++) {
- localeGroup = nfAllLocales[localeGroupIdx];
- for (var i = 0; i < localeGroup.length; i++) {
- nfLocales.put(localeGroup[i], localeGroupIdx);
- }
- }
- };
-
- function formatCodes(locale, isFullLocale) {
- if (nfLocales.size() == 0)
- init();
-
- // default values
- var dec = ".";
- var group = ",";
- var neg = "-";
-
- if (isFullLocale == false) {
- // Extract and convert to lower-case any language code from a real 'locale' formatted string, if not use as-is
- // (To prevent locale format like : "fr_FR", "en_US", "de_DE", "fr_FR", "en-US", "de-DE")
- if (locale.indexOf('_') != -1)
- locale = locale.split('_')[1].toLowerCase();
- else if (locale.indexOf('-') != -1)
- locale = locale.split('-')[1].toLowerCase();
- }
-
- // hashtable lookup to match locale with codes
- var codesIndex = nfLocales.get(locale);
- if (codesIndex) {
- var codes = nfLocaleFormatting[codesIndex];
- if (codes) {
- dec = codes[0];
- group = codes[1];
- }
- }
- return new FormatData(dec, group, neg);
- };
-
-
- /* Formatting Methods */
-
-
- /**
- * Formats anything containing a number in standard js number notation.
- *
- * @param {Object} options The formatting options to use
- * @param {Boolean} writeBack (true) If the output value should be written back to the subject
- * @param {Boolean} giveReturnValue (true) If the function should return the output string
- */
- jQuery.fn.formatNumber = function(options, writeBack, giveReturnValue) {
-
- return this.each(function() {
- // enforce defaults
- if (writeBack == null)
- writeBack = true;
- if (giveReturnValue == null)
- giveReturnValue = true;
-
- // get text
- var text;
- if (jQuery(this).is(":input"))
- text = new String(jQuery(this).val());
- else
- text = new String(jQuery(this).text());
-
- // format
- var returnString = jQuery.formatNumber(text, options);
-
- // set formatted string back, only if a success
-// if (returnString) {
- if (writeBack) {
- if (jQuery(this).is(":input"))
- jQuery(this).val(returnString);
- else
- jQuery(this).text(returnString);
- }
- if (giveReturnValue)
- return returnString;
-// }
-// return '';
- });
- };
-
- /**
- * First parses a string and reformats it with the given options.
- *
- * @param {Object} numberString
- * @param {Object} options
- */
- jQuery.formatNumber = function(numberString, options){
- var options = jQuery.extend({}, jQuery.fn.formatNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var validFormat = "0#-,.";
-
- // strip all the invalid characters at the beginning and the end
- // of the format, and we'll stick them back on at the end
- // make a special case for the negative sign "-" though, so
- // we can have formats like -$23.32
- var prefix = "";
- var negativeInFront = false;
- for (var i = 0; i < options.format.length; i++) {
- if (validFormat.indexOf(options.format.charAt(i)) == -1)
- prefix = prefix + options.format.charAt(i);
- else
- if (i == 0 && options.format.charAt(i) == '-') {
- negativeInFront = true;
- continue;
- }
- else
- break;
- }
- var suffix = "";
- for (var i = options.format.length - 1; i >= 0; i--) {
- if (validFormat.indexOf(options.format.charAt(i)) == -1)
- suffix = options.format.charAt(i) + suffix;
- else
- break;
- }
-
- options.format = options.format.substring(prefix.length);
- options.format = options.format.substring(0, options.format.length - suffix.length);
-
- // now we need to convert it into a number
- //while (numberString.indexOf(group) > -1)
- // numberString = numberString.replace(group, '');
- //var number = new Number(numberString.replace(dec, ".").replace(neg, "-"));
- var number = new Number(numberString);
-
- return jQuery._formatNumber(number, options, suffix, prefix, negativeInFront);
- };
-
- /**
- * Formats a Number object into a string, using the given formatting options
- *
- * @param {Object} numberString
- * @param {Object} options
- */
- jQuery._formatNumber = function(number, options, suffix, prefix, negativeInFront) {
- var options = jQuery.extend({}, jQuery.fn.formatNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var forcedToZero = false;
- if (isNaN(number)) {
- if (options.nanForceZero == true) {
- number = 0;
- forcedToZero = true;
- } else
- return null;
- }
-
- // special case for percentages
- if (suffix == "%")
- number = number * 100;
-
- var returnString = "";
- if (options.format.indexOf(".") > -1) {
- var decimalPortion = dec;
- var decimalFormat = options.format.substring(options.format.lastIndexOf(".") + 1);
-
- // round or truncate number as needed
- if (options.round == true)
- number = new Number(number.toFixed(decimalFormat.length));
- else {
- var numStr = number.toString();
- numStr = numStr.substring(0, numStr.lastIndexOf('.') + decimalFormat.length + 1);
- number = new Number(numStr);
- }
-
- var decimalValue = number % 1;
- var decimalString = new String(decimalValue.toFixed(decimalFormat.length));
- decimalString = decimalString.substring(decimalString.lastIndexOf(".") + 1);
-
- for (var i = 0; i < decimalFormat.length; i++) {
- if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) != '0') {
- decimalPortion += decimalString.charAt(i);
- continue;
- } else if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) == '0') {
- var notParsed = decimalString.substring(i);
- if (notParsed.match('[1-9]')) {
- decimalPortion += decimalString.charAt(i);
- continue;
- } else
- break;
- } else if (decimalFormat.charAt(i) == "0")
- decimalPortion += decimalString.charAt(i);
- }
- returnString += decimalPortion
- } else
- number = Math.round(number);
-
- var ones = Math.floor(number);
- if (number < 0)
- ones = Math.ceil(number);
-
- var onesFormat = "";
- if (options.format.indexOf(".") == -1)
- onesFormat = options.format;
- else
- onesFormat = options.format.substring(0, options.format.indexOf("."));
-
- var onePortion = "";
- if (!(ones == 0 && onesFormat.substr(onesFormat.length - 1) == '#') || forcedToZero) {
- // find how many digits are in the group
- var oneText = new String(Math.abs(ones));
- var groupLength = 9999;
- if (onesFormat.lastIndexOf(",") != -1)
- groupLength = onesFormat.length - onesFormat.lastIndexOf(",") - 1;
- var groupCount = 0;
- for (var i = oneText.length - 1; i > -1; i--) {
- onePortion = oneText.charAt(i) + onePortion;
- groupCount++;
- if (groupCount == groupLength && i != 0) {
- onePortion = group + onePortion;
- groupCount = 0;
- }
- }
-
- // account for any pre-data padding
- if (onesFormat.length > onePortion.length) {
- var padStart = onesFormat.indexOf('0');
- if (padStart != -1) {
- var padLen = onesFormat.length - padStart;
-
- // pad to left with 0's or group char
- var pos = onesFormat.length - onePortion.length - 1;
- while (onePortion.length < padLen) {
- var padChar = onesFormat.charAt(pos);
- // replace with real group char if needed
- if (padChar == ',')
- padChar = group;
- onePortion = padChar + onePortion;
- pos--;
- }
- }
- }
- }
-
- if (!onePortion && onesFormat.indexOf('0', onesFormat.length - 1) !== -1)
- onePortion = '0';
-
- returnString = onePortion + returnString;
-
- // handle special case where negative is in front of the invalid characters
- if (number < 0 && negativeInFront && prefix.length > 0)
- prefix = neg + prefix;
- else if (number < 0)
- returnString = neg + returnString;
-
- if (!options.decimalSeparatorAlwaysShown) {
- if (returnString.lastIndexOf(dec) == returnString.length - 1) {
- returnString = returnString.substring(0, returnString.length - 1);
- }
- }
- returnString = prefix + returnString + suffix;
- return returnString;
- };
-
-
- /* Parsing Methods */
-
-
- /**
- * Parses a number of given format from the element and returns a Number object.
- * @param {Object} options
- */
- jQuery.fn.parseNumber = function(options, writeBack, giveReturnValue) {
- // enforce defaults
- if (writeBack == null)
- writeBack = true;
- if (giveReturnValue == null)
- giveReturnValue = true;
-
- // get text
- var text;
- if (jQuery(this).is(":input"))
- text = new String(jQuery(this).val());
- else
- text = new String(jQuery(this).text());
-
- // parse text
- var number = jQuery.parseNumber(text, options);
-
- if (number) {
- if (writeBack) {
- if (jQuery(this).is(":input"))
- jQuery(this).val(number.toString());
- else
- jQuery(this).text(number.toString());
- }
- if (giveReturnValue)
- return number;
- }
- };
-
- /**
- * Parses a string of given format into a Number object.
- *
- * @param {Object} string
- * @param {Object} options
- */
- jQuery.parseNumber = function(numberString, options) {
- var options = jQuery.extend({}, jQuery.fn.parseNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var valid = "1234567890.-";
-
- // now we need to convert it into a number
- while (numberString.indexOf(group)>-1)
- numberString = numberString.replace(group,'');
- numberString = numberString.replace(dec,".").replace(neg,"-");
- var validText = "";
- var hasPercent = false;
- if (numberString.charAt(numberString.length - 1) == "%" || options.isPercentage == true)
- hasPercent = true;
- for (var i=0; i<numberString.length; i++) {
- if (valid.indexOf(numberString.charAt(i))>-1)
- validText = validText + numberString.charAt(i);
- }
- var number = new Number(validText);
- if (hasPercent) {
- number = number / 100;
- var decimalPos = validText.indexOf('.');
- if (decimalPos != -1) {
- var decimalPoints = validText.length - decimalPos - 1;
- number = number.toFixed(decimalPoints + 2);
- } else {
- number = number.toFixed(validText.length - 1);
- }
- }
-
- return number;
- };
-
- jQuery.fn.parseNumber.defaults = {
- locale: "us",
- decimalSeparatorAlwaysShown: false,
- isPercentage: false,
- isFullLocale: false
- };
-
- jQuery.fn.formatNumber.defaults = {
- format: "#,###.00",
- locale: "us",
- decimalSeparatorAlwaysShown: false,
- nanForceZero: true,
- round: true,
- isFullLocale: false
- };
-
- Number.prototype.toFixed = function(precision) {
- return jQuery._roundNumber(this, precision);
- };
-
- jQuery._roundNumber = function(number, decimalPlaces) {
- var power = Math.pow(10, decimalPlaces || 0);
- var value = String(Math.round(number * power) / power);
-
- // ensure the decimal places are there
- if (decimalPlaces > 0) {
- var dp = value.indexOf(".");
- if (dp == -1) {
- value += '.';
- dp = 0;
- } else {
- dp = value.length - (dp + 1);
- }
-
- while (dp < decimalPlaces) {
- value += '0';
- dp++;
- }
- }
- return value;
- };
-
- })(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jquery.slider.js b/library/jslider/js/jquery.slider.js
deleted file mode 100644
index 6d903775f..000000000
--- a/library/jslider/js/jquery.slider.js
+++ /dev/null
@@ -1,700 +0,0 @@
-/**
- * jquery.slider - Slider ui control in jQuery
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 1.1.0-RELEASE ($Id$)
- *
- * Dependencies
- *
- * jQuery (http://jquery.com)
- * jquery.numberformatter (http://code.google.com/p/jquery-numberformatter/)
- * tmpl (http://ejohn.org/blog/javascript-micro-templating/)
- * jquery.dependClass
- * draggable
- *
- **/
-
-(function( $ ) {
-
- function isArray( value ){
- if( typeof value == "undefined" ) return false;
-
- if (value instanceof Array || (!(value instanceof Object) &&
- (Object.prototype.toString.call((value)) == '[object Array]') ||
- typeof value.length == 'number' &&
- typeof value.splice != 'undefined' &&
- typeof value.propertyIsEnumerable != 'undefined' &&
- !value.propertyIsEnumerable('splice')
- )) {
- return true;
- }
-
- return false;
- }
-
- $.slider = function( node, settings ){
- var jNode = $(node);
- if( !jNode.data( "jslider" ) )
- jNode.data( "jslider", new jSlider( node, settings ) );
-
- return jNode.data( "jslider" );
- };
-
- $.fn.slider = function( action, opt_value ){
- var returnValue, args = arguments;
-
- function isDef( val ){
- return val !== undefined;
- };
-
- function isDefAndNotNull( val ){
- return val != null;
- };
-
- this.each(function(){
- var self = $.slider( this, action );
-
- // do actions
- if( typeof action == "string" ){
- switch( action ){
- case "value":
- if( isDef( args[ 1 ] ) && isDef( args[ 2 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0].set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
-
- if( isDefAndNotNull( pointers[1] ) && isDefAndNotNull( args[2] ) ){
- pointers[1].set( args[ 2 ] );
- pointers[1].setIndexOver();
- }
- }
-
- else if( isDef( args[ 1 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0].set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
- }
-
- else
- returnValue = self.getValue();
-
- break;
-
- case "prc":
- if( isDef( args[ 1 ] ) && isDef( args[ 2 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0]._set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
-
- if( isDefAndNotNull( pointers[1] ) && isDefAndNotNull( args[2] ) ){
- pointers[1]._set( args[ 2 ] );
- pointers[1].setIndexOver();
- }
- }
-
- else if( isDef( args[ 1 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0]._set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
- }
-
- else
- returnValue = self.getPrcValue();
-
- break;
-
- case "calculatedValue":
- var value = self.getValue().split(";");
- returnValue = "";
- for (var i=0; i < value.length; i++) {
- returnValue += (i > 0 ? ";" : "") + self.nice( value[i] );
- };
-
- break;
-
- case "skin":
- self.setSkin( args[1] );
-
- break;
- };
-
- }
-
- // return actual object
- else if( !action && !opt_value ){
- if( !isArray( returnValue ) )
- returnValue = [];
-
- returnValue.push( self );
- }
- });
-
- // flatten array just with one slider
- if( isArray( returnValue ) && returnValue.length == 1 )
- returnValue = returnValue[ 0 ];
-
- return returnValue || this;
- };
-
- var OPTIONS = {
-
- settings: {
- from: 1,
- to: 10,
- step: 1,
- smooth: true,
- limits: true,
- round: 0,
- format: { format: "#,##0.##" },
- value: "5;7",
- dimension: ""
- },
-
- className: "jslider",
- selector: ".jslider-",
-
- template: tmpl(
- '<span class="<%=className%>">' +
- '<table><tr><td>' +
- '<div class="<%=className%>-bg">' +
- '<i class="l"></i><i class="r"></i>' +
- '<i class="v"></i>' +
- '</div>' +
-
- '<div class="<%=className%>-pointer"></div>' +
- '<div class="<%=className%>-pointer <%=className%>-pointer-to"></div>' +
-
- '<div class="<%=className%>-label"><span><%=settings.from%></span></div>' +
- '<div class="<%=className%>-label <%=className%>-label-to"><span><%=settings.to%></span><%=settings.dimension%></div>' +
-
- '<div class="<%=className%>-value"><span></span><%=settings.dimension%></div>' +
- '<div class="<%=className%>-value <%=className%>-value-to"><span></span><%=settings.dimension%></div>' +
-
- '<div class="<%=className%>-scale"><%=scale%></div>'+
-
- '</td></tr></table>' +
- '</span>'
- )
-
- };
-
- function jSlider(){
- return this.init.apply( this, arguments );
- };
-
- jSlider.prototype.init = function( node, settings ){
- this.settings = $.extend(true, {}, OPTIONS.settings, settings ? settings : {});
-
- // obj.sliderHandler = this;
- this.inputNode = $( node ).hide();
-
- this.settings.interval = this.settings.to-this.settings.from;
- this.settings.value = this.inputNode.attr("value");
-
- if( this.settings.calculate && $.isFunction( this.settings.calculate ) )
- this.nice = this.settings.calculate;
-
- if( this.settings.onstatechange && $.isFunction( this.settings.onstatechange ) )
- this.onstatechange = this.settings.onstatechange;
-
- this.is = {
- init: false
- };
- this.o = {};
-
- this.create();
- };
-
- jSlider.prototype.onstatechange = function(){
-
- };
-
- jSlider.prototype.create = function(){
- var $this = this;
-
- this.domNode = $( OPTIONS.template({
- className: OPTIONS.className,
- settings: {
- from: this.nice( this.settings.from ),
- to: this.nice( this.settings.to ),
- dimension: this.settings.dimension
- },
- scale: this.generateScale()
- }) );
-
- this.inputNode.after( this.domNode );
- this.drawScale();
-
- // set skin class
- if( this.settings.skin && this.settings.skin.length > 0 )
- this.setSkin( this.settings.skin );
-
- this.sizes = {
- domWidth: this.domNode.width(),
- domOffset: this.domNode.offset()
- };
-
- // find some objects
- $.extend(this.o, {
- pointers: {},
- labels: {
- 0: {
- o: this.domNode.find(OPTIONS.selector + "value").not(OPTIONS.selector + "value-to")
- },
- 1: {
- o: this.domNode.find(OPTIONS.selector + "value").filter(OPTIONS.selector + "value-to")
- }
- },
- limits: {
- 0: this.domNode.find(OPTIONS.selector + "label").not(OPTIONS.selector + "label-to"),
- 1: this.domNode.find(OPTIONS.selector + "label").filter(OPTIONS.selector + "label-to")
- }
- });
-
- $.extend(this.o.labels[0], {
- value: this.o.labels[0].o.find("span")
- });
-
- $.extend(this.o.labels[1], {
- value: this.o.labels[1].o.find("span")
- });
-
-
- if( !$this.settings.value.split(";")[1] ){
- this.settings.single = true;
- this.domNode.addDependClass("single");
- }
-
- if( !$this.settings.limits )
- this.domNode.addDependClass("limitless");
-
- this.domNode.find(OPTIONS.selector + "pointer").each(function( i ){
- var value = $this.settings.value.split(";")[i];
- if( value ){
- $this.o.pointers[i] = new jSliderPointer( this, i, $this );
-
- var prev = $this.settings.value.split(";")[i-1];
- if( prev && new Number(value) < new Number(prev) ) value = prev;
-
- value = value < $this.settings.from ? $this.settings.from : value;
- value = value > $this.settings.to ? $this.settings.to : value;
-
- $this.o.pointers[i].set( value, true );
- }
- });
-
- this.o.value = this.domNode.find(".v");
- this.is.init = true;
-
- $.each(this.o.pointers, function(i){
- $this.redraw(this);
- });
-
- (function(self){
- $(window).resize(function(){
- self.onresize();
- });
- })(this);
-
- };
-
- jSlider.prototype.setSkin = function( skin ){
- if( this.skin_ )
- this.domNode.removeDependClass( this.skin_, "_" );
-
- this.domNode.addDependClass( this.skin_ = skin, "_" );
- };
-
- jSlider.prototype.setPointersIndex = function( i ){
- $.each(this.getPointers(), function(i){
- this.index( i );
- });
- };
-
- jSlider.prototype.getPointers = function(){
- return this.o.pointers;
- };
-
- jSlider.prototype.generateScale = function(){
- if( this.settings.scale && this.settings.scale.length > 0 ){
- var str = "";
- var s = this.settings.scale;
- var prc = Math.round((100/(s.length-1))*10)/10;
- for( var i=0; i < s.length; i++ ){
- str += '<span style="left: ' + i*prc + '%">' + ( s[i] != '|' ? '<ins>' + s[i] + '</ins>' : '' ) + '</span>';
- };
- return str;
- } else return "";
-
- return "";
- };
-
- jSlider.prototype.drawScale = function(){
- this.domNode.find(OPTIONS.selector + "scale span ins").each(function(){
- $(this).css({ marginLeft: -$(this).outerWidth()/2 });
- });
- };
-
- jSlider.prototype.onresize = function(){
- var self = this;
- this.sizes = {
- domWidth: this.domNode.width(),
- domOffset: this.domNode.offset()
- };
-
- $.each(this.o.pointers, function(i){
- self.redraw(this);
- });
- };
-
- jSlider.prototype.update = function(){
- this.onresize();
- this.drawScale();
- };
-
- jSlider.prototype.limits = function( x, pointer ){
- // smooth
- if( !this.settings.smooth ){
- var step = this.settings.step*100 / ( this.settings.interval );
- x = Math.round( x/step ) * step;
- }
-
- var another = this.o.pointers[1-pointer.uid];
- if( another && pointer.uid && x < another.value.prc ) x = another.value.prc;
- if( another && !pointer.uid && x > another.value.prc ) x = another.value.prc;
-
- // base limit
- if( x < 0 ) x = 0;
- if( x > 100 ) x = 100;
-
- return Math.round( x*10 ) / 10;
- };
-
- jSlider.prototype.redraw = function( pointer ){
- if( !this.is.init ) return false;
-
- this.setValue();
-
- // redraw range line
- if( this.o.pointers[0] && this.o.pointers[1] )
- this.o.value.css({ left: this.o.pointers[0].value.prc + "%", width: ( this.o.pointers[1].value.prc - this.o.pointers[0].value.prc ) + "%" });
-
- this.o.labels[pointer.uid].value.html(
- this.nice(
- pointer.value.origin
- )
- );
-
- // redraw position of labels
- this.redrawLabels( pointer );
-
- };
-
- jSlider.prototype.redrawLabels = function( pointer ){
-
- function setPosition( label, sizes, prc ){
- sizes.margin = -sizes.label/2;
-
- // left limit
- label_left = sizes.border + sizes.margin;
- if( label_left < 0 )
- sizes.margin -= label_left;
-
- // right limit
- if( sizes.border+sizes.label / 2 > self.sizes.domWidth ){
- sizes.margin = 0;
- sizes.right = true;
- } else
- sizes.right = false;
-
- label.o.css({ left: prc + "%", marginLeft: sizes.margin, right: "auto" });
- if( sizes.right ) label.o.css({ left: "auto", right: 0 });
- return sizes;
- }
-
- var self = this;
- var label = this.o.labels[pointer.uid];
- var prc = pointer.value.prc;
-
- var sizes = {
- label: label.o.outerWidth(),
- right: false,
- border: ( prc * this.sizes.domWidth ) / 100
- };
-
- if( !this.settings.single ){
- // glue if near;
- var another = this.o.pointers[1-pointer.uid];
- var another_label = this.o.labels[another.uid];
-
- switch( pointer.uid ){
- case 0:
- if( sizes.border+sizes.label / 2 > another_label.o.offset().left-this.sizes.domOffset.left ){
- another_label.o.css({ visibility: "hidden" });
- another_label.value.html( this.nice( another.value.origin ) );
-
- label.o.css({ visibility: "visible" });
-
- prc = ( another.value.prc - prc ) / 2 + prc;
- if( another.value.prc != pointer.value.prc ){
- label.value.html( this.nice(pointer.value.origin) + "&nbsp;&ndash;&nbsp;" + this.nice(another.value.origin) );
- sizes.label = label.o.outerWidth();
- sizes.border = ( prc * this.sizes.domWidth ) / 100;
- }
- } else {
- another_label.o.css({ visibility: "visible" });
- }
- break;
-
- case 1:
- if( sizes.border - sizes.label / 2 < another_label.o.offset().left - this.sizes.domOffset.left + another_label.o.outerWidth() ){
- another_label.o.css({ visibility: "hidden" });
- another_label.value.html( this.nice(another.value.origin) );
-
- label.o.css({ visibility: "visible" });
-
- prc = ( prc - another.value.prc ) / 2 + another.value.prc;
- if( another.value.prc != pointer.value.prc ){
- label.value.html( this.nice(another.value.origin) + "&nbsp;&ndash;&nbsp;" + this.nice(pointer.value.origin) );
- sizes.label = label.o.outerWidth();
- sizes.border = ( prc * this.sizes.domWidth ) / 100;
- }
- } else {
- another_label.o.css({ visibility: "visible" });
- }
- break;
- }
- }
-
- sizes = setPosition( label, sizes, prc );
-
- /* draw second label */
- if( another_label ){
- var sizes = {
- label: another_label.o.outerWidth(),
- right: false,
- border: ( another.value.prc * this.sizes.domWidth ) / 100
- };
- sizes = setPosition( another_label, sizes, another.value.prc );
- }
-
- this.redrawLimits();
- };
-
- jSlider.prototype.redrawLimits = function(){
- if( this.settings.limits ){
-
- var limits = [ true, true ];
-
- for( key in this.o.pointers ){
-
- if( !this.settings.single || key == 0 ){
-
- var pointer = this.o.pointers[key];
- var label = this.o.labels[pointer.uid];
- var label_left = label.o.offset().left - this.sizes.domOffset.left;
-
- var limit = this.o.limits[0];
- if( label_left < limit.outerWidth() )
- limits[0] = false;
-
- var limit = this.o.limits[1];
- if( label_left + label.o.outerWidth() > this.sizes.domWidth - limit.outerWidth() )
- limits[1] = false;
- }
-
- };
-
- for( var i=0; i < limits.length; i++ ){
- if( limits[i] )
- this.o.limits[i].fadeIn("fast");
- else
- this.o.limits[i].fadeOut("fast");
- };
-
- }
- };
-
- jSlider.prototype.setValue = function(){
- var value = this.getValue();
- this.inputNode.attr( "value", value );
- this.onstatechange.call( this, value );
- };
-
- jSlider.prototype.getValue = function(){
- if(!this.is.init) return false;
- var $this = this;
-
- var value = "";
- $.each( this.o.pointers, function(i){
- if( this.value.prc != undefined && !isNaN(this.value.prc) ) value += (i > 0 ? ";" : "") + $this.prcToValue( this.value.prc );
- });
- return value;
- };
-
- jSlider.prototype.getPrcValue = function(){
- if(!this.is.init) return false;
- var $this = this;
-
- var value = "";
- $.each( this.o.pointers, function(i){
- if( this.value.prc != undefined && !isNaN(this.value.prc) ) value += (i > 0 ? ";" : "") + this.value.prc;
- });
- return value;
- };
-
- jSlider.prototype.prcToValue = function( prc ){
-
- if( this.settings.heterogeneity && this.settings.heterogeneity.length > 0 ){
- var h = this.settings.heterogeneity;
-
- var _start = 0;
- var _from = this.settings.from;
-
- for( var i=0; i <= h.length; i++ ){
- if( h[i] ) var v = h[i].split("/");
- else var v = [100, this.settings.to];
-
- v[0] = new Number(v[0]);
- v[1] = new Number(v[1]);
-
- if( prc >= _start && prc <= v[0] ) {
- var value = _from + ( (prc-_start) * (v[1]-_from) ) / (v[0]-_start);
- }
-
- _start = v[0];
- _from = v[1];
- };
-
- } else {
- var value = this.settings.from + ( prc * this.settings.interval ) / 100;
- }
-
- return this.round( value );
- };
-
- jSlider.prototype.valueToPrc = function( value, pointer ){
- if( this.settings.heterogeneity && this.settings.heterogeneity.length > 0 ){
- var h = this.settings.heterogeneity;
-
- var _start = 0;
- var _from = this.settings.from;
-
- for (var i=0; i <= h.length; i++) {
- if(h[i]) var v = h[i].split("/");
- else var v = [100, this.settings.to];
- v[0] = new Number(v[0]); v[1] = new Number(v[1]);
-
- if(value >= _from && value <= v[1]){
- var prc = pointer.limits(_start + (value-_from)*(v[0]-_start)/(v[1]-_from));
- }
-
- _start = v[0]; _from = v[1];
- };
-
- } else {
- var prc = pointer.limits((value-this.settings.from)*100/this.settings.interval);
- }
-
- return prc;
- };
-
- jSlider.prototype.round = function( value ){
- value = Math.round( value / this.settings.step ) * this.settings.step;
- if( this.settings.round ) value = Math.round( value * Math.pow(10, this.settings.round) ) / Math.pow(10, this.settings.round);
- else value = Math.round( value );
- return value;
- };
-
- jSlider.prototype.nice = function( value ){
- value = value.toString().replace(/,/gi, ".").replace(/ /gi, "");;
-
- if( $.formatNumber ){
- return $.formatNumber( new Number(value), this.settings.format || {} ).replace( /-/gi, "&minus;" );
- }
-
- else {
- return new Number(value);
- }
- };
-
-
- function jSliderPointer(){
- Draggable.apply( this, arguments );
- }
- jSliderPointer.prototype = new Draggable();
-
- jSliderPointer.prototype.oninit = function( ptr, id, _constructor ){
- this.uid = id;
- this.parent = _constructor;
- this.value = {};
- this.settings = this.parent.settings;
- };
-
- jSliderPointer.prototype.onmousedown = function(evt){
- this._parent = {
- offset: this.parent.domNode.offset(),
- width: this.parent.domNode.width()
- };
- this.ptr.addDependClass("hover");
- this.setIndexOver();
- };
-
- jSliderPointer.prototype.onmousemove = function( evt, x ){
- var coords = this._getPageCoords( evt );
- this._set( this.calc( coords.x ) );
- };
-
- jSliderPointer.prototype.onmouseup = function( evt ){
- if( this.parent.settings.callback && $.isFunction(this.parent.settings.callback) )
- this.parent.settings.callback.call( this.parent, this.parent.getValue() );
-
- this.ptr.removeDependClass("hover");
- };
-
- jSliderPointer.prototype.setIndexOver = function(){
- this.parent.setPointersIndex( 1 );
- this.index( 2 );
- };
-
- jSliderPointer.prototype.index = function( i ){
- this.ptr.css({ zIndex: i });
- };
-
- jSliderPointer.prototype.limits = function( x ){
- return this.parent.limits( x, this );
- };
-
- jSliderPointer.prototype.calc = function(coords){
- var x = this.limits(((coords-this._parent.offset.left)*100)/this._parent.width);
- return x;
- };
-
- jSliderPointer.prototype.set = function( value, opt_origin ){
- this.value.origin = this.parent.round(value);
- this._set( this.parent.valueToPrc( value, this ), opt_origin );
- };
-
- jSliderPointer.prototype._set = function( prc, opt_origin ){
- if( !opt_origin )
- this.value.origin = this.parent.prcToValue(prc);
-
- this.value.prc = prc;
- this.ptr.css({ left: prc + "%" });
- this.parent.redraw(this);
- };
-
-})(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jshashtable-2.1_src.js b/library/jslider/js/jshashtable-2.1_src.js
deleted file mode 100644
index 086f3de5b..000000000
--- a/library/jslider/js/jshashtable-2.1_src.js
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * Copyright 2010 Tim Down.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * jshashtable
- *
- * jshashtable is a JavaScript implementation of a hash table. It creates a single constructor function called Hashtable
- * in the global scope.
- *
- * Author: Tim Down <tim@timdown.co.uk>
- * Version: 2.1
- * Build date: 21 March 2010
- * Website: http://www.timdown.co.uk/jshashtable
- */
-
-var Hashtable = (function() {
- var FUNCTION = "function";
-
- var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
- function(arr, idx) {
- arr.splice(idx, 1);
- } :
-
- function(arr, idx) {
- var itemsAfterDeleted, i, len;
- if (idx === arr.length - 1) {
- arr.length = idx;
- } else {
- itemsAfterDeleted = arr.slice(idx + 1);
- arr.length = idx;
- for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
- arr[idx + i] = itemsAfterDeleted[i];
- }
- }
- };
-
- function hashObject(obj) {
- var hashCode;
- if (typeof obj == "string") {
- return obj;
- } else if (typeof obj.hashCode == FUNCTION) {
- // Check the hashCode method really has returned a string
- hashCode = obj.hashCode();
- return (typeof hashCode == "string") ? hashCode : hashObject(hashCode);
- } else if (typeof obj.toString == FUNCTION) {
- return obj.toString();
- } else {
- try {
- return String(obj);
- } catch (ex) {
- // For host objects (such as ActiveObjects in IE) that have no toString() method and throw an error when
- // passed to String()
- return Object.prototype.toString.call(obj);
- }
- }
- }
-
- function equals_fixedValueHasEquals(fixedValue, variableValue) {
- return fixedValue.equals(variableValue);
- }
-
- function equals_fixedValueNoEquals(fixedValue, variableValue) {
- return (typeof variableValue.equals == FUNCTION) ?
- variableValue.equals(fixedValue) : (fixedValue === variableValue);
- }
-
- function createKeyValCheck(kvStr) {
- return function(kv) {
- if (kv === null) {
- throw new Error("null is not a valid " + kvStr);
- } else if (typeof kv == "undefined") {
- throw new Error(kvStr + " must not be undefined");
- }
- };
- }
-
- var checkKey = createKeyValCheck("key"), checkValue = createKeyValCheck("value");
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- function Bucket(hash, firstKey, firstValue, equalityFunction) {
- this[0] = hash;
- this.entries = [];
- this.addEntry(firstKey, firstValue);
-
- if (equalityFunction !== null) {
- this.getEqualityFunction = function() {
- return equalityFunction;
- };
- }
- }
-
- var EXISTENCE = 0, ENTRY = 1, ENTRY_INDEX_AND_VALUE = 2;
-
- function createBucketSearcher(mode) {
- return function(key) {
- var i = this.entries.length, entry, equals = this.getEqualityFunction(key);
- while (i--) {
- entry = this.entries[i];
- if ( equals(key, entry[0]) ) {
- switch (mode) {
- case EXISTENCE:
- return true;
- case ENTRY:
- return entry;
- case ENTRY_INDEX_AND_VALUE:
- return [ i, entry[1] ];
- }
- }
- }
- return false;
- };
- }
-
- function createBucketLister(entryProperty) {
- return function(aggregatedArr) {
- var startIndex = aggregatedArr.length;
- for (var i = 0, len = this.entries.length; i < len; ++i) {
- aggregatedArr[startIndex + i] = this.entries[i][entryProperty];
- }
- };
- }
-
- Bucket.prototype = {
- getEqualityFunction: function(searchValue) {
- return (typeof searchValue.equals == FUNCTION) ? equals_fixedValueHasEquals : equals_fixedValueNoEquals;
- },
-
- getEntryForKey: createBucketSearcher(ENTRY),
-
- getEntryAndIndexForKey: createBucketSearcher(ENTRY_INDEX_AND_VALUE),
-
- removeEntryForKey: function(key) {
- var result = this.getEntryAndIndexForKey(key);
- if (result) {
- arrayRemoveAt(this.entries, result[0]);
- return result[1];
- }
- return null;
- },
-
- addEntry: function(key, value) {
- this.entries[this.entries.length] = [key, value];
- },
-
- keys: createBucketLister(0),
-
- values: createBucketLister(1),
-
- getEntries: function(entries) {
- var startIndex = entries.length;
- for (var i = 0, len = this.entries.length; i < len; ++i) {
- // Clone the entry stored in the bucket before adding to array
- entries[startIndex + i] = this.entries[i].slice(0);
- }
- },
-
- containsKey: createBucketSearcher(EXISTENCE),
-
- containsValue: function(value) {
- var i = this.entries.length;
- while (i--) {
- if ( value === this.entries[i][1] ) {
- return true;
- }
- }
- return false;
- }
- };
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- // Supporting functions for searching hashtable buckets
-
- function searchBuckets(buckets, hash) {
- var i = buckets.length, bucket;
- while (i--) {
- bucket = buckets[i];
- if (hash === bucket[0]) {
- return i;
- }
- }
- return null;
- }
-
- function getBucketForHash(bucketsByHash, hash) {
- var bucket = bucketsByHash[hash];
-
- // Check that this is a genuine bucket and not something inherited from the bucketsByHash's prototype
- return ( bucket && (bucket instanceof Bucket) ) ? bucket : null;
- }
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- function Hashtable(hashingFunctionParam, equalityFunctionParam) {
- var that = this;
- var buckets = [];
- var bucketsByHash = {};
-
- var hashingFunction = (typeof hashingFunctionParam == FUNCTION) ? hashingFunctionParam : hashObject;
- var equalityFunction = (typeof equalityFunctionParam == FUNCTION) ? equalityFunctionParam : null;
-
- this.put = function(key, value) {
- checkKey(key);
- checkValue(value);
- var hash = hashingFunction(key), bucket, bucketEntry, oldValue = null;
-
- // Check if a bucket exists for the bucket key
- bucket = getBucketForHash(bucketsByHash, hash);
- if (bucket) {
- // Check this bucket to see if it already contains this key
- bucketEntry = bucket.getEntryForKey(key);
- if (bucketEntry) {
- // This bucket entry is the current mapping of key to value, so replace old value and we're done.
- oldValue = bucketEntry[1];
- bucketEntry[1] = value;
- } else {
- // The bucket does not contain an entry for this key, so add one
- bucket.addEntry(key, value);
- }
- } else {
- // No bucket exists for the key, so create one and put our key/value mapping in
- bucket = new Bucket(hash, key, value, equalityFunction);
- buckets[buckets.length] = bucket;
- bucketsByHash[hash] = bucket;
- }
- return oldValue;
- };
-
- this.get = function(key) {
- checkKey(key);
-
- var hash = hashingFunction(key);
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, hash);
- if (bucket) {
- // Check this bucket to see if it contains this key
- var bucketEntry = bucket.getEntryForKey(key);
- if (bucketEntry) {
- // This bucket entry is the current mapping of key to value, so return the value.
- return bucketEntry[1];
- }
- }
- return null;
- };
-
- this.containsKey = function(key) {
- checkKey(key);
- var bucketKey = hashingFunction(key);
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, bucketKey);
-
- return bucket ? bucket.containsKey(key) : false;
- };
-
- this.containsValue = function(value) {
- checkValue(value);
- var i = buckets.length;
- while (i--) {
- if (buckets[i].containsValue(value)) {
- return true;
- }
- }
- return false;
- };
-
- this.clear = function() {
- buckets.length = 0;
- bucketsByHash = {};
- };
-
- this.isEmpty = function() {
- return !buckets.length;
- };
-
- var createBucketAggregator = function(bucketFuncName) {
- return function() {
- var aggregated = [], i = buckets.length;
- while (i--) {
- buckets[i][bucketFuncName](aggregated);
- }
- return aggregated;
- };
- };
-
- this.keys = createBucketAggregator("keys");
- this.values = createBucketAggregator("values");
- this.entries = createBucketAggregator("getEntries");
-
- this.remove = function(key) {
- checkKey(key);
-
- var hash = hashingFunction(key), bucketIndex, oldValue = null;
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, hash);
-
- if (bucket) {
- // Remove entry from this bucket for this key
- oldValue = bucket.removeEntryForKey(key);
- if (oldValue !== null) {
- // Entry was removed, so check if bucket is empty
- if (!bucket.entries.length) {
- // Bucket is empty, so remove it from the bucket collections
- bucketIndex = searchBuckets(buckets, hash);
- arrayRemoveAt(buckets, bucketIndex);
- delete bucketsByHash[hash];
- }
- }
- }
- return oldValue;
- };
-
- this.size = function() {
- var total = 0, i = buckets.length;
- while (i--) {
- total += buckets[i].entries.length;
- }
- return total;
- };
-
- this.each = function(callback) {
- var entries = that.entries(), i = entries.length, entry;
- while (i--) {
- entry = entries[i];
- callback(entry[0], entry[1]);
- }
- };
-
- this.putAll = function(hashtable, conflictCallback) {
- var entries = hashtable.entries();
- var entry, key, value, thisValue, i = entries.length;
- var hasConflictCallback = (typeof conflictCallback == FUNCTION);
- while (i--) {
- entry = entries[i];
- key = entry[0];
- value = entry[1];
-
- // Check for a conflict. The default behaviour is to overwrite the value for an existing key
- if ( hasConflictCallback && (thisValue = that.get(key)) ) {
- value = conflictCallback(key, thisValue, value);
- }
- that.put(key, value);
- }
- };
-
- this.clone = function() {
- var clone = new Hashtable(hashingFunctionParam, equalityFunctionParam);
- clone.putAll(that);
- return clone;
- };
- }
-
- return Hashtable;
-})(); \ No newline at end of file
diff --git a/library/jslider/js/tmpl.js b/library/jslider/js/tmpl.js
deleted file mode 100644
index 36eadf28a..000000000
--- a/library/jslider/js/tmpl.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Simple JavaScript Templating
-// John Resig - http://ejohn.org/ - MIT Licensed
-(function(){
- var cache = {};
-
- this.tmpl = function tmpl(str, data){
- // Figure out if we're getting a template, or if we need to
- // load the template - and be sure to cache the result.
- var fn = !/\W/.test(str) ?
- cache[str] = cache[str] ||
- tmpl(document.getElementById(str).innerHTML) :
-
- // Generate a reusable function that will serve as a template
- // generator (and which will be cached).
- new Function("obj",
- "var p=[],print=function(){p.push.apply(p,arguments);};" +
-
- // Introduce the data as local variables using with(){}
- "with(obj){p.push('" +
-
- // Convert the template into pure JavaScript
- str
- .replace(/[\r\t\n]/g, " ")
- .split("<%").join("\t")
- .replace(/((^|%>)[^\t]*)'/g, "$1\r")
- .replace(/\t=(.*?)%>/g, "',$1,'")
- .split("\t").join("');")
- .split("%>").join("p.push('")
- .split("\r").join("\\'")
- + "');}return p.join('');");
-
- // Provide some basic currying to the user
- return data ? fn( data ) : fn;
- };
-})(); \ No newline at end of file
diff --git a/library/jslider/src/skin.psd b/library/jslider/src/skin.psd
deleted file mode 100644
index 2c46c91db..000000000
--- a/library/jslider/src/skin.psd
+++ /dev/null
Binary files differ
diff --git a/library/jslider/tests/show_hide.html b/library/jslider/tests/show_hide.html
deleted file mode 100644
index 57d3e929d..000000000
--- a/library/jslider/tests/show_hide.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider Show/hide test</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="../css/jslider.css" type="text/css">
- <link rel="stylesheet" href="../css/jslider.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="../js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="../js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="../js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="../js/tmpl.js"></script>
- <script type="text/javascript" src="../js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="../js/draggable-0.1.js"></script>
- <script type="text/javascript" src="../js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; padding: 20px 0; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%; display: none;">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider3" type="text" name="area" value="25;75" /></span> in string
- </div>
- <a href="#" id="trigger">Show/Hide</a>
-
- <script type="text/javascript" charset="utf-8">
- var layout = $(".layout-slider"),
- trigger = $("#trigger");
-
- jQuery("#Slider3").slider({ from: 0, to: 500, heterogeneity: ['50/100', '75/250'], scale: [0, '|', 50, '|', '100', '|', 250, '|', 500], limits: false, step: 1, dimension: '&nbsp;m<small>2</small>', skin: "plastic" });
-
- $(trigger).click( function(){
- layout.slideToggle("fast");
- $("#Slider3").slider().update();
- });
- </script>
-
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/tests/zero_value.html b/library/jslider/tests/zero_value.html
deleted file mode 100644
index 7d9e9f874..000000000
--- a/library/jslider/tests/zero_value.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider Zero value test</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="../css/jslider.css" type="text/css">
- <link rel="stylesheet" href="../css/jslider.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="../js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="../js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="../js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="../js/tmpl.js"></script>
- <script type="text/javascript" src="../js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="../js/draggable-0.1.js"></script>
- <script type="text/javascript" src="../js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider1" type="slider" name="price" value="50" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider1").slider({
- from: -50,
- to: 200,
- step: 5,
- dimension: '%',
- skin: 'plastic',
- scale: ['-50', '|', '0', '|', '50', '|', '100', '|', '150', '|', '200']
- });
- </script>
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider2" type="slider" name="price" value="-0.5;0.5" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider2").slider({
- from: -1,
- to: 1,
- step: 0.1,
- round: 1,
- dimension: 'px',
- skin: 'plastic'
- });
- </script>
-
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/tools/yuicompressor-2.4.7.jar b/library/jslider/tools/yuicompressor-2.4.7.jar
deleted file mode 100644
index 3c9a408aa..000000000
--- a/library/jslider/tools/yuicompressor-2.4.7.jar
+++ /dev/null
Binary files differ
diff --git a/library/readmore.js/README.md b/library/readmore.js/README.md
new file mode 100644
index 000000000..0116fbe8b
--- /dev/null
+++ b/library/readmore.js/README.md
@@ -0,0 +1,171 @@
+# Readmore.js
+
+A smooth, responsive jQuery plugin for collapsing and expanding long blocks of text with "Read more" and "Close" links.
+
+The markup Readmore.js requires is so simple, you can probably use it with your existing HTML—there's no need for complicated sets of `div`'s or hardcoded classes, just call `.readmore()` on the element containing your block of text and Readmore.js takes care of the rest. Readmore.js plays well in a responsive environment, too.
+
+Readmore.js is tested with—and supported on—all versions of jQuery greater than 1.9.1. All the "good" browsers are supported, as well as IE10+; IE8 & 9 _should_ work, but are not supported and the experience will not be ideal.
+
+
+## Install
+
+Install Readmore.js with Bower:
+
+```
+$ bower install readmore
+```
+
+Then include it in your HTML:
+
+```html
+<script src="/bower_components/readmore/readmore.min.js"></script>
+```
+
+
+## Use
+
+```javascript
+$('article').readmore();
+```
+
+It's that simple. You can change the speed of the animation, the height of the collapsed block, and the open and close elements.
+
+```javascript
+$('article').readmore({
+ speed: 75,
+ lessLink: '<a href="#">Read less</a>'
+});
+```
+
+### The options:
+
+* `speed: 100` in milliseconds
+* `collapsedHeight: 200` in pixels
+* `heightMargin: 16` in pixels, avoids collapsing blocks that are only slightly larger than `collapsedHeight`
+* `moreLink: '<a href="#">Read more</a>'`
+* `lessLink: '<a href="#">Close</a>'`
+* `embedCSS: true` insert required CSS dynamically, set this to `false` if you include the necessary CSS in a stylesheet
+* `blockCSS: 'display: block; width: 100%;'` sets the styling of the blocks, ignored if `embedCSS` is `false`
+* `startOpen: false` do not immediately truncate, start in the fully opened position
+* `beforeToggle: function() {}` called after a more or less link is clicked, but *before* the block is collapsed or expanded
+* `afterToggle: function() {}` called *after* the block is collapsed or expanded
+
+If the element has a `max-height` CSS property, Readmore.js will use that value rather than the value of the `collapsedHeight` option.
+
+### The callbacks:
+
+The callback functions, `beforeToggle` and `afterToggle`, both receive the same arguments: `trigger`, `element`, and `expanded`.
+
+* `trigger`: the "Read more" or "Close" element that was clicked
+* `element`: the block that is being collapsed or expanded
+* `expanded`: Boolean; `true` means the block is expanded
+
+#### Callback example:
+
+Here's an example of how you could use the `afterToggle` callback to scroll back to the top of a block when the "Close" link is clicked.
+
+```javascript
+$('article').readmore({
+ afterToggle: function(trigger, element, expanded) {
+ if(! expanded) { // The "Close" link was clicked
+ $('html, body').animate( { scrollTop: element.offset().top }, {duration: 100 } );
+ }
+ }
+});
+```
+
+### Removing Readmore:
+
+You can remove the Readmore.js functionality like so:
+
+```javascript
+$('article').readmore('destroy');
+```
+
+Or, you can be more surgical by specifying a particular element:
+
+```javascript
+$('article:first').readmore('destroy');
+```
+
+### Toggling blocks programmatically:
+
+You can toggle a block from code:
+
+```javascript
+$('article:nth-of-type(3)').readmore('toggle');
+```
+
+
+## CSS:
+
+Readmore.js is designed to use CSS for as much functionality as possible: collapsed height can be set in CSS with the `max-height` property; "collapsing" is achieved by setting `overflow: hidden` on the containing block and changing the `height` property; and, finally, the expanding/collapsing animation is done with CSS3 transitions.
+
+By default, Readmore.js inserts the following CSS, in addition to some transition-related rules:
+
+```css
+selector + [data-readmore-toggle], selector[data-readmore] {
+ display: block;
+ width: 100%;
+}
+```
+
+_`selector` would be the element you invoked `readmore()` on, e.g.: `$('selector').readmore()`_
+
+You can override the base rules when you set up Readmore.js like so:
+
+```javascript
+$('article').readmore({blockCSS: 'display: inline-block; width: 50%;'});
+```
+
+If you want to include the necessary styling in your site's stylesheet, you can disable the dynamic embedding by setting `embedCSS` to `false`:
+
+```javascript
+$('article').readmore({embedCSS: false});
+```
+
+### Media queries and other CSS tricks:
+
+If you wanted to set a `maxHeight` based on lines, you could do so in CSS with something like:
+
+```css
+body {
+ font: 16px/1.5 sans-serif;
+}
+
+/* Show only 4 lines in smaller screens */
+article {
+ max-height: 6em; /* (4 * 1.5 = 6) */
+}
+```
+
+Then, with a media query you could change the number of lines shown, like so:
+
+```css
+/* Show 8 lines on larger screens */
+@media screen and (min-width: 640px) {
+ article {
+ max-height: 12em;
+ }
+}
+```
+
+
+## Contributing
+
+Pull requests are always welcome, but not all suggested features will get merged. Feel free to contact me if you have an idea for a feature.
+
+Pull requests should include the minified script and this readme and the demo HTML should be updated with descriptions of your new feature.
+
+You'll need NPM:
+
+```
+$ npm install
+```
+
+Which will install the necessary development dependencies. Then, to build the minified script:
+
+```
+$ gulp compress
+```
+
diff --git a/library/readmore.js/readmore.js b/library/readmore.js/readmore.js
new file mode 100644
index 000000000..171f69776
--- /dev/null
+++ b/library/readmore.js/readmore.js
@@ -0,0 +1,320 @@
+/*!
+ * @preserve
+ *
+ * Readmore.js jQuery plugin
+ * Author: @jed_foster
+ * Project home: http://jedfoster.github.io/Readmore.js
+ * Licensed under the MIT license
+ *
+ * Debounce function from http://davidwalsh.name/javascript-debounce-function
+ */
+
+/* global jQuery */
+
+(function($) {
+ 'use strict';
+
+ var readmore = 'readmore',
+ defaults = {
+ speed: 100,
+ collapsedHeight: 200,
+ heightMargin: 16,
+ moreLink: '<a href="#">Read More</a>',
+ lessLink: '<a href="#">Close</a>',
+ embedCSS: true,
+ blockCSS: 'display: block; width: 100%;',
+ startOpen: false,
+
+ // callbacks
+ beforeToggle: function(){},
+ afterToggle: function(){}
+ },
+ cssEmbedded = {},
+ uniqueIdCounter = 0;
+
+ function debounce(func, wait, immediate) {
+ var timeout;
+
+ return function() {
+ var context = this, args = arguments;
+ var later = function() {
+ timeout = null;
+ if (! immediate) {
+ func.apply(context, args);
+ }
+ };
+ var callNow = immediate && !timeout;
+
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+
+ if (callNow) {
+ func.apply(context, args);
+ }
+ };
+ }
+
+ function uniqueId(prefix) {
+ var id = ++uniqueIdCounter;
+
+ return String(prefix == null ? 'rmjs-' : prefix) + id;
+ }
+
+ function setBoxHeights(element) {
+ var el = element.clone().css({
+ height: 'auto',
+ width: element.width(),
+ maxHeight: 'none',
+ overflow: 'hidden'
+ }).insertAfter(element),
+ expandedHeight = el.outerHeight(),
+ cssMaxHeight = parseInt(el.css({maxHeight: ''}).css('max-height').replace(/[^-\d\.]/g, ''), 10),
+ defaultHeight = element.data('defaultHeight');
+
+ el.remove();
+
+ var collapsedHeight = element.data('collapsedHeight') || defaultHeight;
+
+ if (!cssMaxHeight) {
+ collapsedHeight = defaultHeight;
+ }
+ else if (cssMaxHeight > collapsedHeight) {
+ collapsedHeight = cssMaxHeight;
+ }
+
+ // Store our measurements.
+ element.data({
+ expandedHeight: expandedHeight,
+ maxHeight: cssMaxHeight,
+ collapsedHeight: collapsedHeight
+ })
+ // and disable any `max-height` property set in CSS
+ .css({
+ maxHeight: 'none'
+ });
+ }
+
+ var resizeBoxes = debounce(function() {
+ $('[data-readmore]').each(function() {
+ var current = $(this),
+ isExpanded = (current.attr('aria-expanded') === 'true');
+
+ setBoxHeights(current);
+
+ current.css({
+ height: current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') )
+ });
+ });
+ }, 100);
+
+ function embedCSS(options) {
+ if (! cssEmbedded[options.selector]) {
+ var styles = ' ';
+
+ if (options.embedCSS && options.blockCSS !== '') {
+ styles += options.selector + ' + [data-readmore-toggle], ' +
+ options.selector + '[data-readmore]{' +
+ options.blockCSS +
+ '}';
+ }
+
+ // Include the transition CSS even if embedCSS is false
+ styles += options.selector + '[data-readmore]{' +
+ 'transition: height ' + options.speed + 'ms;' +
+ 'overflow: hidden;' +
+ '}';
+
+ (function(d, u) {
+ var css = d.createElement('style');
+ css.type = 'text/css';
+
+ if (css.styleSheet) {
+ css.styleSheet.cssText = u;
+ }
+ else {
+ css.appendChild(d.createTextNode(u));
+ }
+
+ d.getElementsByTagName('head')[0].appendChild(css);
+ }(document, styles));
+
+ cssEmbedded[options.selector] = true;
+ }
+ }
+
+ function Readmore(element, options) {
+ var $this = this;
+
+ this.element = element;
+
+ this.options = $.extend({}, defaults, options);
+ $(this.element).data({
+ defaultHeight: this.options.collapsedHeight,
+ heightMargin: this.options.heightMargin
+ });
+
+ embedCSS(this.options);
+
+ this._defaults = defaults;
+ this._name = readmore;
+
+ // Waiting for the page to load doesn't work when there is dynamic content
+ // But usually we already have the content, so no need to wait
+ //window.addEventListener('load', function() {
+ $this.init();
+ //});
+ }
+
+
+ Readmore.prototype = {
+ init: function() {
+ var $this = this;
+
+ $(this.element).each(function() {
+ var current = $(this);
+
+ setBoxHeights(current);
+
+ var collapsedHeight = current.data('collapsedHeight'),
+ heightMargin = current.data('heightMargin');
+
+ if (current.outerHeight(true) <= collapsedHeight + heightMargin) {
+ // The block is shorter than the limit, so there's no need to truncate it.
+ return true;
+ }
+ else {
+ var id = current.attr('id') || uniqueId(),
+ useLink = $this.options.startOpen ? $this.options.lessLink : $this.options.moreLink;
+
+ current.attr({
+ 'data-readmore': '',
+ 'aria-expanded': false,
+ 'id': id
+ });
+
+ current.after($(useLink)
+ .on('click', function(event) { $this.toggle(this, current[0], event); })
+ .attr({
+ 'data-readmore-toggle': '',
+ 'aria-controls': id
+ }));
+
+ if (! $this.options.startOpen) {
+ current.css({
+ height: collapsedHeight
+ });
+ }
+ }
+ });
+
+ window.addEventListener('resize', function() {
+ resizeBoxes();
+ });
+ },
+
+ toggle: function(trigger, element, event) {
+ if (event) {
+ event.preventDefault();
+ }
+
+ if (! trigger) {
+ trigger = $('[aria-controls="' + this.element.id + '"]')[0];
+ }
+
+ if (! element) {
+ element = this.element;
+ }
+
+ var $this = this,
+ $element = $(element),
+ newHeight = '',
+ newLink = '',
+ expanded = false,
+ collapsedHeight = $element.data('collapsedHeight');
+
+ if ($element.height() <= collapsedHeight) {
+ newHeight = $element.data('expandedHeight') + 'px';
+ newLink = 'lessLink';
+ expanded = true;
+ }
+ else {
+ newHeight = collapsedHeight;
+ newLink = 'moreLink';
+ }
+
+ // Fire beforeToggle callback
+ // Since we determined the new "expanded" state above we're now out of sync
+ // with our true current state, so we need to flip the value of `expanded`
+ $this.options.beforeToggle(trigger, element, ! expanded);
+
+ $element.css({'height': newHeight});
+
+ // Fire afterToggle callback
+ $element.on('transitionend', function() {
+ $this.options.afterToggle(trigger, element, expanded);
+
+ $(this).attr({
+ 'aria-expanded': expanded
+ }).off('transitionend');
+ });
+
+ $(trigger).replaceWith($($this.options[newLink])
+ .on('click', function(event) { $this.toggle(this, element, event); })
+ .attr({
+ 'data-readmore-toggle': '',
+ 'aria-controls': $element.attr('id')
+ }));
+ },
+
+ destroy: function() {
+ $(this.element).each(function() {
+ var current = $(this);
+
+ current.attr({
+ 'data-readmore': null,
+ 'aria-expanded': null
+ })
+ .css({
+ maxHeight: '',
+ height: ''
+ })
+ .next('[data-readmore-toggle]')
+ .remove();
+
+ current.removeData();
+ });
+ }
+ };
+
+
+ $.fn.readmore = function(options) {
+ var args = arguments,
+ selector = this.selector;
+
+ options = options || {};
+
+ if (typeof options === 'object') {
+ return this.each(function() {
+ if ($.data(this, 'plugin_' + readmore)) {
+ var instance = $.data(this, 'plugin_' + readmore);
+ instance.destroy.apply(instance);
+ }
+
+ options.selector = selector;
+
+ $.data(this, 'plugin_' + readmore, new Readmore(this, options));
+ });
+ }
+ else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+ return this.each(function () {
+ var instance = $.data(this, 'plugin_' + readmore);
+ if (instance instanceof Readmore && typeof instance[options] === 'function') {
+ instance[options].apply(instance, Array.prototype.slice.call(args, 1));
+ }
+ });
+ }
+ };
+
+})(jQuery);
+
+